fix: 原版无法进入游戏
This commit is contained in:
1 parent
ba13ab4f71
commit
ff8ea45f1d
10 files changed
+22
-182
No files matched your search
@@ -2,7 +2,6 @@ package com.github.zly2006.carpetslsaddition;
|
|||||||
|
|
||||||
import carpet.CarpetExtension;
|
import carpet.CarpetExtension;
|
||||||
import carpet.CarpetServer;
|
import carpet.CarpetServer;
|
||||||
import com.github.zly2006.carpetslsaddition.block.entity.SLSDeepSlateBlockEntity;
|
|
||||||
import com.github.zly2006.carpetslsaddition.command.BotCommand;
|
import com.github.zly2006.carpetslsaddition.command.BotCommand;
|
||||||
import com.github.zly2006.carpetslsaddition.command.HatCommand;
|
import com.github.zly2006.carpetslsaddition.command.HatCommand;
|
||||||
import com.github.zly2006.carpetslsaddition.command.SitCommand;
|
import com.github.zly2006.carpetslsaddition.command.SitCommand;
|
||||||
@@ -15,8 +14,6 @@ import com.mojang.brigadier.CommandDispatcher;
|
|||||||
import net.fabricmc.api.ModInitializer;
|
import net.fabricmc.api.ModInitializer;
|
||||||
import net.fabricmc.loader.api.FabricLoader;
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
import net.fabricmc.loader.api.Version;
|
import net.fabricmc.loader.api.Version;
|
||||||
import net.minecraft.block.Blocks;
|
|
||||||
import net.minecraft.block.entity.BlockEntityType;
|
|
||||||
import net.minecraft.command.CommandRegistryAccess;
|
import net.minecraft.command.CommandRegistryAccess;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.server.command.ServerCommandSource;
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
@@ -45,7 +42,6 @@ public class ServerMain implements ModInitializer, CarpetExtension {
|
|||||||
public void onInitialize() {
|
public void onInitialize() {
|
||||||
INSTANCE = this;
|
INSTANCE = this;
|
||||||
CarpetServer.manageExtension(this);
|
CarpetServer.manageExtension(this);
|
||||||
registerBlockEntities();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -90,8 +86,4 @@ public class ServerMain implements ModInitializer, CarpetExtension {
|
|||||||
SitCommand.register(dispatcher);
|
SitCommand.register(dispatcher);
|
||||||
BotCommand.register(dispatcher);
|
BotCommand.register(dispatcher);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void registerBlockEntities() {
|
|
||||||
SLSDeepSlateBlockEntity.BLOCK_ENTITY_TYPE = SLSDeepSlateBlockEntity.createType(BlockEntityType.Builder.create(SLSDeepSlateBlockEntity::new, Blocks.DEEPSLATE));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
-2
@@ -1,8 +1,6 @@
|
|||||||
package com.github.zly2006.carpetslsaddition.block;
|
package com.github.zly2006.carpetslsaddition.block;
|
||||||
|
|
||||||
import com.github.zly2006.carpetslsaddition.SLSCarpetSettings;
|
import com.github.zly2006.carpetslsaddition.SLSCarpetSettings;
|
||||||
import com.mojang.logging.LogUtils;
|
|
||||||
import io.netty.util.internal.logging.Slf4JLoggerFactory;
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|||||||
-56
@@ -1,56 +0,0 @@
|
|||||||
package com.github.zly2006.carpetslsaddition.block.entity;
|
|
||||||
|
|
||||||
import com.mojang.datafixers.types.Type;
|
|
||||||
import net.minecraft.block.BlockState;
|
|
||||||
import net.minecraft.block.entity.BlockEntity;
|
|
||||||
import net.minecraft.block.entity.BlockEntityType;
|
|
||||||
import net.minecraft.datafixer.TypeReferences;
|
|
||||||
import net.minecraft.nbt.NbtCompound;
|
|
||||||
import net.minecraft.registry.Registries;
|
|
||||||
import net.minecraft.registry.Registry;
|
|
||||||
import net.minecraft.registry.RegistryWrapper;
|
|
||||||
import net.minecraft.util.Util;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
|
||||||
|
|
||||||
import static net.minecraft.nbt.NbtElement.BYTE_TYPE;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 没有很好的让深板岩保留BlockEntity的方案,暂时不使用
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class SLSDeepSlateBlockEntity extends BlockEntity {
|
|
||||||
public static BlockEntityType<SLSDeepSlateBlockEntity> BLOCK_ENTITY_TYPE;
|
|
||||||
|
|
||||||
private boolean deepSlateCore = false;
|
|
||||||
|
|
||||||
public SLSDeepSlateBlockEntity(BlockPos pos, BlockState state) {
|
|
||||||
super(SLSDeepSlateBlockEntity.BLOCK_ENTITY_TYPE, pos, state);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void readNbt(NbtCompound nbt, RegistryWrapper.WrapperLookup registryLookup) {
|
|
||||||
super.readNbt(nbt, registryLookup);
|
|
||||||
if (nbt.contains("deep_slate_core", BYTE_TYPE)) {
|
|
||||||
deepSlateCore = nbt.getBoolean("deep_slate_core");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void writeNbt(NbtCompound nbt, RegistryWrapper.WrapperLookup registryLookup) {
|
|
||||||
super.writeNbt(nbt, registryLookup);
|
|
||||||
nbt.putBoolean("deep_slate_core", deepSlateCore);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isDeepSlateCore() {
|
|
||||||
return deepSlateCore;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDeepSlateCore(boolean deepSlateCore) {
|
|
||||||
this.deepSlateCore = deepSlateCore;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static BlockEntityType<SLSDeepSlateBlockEntity> createType(BlockEntityType.Builder<SLSDeepSlateBlockEntity> builder) {
|
|
||||||
Type<?> type = Util.getChoiceType(TypeReferences.BLOCK_ENTITY, "sls_deepslate");
|
|
||||||
return Registry.register(Registries.BLOCK_ENTITY_TYPE, "sls_deepslate", builder.build(type));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+4
-1
@@ -1,7 +1,10 @@
|
|||||||
package com.github.zly2006.carpetslsaddition.mixin.elytra;
|
package com.github.zly2006.carpetslsaddition.mixin.elytra;
|
||||||
|
|
||||||
import com.github.zly2006.carpetslsaddition.SLSCarpetSettings;
|
import com.github.zly2006.carpetslsaddition.SLSCarpetSettings;
|
||||||
import net.minecraft.item.*;
|
import net.minecraft.item.ElytraItem;
|
||||||
|
import net.minecraft.item.Equipment;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
|
||||||
@Mixin(ElytraItem.class)
|
@Mixin(ElytraItem.class)
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
package com.github.zly2006.carpetslsaddition.mixin.elytra;
|
package com.github.zly2006.carpetslsaddition.mixin.elytra;
|
||||||
|
|
||||||
import com.github.zly2006.carpetslsaddition.SLSCarpetSettings;
|
import com.github.zly2006.carpetslsaddition.SLSCarpetSettings;
|
||||||
import net.minecraft.item.*;
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.Items;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
|||||||
+1
-1
@@ -14,9 +14,9 @@ import net.minecraft.server.world.ServerWorld;
|
|||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraft.world.Heightmap;
|
import net.minecraft.world.Heightmap;
|
||||||
|
import net.minecraft.world.WorldView;
|
||||||
import net.minecraft.world.chunk.WorldChunk;
|
import net.minecraft.world.chunk.WorldChunk;
|
||||||
import net.minecraft.world.gen.feature.EndPortalFeature;
|
import net.minecraft.world.gen.feature.EndPortalFeature;
|
||||||
import net.minecraft.world.WorldView;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.spongepowered.asm.mixin.*;
|
import org.spongepowered.asm.mixin.*;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
|||||||
+15
-63
@@ -1,50 +1,36 @@
|
|||||||
package com.github.zly2006.carpetslsaddition.mixin.entity;
|
package com.github.zly2006.carpetslsaddition.mixin.entity;
|
||||||
|
|
||||||
import carpet.utils.Translations;
|
|
||||||
import com.github.zly2006.carpetslsaddition.SLSCarpetSettings;
|
import com.github.zly2006.carpetslsaddition.SLSCarpetSettings;
|
||||||
import com.github.zly2006.carpetslsaddition.block.entity.SLSDeepSlateBlockEntity;
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.entity.BlockEntity;
|
|
||||||
import net.minecraft.block.entity.BlockEntityType;
|
|
||||||
import net.minecraft.component.DataComponentTypes;
|
|
||||||
import net.minecraft.component.type.ItemEnchantmentsComponent;
|
|
||||||
import net.minecraft.component.type.NbtComponent;
|
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityType;
|
import net.minecraft.entity.EntityType;
|
||||||
import net.minecraft.entity.FallingBlockEntity;
|
import net.minecraft.entity.FallingBlockEntity;
|
||||||
import net.minecraft.entity.ItemEntity;
|
import net.minecraft.entity.ItemEntity;
|
||||||
import net.minecraft.entity.damage.DamageSource;
|
import net.minecraft.entity.damage.DamageSource;
|
||||||
import net.minecraft.item.BlockItem;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.item.Items;
|
import net.minecraft.item.Items;
|
||||||
import net.minecraft.nbt.NbtCompound;
|
|
||||||
import net.minecraft.registry.tag.BlockTags;
|
import net.minecraft.registry.tag.BlockTags;
|
||||||
import net.minecraft.sound.SoundCategory;
|
import net.minecraft.sound.SoundCategory;
|
||||||
import net.minecraft.sound.SoundEvents;
|
import net.minecraft.sound.SoundEvents;
|
||||||
import net.minecraft.text.Style;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.text.Text;
|
|
||||||
import net.minecraft.util.Formatting;
|
|
||||||
import net.minecraft.util.math.MathHelper;
|
import net.minecraft.util.math.MathHelper;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.Unique;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
import static net.minecraft.nbt.NbtElement.COMPOUND_TYPE;
|
|
||||||
|
|
||||||
@Mixin(FallingBlockEntity.class)
|
@Mixin(FallingBlockEntity.class)
|
||||||
public abstract class MixinFallingBlockEntity extends Entity {
|
public abstract class MixinFallingBlockEntity extends Entity {
|
||||||
|
|
||||||
@Shadow private BlockState block;
|
@Shadow private BlockState block;
|
||||||
@Shadow private boolean destroyedOnLanding;
|
@Shadow private boolean destroyedOnLanding;
|
||||||
|
|
||||||
|
@Shadow public abstract BlockPos getFallingBlockPos();
|
||||||
|
|
||||||
public MixinFallingBlockEntity(EntityType<?> type, World world) {
|
public MixinFallingBlockEntity(EntityType<?> type, World world) {
|
||||||
super(type, world);
|
super(type, world);
|
||||||
}
|
}
|
||||||
@@ -64,62 +50,28 @@ public abstract class MixinFallingBlockEntity extends Entity {
|
|||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.getWorld().getOtherEntities(this, this.getBoundingBox(), deepSlatePredicated).forEach((entity) -> {
|
var world = this.getWorld();
|
||||||
var deepSlateEntity = (ItemEntity) entity; // deepSlatePredicated保证转换的安性
|
var itemEntitiesList = world.getOtherEntities(this, this.getBoundingBox(), deepSlatePredicated);
|
||||||
var stackNbtComponent = deepSlateEntity.getStack().getOrDefault(DataComponentTypes.BLOCK_ENTITY_DATA, NbtComponent.DEFAULT);
|
if (itemEntitiesList.size() < 9) {
|
||||||
if (!tryCreateDeepSlateCore(deepSlateEntity, stackNbtComponent)) {
|
|
||||||
((ItemEntity) entity).setStack(new ItemStack(Items.REINFORCED_DEEPSLATE, 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
markSuccessfulForged();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 尝试创造一个深板岩核心
|
|
||||||
* @param itemEntity 深板岩物品实体,不应传入非深板岩的物品
|
|
||||||
* @param itemComponent 深板岩物品的Block Entity数据
|
|
||||||
* @return 是否创建成功
|
|
||||||
*/
|
|
||||||
@Unique
|
|
||||||
private boolean tryCreateDeepSlateCore(ItemEntity itemEntity, NbtComponent itemComponent) {
|
|
||||||
AtomicBoolean success = new AtomicBoolean(true);
|
|
||||||
var itemStack = itemEntity.getStack().copy();
|
|
||||||
|
|
||||||
itemComponent.apply( blockEntityData -> {
|
|
||||||
if (blockEntityData.getBoolean("deep_slate_core")) {
|
|
||||||
success.set(false);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
blockEntityData.putBoolean("deep_slate_core", true);
|
var entity = itemEntitiesList.getFirst();
|
||||||
BlockItem.setBlockEntityData(itemStack, SLSDeepSlateBlockEntity.BLOCK_ENTITY_TYPE, blockEntityData);
|
|
||||||
|
|
||||||
itemStack.set(
|
for (int i = 0; i < 9; i++) {
|
||||||
DataComponentTypes.CUSTOM_NAME,
|
itemEntitiesList.get(i).discard();
|
||||||
Text.literal(Translations.tr("carpet.slsa.block.deep_slate_core"))
|
}
|
||||||
.setStyle(Style.EMPTY.withColor(Formatting.LIGHT_PURPLE))
|
|
||||||
);
|
|
||||||
|
|
||||||
itemStack.setCount(1);
|
this.destroyedOnLanding = true;
|
||||||
|
|
||||||
var pos = itemEntity.getPos();
|
|
||||||
itemEntity.discard();
|
|
||||||
|
|
||||||
var coreEntity = new ItemEntity(this.getWorld(), pos.getX(), pos.getY(), pos.getZ(), itemStack);
|
world.playSoundAtBlockCenter(this.getBlockPos(), SoundEvents.BLOCK_ANVIL_USE, SoundCategory.BLOCKS, 1.0F, 1.0F, false);
|
||||||
|
|
||||||
|
var coreEntity = new ItemEntity(world, entity.getX(), entity.getY(), entity.getZ(), new ItemStack(Items.REINFORCED_DEEPSLATE, 1));
|
||||||
coreEntity.setPickupDelay(40);
|
coreEntity.setPickupDelay(40);
|
||||||
float f = this.random.nextFloat() * 0.5F;
|
float f = this.random.nextFloat() * 0.5F;
|
||||||
float g = this.random.nextFloat() * (float) (Math.PI * 2);
|
float g = this.random.nextFloat() * (float) (Math.PI * 2);
|
||||||
coreEntity.setVelocity(-MathHelper.sin(g) * f, 0.2F, MathHelper.cos(g) * f);
|
coreEntity.setVelocity(-MathHelper.sin(g) * f, 0.2F, MathHelper.cos(g) * f);
|
||||||
this.getWorld().spawnEntity(coreEntity);
|
world.spawnEntity(coreEntity);
|
||||||
});
|
|
||||||
|
|
||||||
return success.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Unique
|
|
||||||
private void markSuccessfulForged() {
|
|
||||||
this.getWorld().playSoundAtBlockCenter(this.getBlockPos(), SoundEvents.BLOCK_ANVIL_USE, SoundCategory.BLOCKS, 1.0F, 1.0F, false);
|
|
||||||
this.destroyedOnLanding = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
-8
@@ -3,11 +3,8 @@ package com.github.zly2006.carpetslsaddition.mixin.entity;
|
|||||||
import com.github.zly2006.carpetslsaddition.SLSCarpetSettings;
|
import com.github.zly2006.carpetslsaddition.SLSCarpetSettings;
|
||||||
import com.github.zly2006.carpetslsaddition.util.SitEntity;
|
import com.github.zly2006.carpetslsaddition.util.SitEntity;
|
||||||
import com.mojang.authlib.GameProfile;
|
import com.mojang.authlib.GameProfile;
|
||||||
import net.minecraft.entity.Entity;
|
|
||||||
import net.minecraft.entity.Leashable;
|
|
||||||
import net.minecraft.entity.decoration.ArmorStandEntity;
|
import net.minecraft.entity.decoration.ArmorStandEntity;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.item.LeadItem;
|
|
||||||
import net.minecraft.network.packet.s2c.play.EntityTrackerUpdateS2CPacket;
|
import net.minecraft.network.packet.s2c.play.EntityTrackerUpdateS2CPacket;
|
||||||
import net.minecraft.server.network.ServerPlayNetworkHandler;
|
import net.minecraft.server.network.ServerPlayNetworkHandler;
|
||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
@@ -16,11 +13,6 @@ import net.minecraft.world.World;
|
|||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.Unique;
|
import org.spongepowered.asm.mixin.Unique;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Mixin(ServerPlayerEntity.class)
|
@Mixin(ServerPlayerEntity.class)
|
||||||
public abstract class MixinServerPlayerEntity extends PlayerEntity {
|
public abstract class MixinServerPlayerEntity extends PlayerEntity {
|
||||||
|
|||||||
-1
@@ -1,7 +1,6 @@
|
|||||||
package com.github.zly2006.carpetslsaddition.mixin.player;
|
package com.github.zly2006.carpetslsaddition.mixin.player;
|
||||||
|
|
||||||
import com.github.zly2006.carpetslsaddition.SLSCarpetSettings;
|
import com.github.zly2006.carpetslsaddition.SLSCarpetSettings;
|
||||||
import net.minecraft.entity.player.PlayerAbilities;
|
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.entity.player.PlayerInventory;
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
import net.minecraft.inventory.Inventory;
|
import net.minecraft.inventory.Inventory;
|
||||||
|
|||||||
@@ -1,46 +1,5 @@
|
|||||||
package com.github.zly2006.carpetslsaddition.network.pca;
|
package com.github.zly2006.carpetslsaddition.network.pca;
|
||||||
|
|
||||||
import carpet.CarpetServer;
|
|
||||||
import carpet.api.settings.CarpetRule;
|
|
||||||
import carpet.api.settings.RuleHelper;
|
|
||||||
import carpet.patches.EntityPlayerMPFake;
|
|
||||||
import com.github.zly2006.carpetslsaddition.SLSCarpetSettings;
|
|
||||||
import com.github.zly2006.carpetslsaddition.ServerMain;
|
|
||||||
import io.netty.buffer.Unpooled;
|
|
||||||
import net.fabricmc.fabric.api.networking.v1.PacketSender;
|
|
||||||
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
|
|
||||||
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
|
|
||||||
import net.minecraft.block.BarrelBlock;
|
|
||||||
import net.minecraft.block.BlockState;
|
|
||||||
import net.minecraft.block.Blocks;
|
|
||||||
import net.minecraft.block.ChestBlock;
|
|
||||||
import net.minecraft.block.entity.BlockEntity;
|
|
||||||
import net.minecraft.block.enums.ChestType;
|
|
||||||
import net.minecraft.entity.Entity;
|
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
|
||||||
import net.minecraft.nbt.NbtCompound;
|
|
||||||
import net.minecraft.network.PacketByteBuf;
|
|
||||||
import net.minecraft.server.MinecraftServer;
|
|
||||||
import net.minecraft.server.network.ServerPlayNetworkHandler;
|
|
||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
|
||||||
import net.minecraft.server.world.ServerWorld;
|
|
||||||
import net.minecraft.util.Identifier;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
|
||||||
import net.minecraft.util.math.Direction;
|
|
||||||
import net.minecraft.world.World;
|
|
||||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
|
||||||
import org.apache.commons.lang3.tuple.MutablePair;
|
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
|
||||||
import org.jetbrains.annotations.Contract;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
|
||||||
|
|
||||||
public class PcaSyncProtocol {
|
public class PcaSyncProtocol {
|
||||||
//
|
//
|
||||||
// public static final ReentrantLock lock = new ReentrantLock(true);
|
// public static final ReentrantLock lock = new ReentrantLock(true);
|
||||||
|
|||||||
Reference in new issue
Block a user