mirror of
https://code.chipmunk.land/ChomeNS/chipmunkmod.git
synced 2025-11-13 18:46:15 +00:00
fix: deploy core block position getting changed by minecraft (prediction)
This commit is contained in:
parent
e8463ca018
commit
f602648f88
3 changed files with 29 additions and 0 deletions
|
|
@ -0,0 +1,12 @@
|
||||||
|
package land.chipmunk.chipmunkmod.mixin;
|
||||||
|
|
||||||
|
import net.minecraft.client.network.PendingUpdateManager;
|
||||||
|
import net.minecraft.client.world.ClientWorld;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||||
|
|
||||||
|
@Mixin(ClientWorld.class)
|
||||||
|
public interface ClientWorldAccessor {
|
||||||
|
@Accessor(value = "pendingUpdateManager")
|
||||||
|
PendingUpdateManager getPendingUpdateManager ();
|
||||||
|
}
|
||||||
|
|
@ -4,6 +4,7 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap;
|
||||||
import land.chipmunk.chipmunkmod.ChipmunkMod;
|
import land.chipmunk.chipmunkmod.ChipmunkMod;
|
||||||
import land.chipmunk.chipmunkmod.listeners.Listener;
|
import land.chipmunk.chipmunkmod.listeners.Listener;
|
||||||
import land.chipmunk.chipmunkmod.listeners.ListenerManager;
|
import land.chipmunk.chipmunkmod.listeners.ListenerManager;
|
||||||
|
import land.chipmunk.chipmunkmod.mixin.ClientWorldAccessor;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.CommandBlock;
|
import net.minecraft.block.CommandBlock;
|
||||||
|
|
@ -14,6 +15,7 @@ import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.network.ClientPlayNetworkHandler;
|
import net.minecraft.client.network.ClientPlayNetworkHandler;
|
||||||
import net.minecraft.client.network.ClientPlayerEntity;
|
import net.minecraft.client.network.ClientPlayerEntity;
|
||||||
import net.minecraft.client.network.ClientPlayerInteractionManager;
|
import net.minecraft.client.network.ClientPlayerInteractionManager;
|
||||||
|
import net.minecraft.client.network.PendingUpdateManager;
|
||||||
import net.minecraft.client.world.ClientWorld;
|
import net.minecraft.client.world.ClientWorld;
|
||||||
import net.minecraft.component.ComponentMap;
|
import net.minecraft.component.ComponentMap;
|
||||||
import net.minecraft.component.DataComponentTypes;
|
import net.minecraft.component.DataComponentTypes;
|
||||||
|
|
@ -24,6 +26,7 @@ import net.minecraft.item.Items;
|
||||||
import net.minecraft.nbt.NbtCompound;
|
import net.minecraft.nbt.NbtCompound;
|
||||||
import net.minecraft.network.ClientConnection;
|
import net.minecraft.network.ClientConnection;
|
||||||
import net.minecraft.network.packet.c2s.play.CreativeInventoryActionC2SPacket;
|
import net.minecraft.network.packet.c2s.play.CreativeInventoryActionC2SPacket;
|
||||||
|
import net.minecraft.network.packet.c2s.play.PlayerInteractBlockC2SPacket;
|
||||||
import net.minecraft.network.packet.c2s.play.UpdateCommandBlockC2SPacket;
|
import net.minecraft.network.packet.c2s.play.UpdateCommandBlockC2SPacket;
|
||||||
import net.minecraft.network.packet.c2s.play.UpdateSelectedSlotC2SPacket;
|
import net.minecraft.network.packet.c2s.play.UpdateSelectedSlotC2SPacket;
|
||||||
import net.minecraft.registry.Registries;
|
import net.minecraft.registry.Registries;
|
||||||
|
|
@ -453,6 +456,19 @@ public class CommandCore implements Listener {
|
||||||
}
|
}
|
||||||
|
|
||||||
interactionManager.breakBlock(position);
|
interactionManager.breakBlock(position);
|
||||||
|
try (final PendingUpdateManager pendingUpdateManager = ((ClientWorldAccessor) world).getPendingUpdateManager()) {
|
||||||
|
connection.send(
|
||||||
|
new PlayerInteractBlockC2SPacket(
|
||||||
|
Hand.MAIN_HAND,
|
||||||
|
BlockHitResult.createMissed(
|
||||||
|
new Vec3d(position),
|
||||||
|
Direction.UP,
|
||||||
|
position
|
||||||
|
),
|
||||||
|
pendingUpdateManager.incrementSequence().getSequence()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
interactionManager.interactBlock(
|
interactionManager.interactBlock(
|
||||||
player,
|
player,
|
||||||
Hand.MAIN_HAND,
|
Hand.MAIN_HAND,
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
"ClientConnectionMixin",
|
"ClientConnectionMixin",
|
||||||
"ClientPlayerEntityMixin",
|
"ClientPlayerEntityMixin",
|
||||||
"ClientPlayNetworkHandlerMixin",
|
"ClientPlayNetworkHandlerMixin",
|
||||||
|
"ClientWorldAccessor",
|
||||||
"MinecraftClientAccessor",
|
"MinecraftClientAccessor",
|
||||||
"StringHelperMixin",
|
"StringHelperMixin",
|
||||||
"ElderGuardianAppearanceParticleMixin",
|
"ElderGuardianAppearanceParticleMixin",
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue