mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2024-11-27 01:05:38 +00:00
Optimized RollbackEntry for memory
This commit is contained in:
parent
7a6cc55640
commit
b28a0778b4
@ -1,5 +1,5 @@
|
|||||||
#Mon, 26 Aug 2013 17:47:26 +0200
|
#Tue, 27 Aug 2013 11:50:34 +0200
|
||||||
|
|
||||||
program.VERSION=3.1
|
program.VERSION=3.1
|
||||||
program.BUILDNUM=507
|
program.BUILDNUM=513
|
||||||
program.BUILDDATE=08/26/2013 05\:47 PM
|
program.BUILDDATE=08/27/2013 11\:50 AM
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
#Build Number for ANT. Do not edit!
|
#Build Number for ANT. Do not edit!
|
||||||
#Mon Aug 26 17:47:26 CEST 2013
|
#Tue Aug 27 11:50:34 CEST 2013
|
||||||
build.number=508
|
build.number=514
|
||||||
|
@ -102,11 +102,10 @@ public class TFM_PlayerListener implements Listener
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
TFM_Util.playerMsg(player, "Block edits at (" + ChatColor.WHITE + "X" + location.getBlockX() + ", Y" + location.getBlockY() + ", Z" + location.getBlockZ() + ChatColor.BLUE + ")" + ChatColor.WHITE + ":", ChatColor.BLUE);
|
TFM_Util.playerMsg(player, "Block edits at (" + ChatColor.WHITE + "x" + location.getBlockX() + ", y" + location.getBlockY() + ", z" + location.getBlockZ() + ChatColor.BLUE + ")" + ChatColor.WHITE + ":", ChatColor.BLUE);
|
||||||
for (RollbackEntry entry : entries)
|
for (RollbackEntry entry : entries)
|
||||||
{
|
{
|
||||||
String material = (entry.getType() == EntryType.BLOCK_BREAK ? String.valueOf(entry.getFromMaterial()) : entry.getToMaterial() + (entry.getData() != 0 ? ":" + String.valueOf(entry.getData()) : ""));
|
TFM_Util.playerMsg(player, " - " + ChatColor.BLUE + entry.getAuthor() + " " + entry.getType() + " " + StringUtils.capitalize(entry.getMaterial().toString().toLowerCase()) + (entry.getData() == 0 ? "" : ":" + entry.getData()));
|
||||||
TFM_Util.playerMsg(player, " - " + ChatColor.BLUE + entry.getAuthor() + " " + entry.getType() + " " + material);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -5,6 +5,7 @@ import java.util.HashMap;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
@ -140,28 +141,37 @@ public class TFM_RollbackManager
|
|||||||
|
|
||||||
public static class RollbackEntry
|
public static class RollbackEntry
|
||||||
{
|
{
|
||||||
|
// Use of primitives to decrease overhead
|
||||||
private final String author;
|
private final String author;
|
||||||
private final Location location;
|
private final String worldName;
|
||||||
private final int toBlockId; // ints have less overhead than Materials
|
private final int x;
|
||||||
private final int fromBlockId;
|
private final short y;
|
||||||
|
private final int z;
|
||||||
|
private final short blockId;
|
||||||
private final byte data;
|
private final byte data;
|
||||||
|
private final boolean isBreak;
|
||||||
|
|
||||||
private RollbackEntry(String author, Block block, EntryType entryType)
|
private RollbackEntry(String author, Block block, EntryType entryType)
|
||||||
{
|
{
|
||||||
this.location = block.getLocation().clone();
|
final Location location = block.getLocation();
|
||||||
|
|
||||||
|
this.x = location.getBlockX();
|
||||||
|
this.y = (short) location.getBlockY();
|
||||||
|
this.z = location.getBlockZ();
|
||||||
|
this.worldName = location.getWorld().getName();
|
||||||
this.author = author;
|
this.author = author;
|
||||||
|
|
||||||
if (entryType == EntryType.BLOCK_BREAK)
|
if (entryType == EntryType.BLOCK_BREAK)
|
||||||
{
|
{
|
||||||
fromBlockId = block.getTypeId();
|
this.blockId = (short) block.getTypeId();
|
||||||
toBlockId = Material.AIR.getId();
|
this.data = block.getData();
|
||||||
data = block.getData();
|
this.isBreak = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fromBlockId = Material.AIR.getId();
|
blockId = (short) block.getTypeId();
|
||||||
toBlockId = block.getTypeId();
|
|
||||||
data = 0;
|
data = 0;
|
||||||
|
this.isBreak = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,19 +182,37 @@ public class TFM_RollbackManager
|
|||||||
|
|
||||||
public Location getLocation()
|
public Location getLocation()
|
||||||
{
|
{
|
||||||
return location;
|
try
|
||||||
|
{
|
||||||
|
return new Location(Bukkit.getWorld(worldName), (double) x, (double) y, (double) z);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TFM_Log.warning("Could not get location of rollback entry at (" + worldName + ":" + x + "," + y + "," + x + ")!");
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Material getFromMaterial()
|
public Material getMaterial()
|
||||||
{
|
{
|
||||||
return Material.getMaterial(fromBlockId);
|
return Material.getMaterial(blockId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Material getToMaterial()
|
public int getX()
|
||||||
{
|
{
|
||||||
return Material.getMaterial(toBlockId);
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getY()
|
||||||
|
{
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getZ()
|
||||||
|
{
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
|
||||||
public byte getData()
|
public byte getData()
|
||||||
{
|
{
|
||||||
return data;
|
return data;
|
||||||
@ -192,14 +220,21 @@ public class TFM_RollbackManager
|
|||||||
|
|
||||||
public EntryType getType()
|
public EntryType getType()
|
||||||
{
|
{
|
||||||
return (getFromMaterial() == Material.AIR ? EntryType.BLOCK_PLACE : EntryType.BLOCK_BREAK);
|
return (isBreak ? EntryType.BLOCK_BREAK : EntryType.BLOCK_PLACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void restore()
|
public void restore()
|
||||||
{
|
{
|
||||||
Block block = location.getWorld().getBlockAt(location);
|
Block block = Bukkit.getWorld(worldName).getBlockAt(x, y, z);
|
||||||
block.setType(getFromMaterial());
|
if (isBreak)
|
||||||
block.setData(data);
|
{
|
||||||
|
block.setType(getMaterial());
|
||||||
|
block.setData(data);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
block.setType(Material.AIR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user