mirror of
https://code.chipmunk.land/ChomeNS/chipmunkmod.git
synced 2025-11-13 17:36:16 +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.listeners.Listener;
|
||||
import land.chipmunk.chipmunkmod.listeners.ListenerManager;
|
||||
import land.chipmunk.chipmunkmod.mixin.ClientWorldAccessor;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
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.ClientPlayerEntity;
|
||||
import net.minecraft.client.network.ClientPlayerInteractionManager;
|
||||
import net.minecraft.client.network.PendingUpdateManager;
|
||||
import net.minecraft.client.world.ClientWorld;
|
||||
import net.minecraft.component.ComponentMap;
|
||||
import net.minecraft.component.DataComponentTypes;
|
||||
|
|
@ -24,6 +26,7 @@ import net.minecraft.item.Items;
|
|||
import net.minecraft.nbt.NbtCompound;
|
||||
import net.minecraft.network.ClientConnection;
|
||||
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.UpdateSelectedSlotC2SPacket;
|
||||
import net.minecraft.registry.Registries;
|
||||
|
|
@ -453,6 +456,19 @@ public class CommandCore implements Listener {
|
|||
}
|
||||
|
||||
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(
|
||||
player,
|
||||
Hand.MAIN_HAND,
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
"ClientConnectionMixin",
|
||||
"ClientPlayerEntityMixin",
|
||||
"ClientPlayNetworkHandlerMixin",
|
||||
"ClientWorldAccessor",
|
||||
"MinecraftClientAccessor",
|
||||
"StringHelperMixin",
|
||||
"ElderGuardianAppearanceParticleMixin",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue