diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/ServerMain.java b/src/main/java/com/github/zly2006/carpetslsaddition/ServerMain.java index 16e4b1d..c8db903 100644 --- a/src/main/java/com/github/zly2006/carpetslsaddition/ServerMain.java +++ b/src/main/java/com/github/zly2006/carpetslsaddition/ServerMain.java @@ -2,7 +2,6 @@ package com.github.zly2006.carpetslsaddition; import carpet.CarpetExtension; import carpet.CarpetServer; -import com.github.zly2006.carpetslsaddition.block.entity.SLSDeepSlateBlockEntity; import com.github.zly2006.carpetslsaddition.command.BotCommand; import com.github.zly2006.carpetslsaddition.command.HatCommand; import com.github.zly2006.carpetslsaddition.command.SitCommand; @@ -15,8 +14,6 @@ import com.mojang.brigadier.CommandDispatcher; import net.fabricmc.api.ModInitializer; import net.fabricmc.loader.api.FabricLoader; 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.server.MinecraftServer; import net.minecraft.server.command.ServerCommandSource; @@ -45,7 +42,6 @@ public class ServerMain implements ModInitializer, CarpetExtension { public void onInitialize() { INSTANCE = this; CarpetServer.manageExtension(this); - registerBlockEntities(); } @Override @@ -90,8 +86,4 @@ public class ServerMain implements ModInitializer, CarpetExtension { SitCommand.register(dispatcher); BotCommand.register(dispatcher); } - - public void registerBlockEntities() { - SLSDeepSlateBlockEntity.BLOCK_ENTITY_TYPE = SLSDeepSlateBlockEntity.createType(BlockEntityType.Builder.create(SLSDeepSlateBlockEntity::new, Blocks.DEEPSLATE)); - } } diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/block/RewriteChainRestrictedNeighborUpdater.java b/src/main/java/com/github/zly2006/carpetslsaddition/block/RewriteChainRestrictedNeighborUpdater.java index 6faa923..0ff0d08 100644 --- a/src/main/java/com/github/zly2006/carpetslsaddition/block/RewriteChainRestrictedNeighborUpdater.java +++ b/src/main/java/com/github/zly2006/carpetslsaddition/block/RewriteChainRestrictedNeighborUpdater.java @@ -1,8 +1,6 @@ package com.github.zly2006.carpetslsaddition.block; 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.BlockState; import net.minecraft.util.math.BlockPos; diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/block/entity/SLSDeepSlateBlockEntity.java b/src/main/java/com/github/zly2006/carpetslsaddition/block/entity/SLSDeepSlateBlockEntity.java deleted file mode 100644 index d7dff8d..0000000 --- a/src/main/java/com/github/zly2006/carpetslsaddition/block/entity/SLSDeepSlateBlockEntity.java +++ /dev/null @@ -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 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 createType(BlockEntityType.Builder builder) { - Type type = Util.getChoiceType(TypeReferences.BLOCK_ENTITY, "sls_deepslate"); - return Registry.register(Registries.BLOCK_ENTITY_TYPE, "sls_deepslate", builder.build(type)); - } -} diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/elytra/MixinElytraItem.java b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/elytra/MixinElytraItem.java index c01a0b2..a12b134 100644 --- a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/elytra/MixinElytraItem.java +++ b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/elytra/MixinElytraItem.java @@ -1,7 +1,10 @@ package com.github.zly2006.carpetslsaddition.mixin.elytra; 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; @Mixin(ElytraItem.class) diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/elytra/MixinItem.java b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/elytra/MixinItem.java index d10f0ee..29b9d9f 100644 --- a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/elytra/MixinItem.java +++ b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/elytra/MixinItem.java @@ -1,7 +1,8 @@ package com.github.zly2006.carpetslsaddition.mixin.elytra; 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.injection.At; import org.spongepowered.asm.mixin.injection.Inject; diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/entity/MixinEnderDragonFight.java b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/entity/MixinEnderDragonFight.java index 9da4dc7..f2a0023 100644 --- a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/entity/MixinEnderDragonFight.java +++ b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/entity/MixinEnderDragonFight.java @@ -14,9 +14,9 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.Heightmap; +import net.minecraft.world.WorldView; import net.minecraft.world.chunk.WorldChunk; import net.minecraft.world.gen.feature.EndPortalFeature; -import net.minecraft.world.WorldView; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.At; diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/entity/MixinFallingBlockEntity.java b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/entity/MixinFallingBlockEntity.java index ff47eeb..4e4f744 100644 --- a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/entity/MixinFallingBlockEntity.java +++ b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/entity/MixinFallingBlockEntity.java @@ -1,50 +1,36 @@ package com.github.zly2006.carpetslsaddition.mixin.entity; -import carpet.utils.Translations; import com.github.zly2006.carpetslsaddition.SLSCarpetSettings; -import com.github.zly2006.carpetslsaddition.block.entity.SLSDeepSlateBlockEntity; 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.EntityType; import net.minecraft.entity.FallingBlockEntity; import net.minecraft.entity.ItemEntity; import net.minecraft.entity.damage.DamageSource; -import net.minecraft.item.BlockItem; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; -import net.minecraft.nbt.NbtCompound; import net.minecraft.registry.tag.BlockTags; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; -import net.minecraft.text.Style; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; +import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; -import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; 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.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Predicate; -import static net.minecraft.nbt.NbtElement.COMPOUND_TYPE; - @Mixin(FallingBlockEntity.class) public abstract class MixinFallingBlockEntity extends Entity { @Shadow private BlockState block; @Shadow private boolean destroyedOnLanding; + @Shadow public abstract BlockPos getFallingBlockPos(); + public MixinFallingBlockEntity(EntityType type, World world) { super(type, world); } @@ -64,62 +50,28 @@ public abstract class MixinFallingBlockEntity extends Entity { return false; }; - this.getWorld().getOtherEntities(this, this.getBoundingBox(), deepSlatePredicated).forEach((entity) -> { - var deepSlateEntity = (ItemEntity) entity; // deepSlatePredicated保证转换的安性 - var stackNbtComponent = deepSlateEntity.getStack().getOrDefault(DataComponentTypes.BLOCK_ENTITY_DATA, NbtComponent.DEFAULT); - if (!tryCreateDeepSlateCore(deepSlateEntity, stackNbtComponent)) { - ((ItemEntity) entity).setStack(new ItemStack(Items.REINFORCED_DEEPSLATE, 1)); - } + var world = this.getWorld(); + var itemEntitiesList = world.getOtherEntities(this, this.getBoundingBox(), deepSlatePredicated); + if (itemEntitiesList.size() < 9) { + return; + } - markSuccessfulForged(); - }); - } + var entity = itemEntitiesList.getFirst(); - /** - * 尝试创造一个深板岩核心 - * @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(); + for (int i = 0; i < 9; i++) { + itemEntitiesList.get(i).discard(); + } - itemComponent.apply( blockEntityData -> { - if (blockEntityData.getBoolean("deep_slate_core")) { - success.set(false); - return; - } - - blockEntityData.putBoolean("deep_slate_core", true); - BlockItem.setBlockEntityData(itemStack, SLSDeepSlateBlockEntity.BLOCK_ENTITY_TYPE, blockEntityData); - - itemStack.set( - DataComponentTypes.CUSTOM_NAME, - Text.literal(Translations.tr("carpet.slsa.block.deep_slate_core")) - .setStyle(Style.EMPTY.withColor(Formatting.LIGHT_PURPLE)) - ); - - itemStack.setCount(1); - - var pos = itemEntity.getPos(); - itemEntity.discard(); - - var coreEntity = new ItemEntity(this.getWorld(), pos.getX(), pos.getY(), pos.getZ(), itemStack); - coreEntity.setPickupDelay(40); - float f = this.random.nextFloat() * 0.5F; - float g = this.random.nextFloat() * (float) (Math.PI * 2); - coreEntity.setVelocity(-MathHelper.sin(g) * f, 0.2F, MathHelper.cos(g) * f); - this.getWorld().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; + + + 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); + float f = this.random.nextFloat() * 0.5F; + float g = this.random.nextFloat() * (float) (Math.PI * 2); + coreEntity.setVelocity(-MathHelper.sin(g) * f, 0.2F, MathHelper.cos(g) * f); + world.spawnEntity(coreEntity); } } diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/entity/MixinServerPlayerEntity.java b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/entity/MixinServerPlayerEntity.java index 012ecb1..75eb902 100644 --- a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/entity/MixinServerPlayerEntity.java +++ b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/entity/MixinServerPlayerEntity.java @@ -3,11 +3,8 @@ package com.github.zly2006.carpetslsaddition.mixin.entity; import com.github.zly2006.carpetslsaddition.SLSCarpetSettings; import com.github.zly2006.carpetslsaddition.util.SitEntity; 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.player.PlayerEntity; -import net.minecraft.item.LeadItem; import net.minecraft.network.packet.s2c.play.EntityTrackerUpdateS2CPacket; import net.minecraft.server.network.ServerPlayNetworkHandler; 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.Shadow; 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) public abstract class MixinServerPlayerEntity extends PlayerEntity { diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/player/MixinPlayerInventory.java b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/player/MixinPlayerInventory.java index e3f4b2b..d3a104d 100644 --- a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/player/MixinPlayerInventory.java +++ b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/player/MixinPlayerInventory.java @@ -1,7 +1,6 @@ package com.github.zly2006.carpetslsaddition.mixin.player; import com.github.zly2006.carpetslsaddition.SLSCarpetSettings; -import net.minecraft.entity.player.PlayerAbilities; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.Inventory; diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/network/pca/PcaSyncProtocol.java b/src/main/java/com/github/zly2006/carpetslsaddition/network/pca/PcaSyncProtocol.java index a81807d..56ae217 100644 --- a/src/main/java/com/github/zly2006/carpetslsaddition/network/pca/PcaSyncProtocol.java +++ b/src/main/java/com/github/zly2006/carpetslsaddition/network/pca/PcaSyncProtocol.java @@ -1,46 +1,5 @@ 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 static final ReentrantLock lock = new ReentrantLock(true);