Fixed: Исправлено дублирование TileEntity в сохранениях
- Исправлены точный координаты нажатия в ItemUse
This commit is contained in:
@@ -85,9 +85,13 @@ public class EventListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Vector3 pos = event.getTouchVector();
|
|
||||||
final Block block = event.getBlock();
|
final Block block = event.getBlock();
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
|
final Vector3 pos = player.getDirectionVector();
|
||||||
|
|
||||||
|
pos.x = Math.abs(pos.x) + block.x;
|
||||||
|
pos.y = Math.abs(pos.y) + block.y;
|
||||||
|
pos.z = Math.abs(pos.z) + block.z;
|
||||||
|
|
||||||
if (event.getAction() == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) {
|
if (event.getAction() == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) {
|
||||||
consumeEvent(event,
|
consumeEvent(event,
|
||||||
|
|||||||
@@ -683,6 +683,7 @@ var TileEntityBasePrototype = {
|
|||||||
_runInit: function() {
|
_runInit: function() {
|
||||||
Saver.registerObject(this, this.saverId);
|
Saver.registerObject(this, this.saverId);
|
||||||
this.blockSource = BlockSource.getDefaultForDimension(this.dimension);
|
this.blockSource = BlockSource.getDefaultForDimension(this.dimension);
|
||||||
|
|
||||||
if (!this.blockSource) {
|
if (!this.blockSource) {
|
||||||
this.isLoaded = false;
|
this.isLoaded = false;
|
||||||
return false;
|
return false;
|
||||||
@@ -827,6 +828,11 @@ var TileEntity = {
|
|||||||
|
|
||||||
Prototype.saverId = Saver.registerObjectSaver(saverName, {
|
Prototype.saverId = Saver.registerObjectSaver(saverName, {
|
||||||
read: function(obj) {
|
read: function(obj) {
|
||||||
|
if(TileEntity.getTileEntity(obj.coords.x, obj.coords.y, obj.coords.z, BlockSource.getDefaultForDimension(obj.coords.d))){
|
||||||
|
print("Duplicate TileEntity detected: "+obj.coords.x+":"+obj.coords.y+":"+obj.coords.z);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!obj || !obj.coords) {
|
if (!obj || !obj.coords) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1631,7 +1637,7 @@ var BlockRegistry = {
|
|||||||
GameAPI.prevent();
|
GameAPI.prevent();
|
||||||
region.setBlock(coords.relative.x, coords.relative.y, coords.relative.z, idFlowing, 0);
|
region.setBlock(coords.relative.x, coords.relative.y, coords.relative.z, idFlowing, 0);
|
||||||
dispenser.setSlot(slot, emptyId, 1, 0, null);
|
dispenser.setSlot(slot, emptyId, 1, 0, null);
|
||||||
region.playSound(coords.relative.x + .5, coords.relative.y + .5, coords.relative.z + .5, bucketData.emptySound || "bucket.empty_water", 1, 1);
|
WorldAPI.playSound(coords.relative.x + .5, coords.relative.y + .5, coords.relative.z + .5, bucketData.emptySound || "bucket.empty_water", 1, 1);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1646,7 +1652,7 @@ var BlockRegistry = {
|
|||||||
if (liquid && block.data === 0) {
|
if (liquid && block.data === 0) {
|
||||||
GameAPI.prevent();
|
GameAPI.prevent();
|
||||||
region.setBlock(coords.relative.x, coords.relative.y, coords.relative.z, 0, 0);
|
region.setBlock(coords.relative.x, coords.relative.y, coords.relative.z, 0, 0);
|
||||||
region.playSound(coords.relative.x + .5, coords.relative.y + .5, coords.relative.z + .5, bucketData.emptySound || "bucket.empty_water", 1);
|
WorldAPI.playSound(coords.relative.x + .5, coords.relative.y + .5, coords.relative.z + .5, bucketData.emptySound || "bucket.empty_water", 1);
|
||||||
|
|
||||||
dispenser.setSlot(slot, item.id, item.count - 1, item.data, item.extra);
|
dispenser.setSlot(slot, item.id, item.count - 1, item.data, item.extra);
|
||||||
for (var i = 0; i < 9; i++) {
|
for (var i = 0; i < 9; i++) {
|
||||||
@@ -2568,7 +2574,7 @@ var ItemRegistry = {
|
|||||||
if (!noModCallback) {
|
if (!noModCallback) {
|
||||||
var blockSource = BlockSource.getDefaultForActor(entity);
|
var blockSource = BlockSource.getDefaultForActor(entity);
|
||||||
var block = blockSource ? blockSource.getBlock(coords.x, coords.y, coords.z)
|
var block = blockSource ? blockSource.getBlock(coords.x, coords.y, coords.z)
|
||||||
: WorldAPI.getBlock(coords.x, coords.y, coords.z);
|
: WorldAPI.getBlock(coords.x, coords.y, coords.z);
|
||||||
Callback.invokeCallback("ItemUse", coords, item, block, false, entity);
|
Callback.invokeCallback("ItemUse", coords, item, block, false, entity);
|
||||||
}
|
}
|
||||||
if (noModCallback || !MCSystem.isDefaultPrevented()) {
|
if (noModCallback || !MCSystem.isDefaultPrevented()) {
|
||||||
@@ -6033,8 +6039,8 @@ var EntityAPI = {
|
|||||||
setTarget: function(ent, target) {
|
setTarget: function(ent, target) {
|
||||||
return Entity.setTarget(ent, target);
|
return Entity.setTarget(ent, target);
|
||||||
},
|
},
|
||||||
getMobile: function(ent) {
|
getMobile: function(ent, mobile) {
|
||||||
return !Entity.isImmobile(ent);
|
Entity.isImmobile(ent);
|
||||||
},
|
},
|
||||||
setMobile: function(ent, mobile) {
|
setMobile: function(ent, mobile) {
|
||||||
Entity.setImmobile(ent, !mobile);
|
Entity.setImmobile(ent, !mobile);
|
||||||
@@ -6437,7 +6443,7 @@ Callback.addCallback("ItemUse", function(coords, item, block, isExternal, player
|
|||||||
Entity.setCarriedItem(player, 0, 0, 0);
|
Entity.setCarriedItem(player, 0, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
blockSource.playSound(coords.x, coords.y, coords.z, "dig.stone", 1, 0.8);
|
WorldAPI.playSound(coords.x, coords.y, coords.z, "dig.stone", 1, 0.8);
|
||||||
preventDefault();
|
preventDefault();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -6451,7 +6457,7 @@ Callback.addCallback("ItemUse", function(coords, item, block, isExternal, player
|
|||||||
Entity.setCarriedItem(player, 0, 0, 0);
|
Entity.setCarriedItem(player, 0, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
blockSource.playSound(coords.x, coords.y, coords.z, "dig.stone", 1, 0.8);
|
WorldAPI.playSound(coords.x, coords.y, coords.z, "dig.stone", 1, 0.8);
|
||||||
preventDefault();
|
preventDefault();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user