Fixed QuickReplace in normal mode not placing any blocks.
This commit is contained in:
@@ -55,7 +55,7 @@ public class BuildConfig {
|
|||||||
|
|
||||||
@Comment({"Determines what blocks can be replaced in survival.",
|
@Comment({"Determines what blocks can be replaced in survival.",
|
||||||
"-1: only blocks that can be harvested by hand (default)",
|
"-1: only blocks that can be harvested by hand (default)",
|
||||||
"0: blocks that can be harvested with wooden oref gold tools",
|
"0: blocks that can be harvested with wooden or gold tools",
|
||||||
"1: blocks that can be harvested with stone tools",
|
"1: blocks that can be harvested with stone tools",
|
||||||
"2: blocks that can be harvested with iron tools",
|
"2: blocks that can be harvested with iron tools",
|
||||||
"3: blocks that can be harvested with diamond tools",
|
"3: blocks that can be harvested with diamond tools",
|
||||||
|
|||||||
@@ -91,14 +91,18 @@ public class EventHandler
|
|||||||
BuildModes.BuildModeEnum buildMode = ModeSettingsManager.getModeSettings(player).getBuildMode();
|
BuildModes.BuildModeEnum buildMode = ModeSettingsManager.getModeSettings(player).getBuildMode();
|
||||||
ModifierSettingsManager.ModifierSettings modifierSettings = ModifierSettingsManager.getModifierSettings(player);
|
ModifierSettingsManager.ModifierSettings modifierSettings = ModifierSettingsManager.getModifierSettings(player);
|
||||||
|
|
||||||
if (buildMode != BuildModes.BuildModeEnum.NORMAL || modifierSettings.doQuickReplace()) {
|
if (buildMode != BuildModes.BuildModeEnum.NORMAL) {
|
||||||
event.setCanceled(true);
|
event.setCanceled(true);
|
||||||
|
} else if (modifierSettings.doQuickReplace()) {
|
||||||
|
//Cancel event and send message if QuickReplace
|
||||||
|
event.setCanceled(true);
|
||||||
|
EffortlessBuilding.packetHandler.sendTo(new RequestLookAtMessage(event.getPos(), event.getBlockSnapshot().getReplacedBlock(), event.getState(), true), (EntityPlayerMP) player);
|
||||||
} else {
|
} else {
|
||||||
//NORMAL mode, let vanilla handle block placing
|
//NORMAL mode, let vanilla handle block placing
|
||||||
//But modifiers and QuickReplace should still work
|
//But modifiers should still work
|
||||||
|
|
||||||
//Send message to client, which sends message back with raytrace info
|
//Send message to client, which sends message back with raytrace info
|
||||||
EffortlessBuilding.packetHandler.sendTo(new RequestLookAtMessage(event.getPos(), event.getBlockSnapshot().getReplacedBlock(), event.getState()), (EntityPlayerMP) player);
|
EffortlessBuilding.packetHandler.sendTo(new RequestLookAtMessage(event.getPos(), event.getBlockSnapshot().getReplacedBlock(), event.getState(), false), (EntityPlayerMP) player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,17 +25,20 @@ public class RequestLookAtMessage implements IMessage {
|
|||||||
private BlockPos coordinate;
|
private BlockPos coordinate;
|
||||||
private IBlockState previousBlockState;
|
private IBlockState previousBlockState;
|
||||||
private IBlockState newBlockState;
|
private IBlockState newBlockState;
|
||||||
|
private boolean placeStartPos;
|
||||||
|
|
||||||
public RequestLookAtMessage() {
|
public RequestLookAtMessage() {
|
||||||
coordinate = BlockPos.ORIGIN;
|
coordinate = BlockPos.ORIGIN;
|
||||||
previousBlockState = null;
|
previousBlockState = null;
|
||||||
newBlockState = null;
|
newBlockState = null;
|
||||||
|
placeStartPos = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public RequestLookAtMessage(BlockPos coordinate, IBlockState previousBlockState, IBlockState newBlockState) {
|
public RequestLookAtMessage(BlockPos coordinate, IBlockState previousBlockState, IBlockState newBlockState, boolean placeStartPos) {
|
||||||
this.coordinate = coordinate;
|
this.coordinate = coordinate;
|
||||||
this.previousBlockState = previousBlockState;
|
this.previousBlockState = previousBlockState;
|
||||||
this.newBlockState = newBlockState;
|
this.newBlockState = newBlockState;
|
||||||
|
this.placeStartPos = placeStartPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BlockPos getCoordinate() {
|
public BlockPos getCoordinate() {
|
||||||
@@ -50,6 +53,10 @@ public class RequestLookAtMessage implements IMessage {
|
|||||||
return newBlockState;
|
return newBlockState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean getPlaceStartPos() {
|
||||||
|
return placeStartPos;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toBytes(ByteBuf buf) {
|
public void toBytes(ByteBuf buf) {
|
||||||
buf.writeInt(this.coordinate.getX());
|
buf.writeInt(this.coordinate.getX());
|
||||||
@@ -57,6 +64,7 @@ public class RequestLookAtMessage implements IMessage {
|
|||||||
buf.writeInt(this.coordinate.getZ());
|
buf.writeInt(this.coordinate.getZ());
|
||||||
buf.writeInt(Block.getStateId(this.previousBlockState));
|
buf.writeInt(Block.getStateId(this.previousBlockState));
|
||||||
buf.writeInt(Block.getStateId(this.newBlockState));
|
buf.writeInt(Block.getStateId(this.newBlockState));
|
||||||
|
buf.writeBoolean(this.placeStartPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -64,6 +72,7 @@ public class RequestLookAtMessage implements IMessage {
|
|||||||
coordinate = new BlockPos(buf.readInt(), buf.readInt(), buf.readInt());
|
coordinate = new BlockPos(buf.readInt(), buf.readInt(), buf.readInt());
|
||||||
previousBlockState = Block.getStateById(buf.readInt());
|
previousBlockState = Block.getStateById(buf.readInt());
|
||||||
newBlockState = Block.getStateById(buf.readInt());
|
newBlockState = Block.getStateById(buf.readInt());
|
||||||
|
placeStartPos = buf.readBoolean();
|
||||||
}
|
}
|
||||||
|
|
||||||
// The params of the IMessageHandler are <REQ, REPLY>
|
// The params of the IMessageHandler are <REQ, REPLY>
|
||||||
@@ -90,8 +99,9 @@ public class RequestLookAtMessage implements IMessage {
|
|||||||
message.getCoordinate(), message.getCoordinate()));
|
message.getCoordinate(), message.getCoordinate()));
|
||||||
});
|
});
|
||||||
|
|
||||||
//Prevent double placing in normal mode with placeStartPos false
|
//Prevent double placing in normal mode with placeStartPos false.
|
||||||
return new BlockPlacedMessage(ClientProxy.previousLookAt, false);
|
//Unless QuickReplace is on, then we do need to place start pos.
|
||||||
|
return new BlockPlacedMessage(ClientProxy.previousLookAt, message.getPlaceStartPos());
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user