From 94acb2473ee2dde247410e483ad10b9565e268f6 Mon Sep 17 00:00:00 2001 From: 3944Realms Date: Sun, 30 Nov 2025 16:26:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC=E4=B8=BA1.?= =?UTF-8?q?0.7=201.=20=E6=94=B9=E4=B8=BA=E4=BB=85=E5=89=8D5=E4=B8=AAtick?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E9=80=9F=E5=BA=A6=EF=BC=8C=E8=AE=A9=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=AB=AF=E7=9C=8B=E8=B5=B7=E6=9D=A5=E6=95=88=E6=9E=9C?= =?UTF-8?q?=E6=B5=81=E7=95=85=E4=BA=9B=202.=20=E4=BF=AE=E6=94=B9=E4=BA=86D?= =?UTF-8?q?ataGen=E8=AE=A2=E9=98=85=E6=96=B9=E5=BC=8F=EF=BC=8C=E4=BB=85?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E7=8E=AF=E5=A2=83=E4=B8=8B=E5=8F=AF=E8=A2=AB?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=EF=BC=8C=E9=81=BF=E5=85=8Dlib39=E5=BA=93?= =?UTF-8?q?=E8=A2=AB=E9=94=99=E8=AF=AF=E5=8A=A0=E8=BD=BD=E8=BF=9B=E6=9D=A5?= =?UTF-8?q?=203.=E6=9B=B4=E6=96=B0Credits?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +-- .../assets/blasttravelreborn/lang/en_us.json | 4 +-- .../blasttravelreborn/BlastTravelReborn.java | 5 +++ .../content/entity/CannonEntity.java | 33 ++++++++----------- .../datagen/DataGeneratorHandler.java | 2 -- .../datagen/value/BTRLangKeys.java | 4 +-- .../mixin/PlayerEntityMixin.java | 13 ++++---- .../mixin/PlayerEntityRendererMixin.java | 1 - .../network/toClient/FireCannonPayload.java | 1 - .../toClient/SyncFlightStatePayload.java | 1 - src/main/resources/META-INF/mods.toml | 2 +- 12 files changed, 33 insertions(+), 39 deletions(-) diff --git a/build.gradle b/build.gradle index d825bba..bc27451 100644 --- a/build.gradle +++ b/build.gradle @@ -102,7 +102,7 @@ minecraft { server { property 'forge.enabledGameTestNamespaces', mod_id - args '--nogui', "-mixin.config="+mod_id+".mixins.json" + args "-mixin.config="+mod_id+".mixins.json" } // This run config launches GameTestServer and runs all registered gametests, then exits. diff --git a/src/generated/resources/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/generated/resources/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 2c0134e..0ed9c80 100644 --- a/src/generated/resources/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/generated/resources/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2025-11-30T14:45:33.8997715 Languages: en_us -e8f3919eb4dcc1d7cf4176f3258bc19c6cf7a0b2 assets/blasttravelreborn/lang/en_us.json +// 1.20.1 2025-11-30T16:14:50.4899617 Languages: en_us +77f28d92977b44b36ed92657b3082222587dcf04 assets/blasttravelreborn/lang/en_us.json diff --git a/src/generated/resources/assets/blasttravelreborn/lang/en_us.json b/src/generated/resources/assets/blasttravelreborn/lang/en_us.json index a406cff..477fc40 100644 --- a/src/generated/resources/assets/blasttravelreborn/lang/en_us.json +++ b/src/generated/resources/assets/blasttravelreborn/lang/en_us.json @@ -1,8 +1,8 @@ { "container.blasttravelreborn.cannon_container_menu": "Cannon", "death.attack.blasttravelreborn.cannon": "%s was knocked out by a flying %s", - "dialog.blasttravelreborn.add_behavior_item": "Added %s", - "dialog.blasttravelreborn.add_gunpowder_item": "Added Gunpowder", + "dialog.blasttravelreborn.add_behavior_item": "Added %s (Current/Max): %d / %d", + "dialog.blasttravelreborn.add_gunpowder_item": "Added Gunpowder (Current/Max): %d / %d", "dialog.blasttravelreborn.add_lock_chain_item": "Cannon Locked", "dialog.blasttravelreborn.fire": "Fire", "dialog.blasttravelreborn.full_cannon": "Cannon is full!", diff --git a/src/main/java/com/leisuretimedock/blasttravelreborn/BlastTravelReborn.java b/src/main/java/com/leisuretimedock/blasttravelreborn/BlastTravelReborn.java index 7e6cea1..2ce02d6 100644 --- a/src/main/java/com/leisuretimedock/blasttravelreborn/BlastTravelReborn.java +++ b/src/main/java/com/leisuretimedock/blasttravelreborn/BlastTravelReborn.java @@ -4,11 +4,13 @@ import com.leisuretimedock.blasttravelreborn.content.BTRParticleTypes; import com.leisuretimedock.blasttravelreborn.content.entity.BTREntityTypes; import com.leisuretimedock.blasttravelreborn.content.item.BTRItems; import com.leisuretimedock.blasttravelreborn.content.menu.BTRMenuTypes; +import com.leisuretimedock.blasttravelreborn.datagen.DataGeneratorHandler; import com.leisuretimedock.blasttravelreborn.network.BTRNetwork; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.fml.loading.FMLEnvironment; @Mod(value = BlastTravelReborn.MOD_ID) public class BlastTravelReborn { @@ -21,6 +23,9 @@ public class BlastTravelReborn { BTRParticleTypes.register(modEventBus); BTREntityTypes.register(modEventBus); BTRMenuTypes.register(modEventBus); + if(!FMLEnvironment.production) { + modEventBus.register(DataGeneratorHandler.class); + } } public static ResourceLocation id(String path) { diff --git a/src/main/java/com/leisuretimedock/blasttravelreborn/content/entity/CannonEntity.java b/src/main/java/com/leisuretimedock/blasttravelreborn/content/entity/CannonEntity.java index 5990437..ad9cc75 100644 --- a/src/main/java/com/leisuretimedock/blasttravelreborn/content/entity/CannonEntity.java +++ b/src/main/java/com/leisuretimedock/blasttravelreborn/content/entity/CannonEntity.java @@ -15,7 +15,6 @@ import com.leisuretimedock.blasttravelreborn.util.PlayerEntityDuck; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.player.AbstractClientPlayer; -import net.minecraft.client.resources.language.I18n; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; @@ -23,7 +22,6 @@ import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.server.level.ServerLevel; -import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.tags.ItemTags; @@ -237,7 +235,7 @@ public class CannonEntity extends Entity { // 设置新的火药到炮中 ItemStack newGunpowder = stack.copy(); newGunpowder.setCount(currentGunpowder.getCount() + 1); // 只放一个火药 - ((ServerPlayer) player).sendSystemMessage(Component.translatable(ADD_GUNPOWDER_DIALOG, Math.min(currentGunpowder.getCount() + 1, currentGunpowder.getMaxStackSize()), currentGunpowder.getMaxStackSize()), true); + player.displayClientMessage(Component.translatable(ADD_GUNPOWDER_DIALOG, Math.min(currentGunpowder.getCount() + 1, currentGunpowder.getMaxStackSize()), currentGunpowder.getMaxStackSize()), true); inventory.setItem(0, newGunpowder); if (!player.isCreative()) { @@ -258,7 +256,7 @@ public class CannonEntity extends Entity { if (!player.isCreative()) { stack.shrink(1); } - ((ServerPlayer) player).sendSystemMessage(Component.translatable(ADD_LOCK_CHAIN_DIALOG).withStyle(ChatFormatting.GREEN), true); + player.displayClientMessage(Component.translatable(ADD_LOCK_CHAIN_DIALOG).withStyle(ChatFormatting.GREEN), true); level().playSound(null, this.blockPosition(), SoundEvents.CHAIN_PLACE, SoundSource.BLOCKS, 1.0f, 1.0f); } else { inventory.setItem(1, ItemStack.EMPTY); @@ -267,7 +265,7 @@ public class CannonEntity extends Entity { player.drop(currentChain, false); } } - ((ServerPlayer) player).sendSystemMessage(Component.translatable(REMOVE_LOCK_CHAIN_DIALOG).withStyle(ChatFormatting.RED), true); + player.displayClientMessage(Component.translatable(REMOVE_LOCK_CHAIN_DIALOG).withStyle(ChatFormatting.RED), true); level().playSound(null, this.blockPosition(), SoundEvents.CHAIN_FALL, SoundSource.BLOCKS, 1.0f, 1.0f); } } @@ -286,35 +284,30 @@ public class CannonEntity extends Entity { level().playSound(null, this.blockPosition(), getBehavior().getPlaceInSound(), SoundSource.BLOCKS, 1.0f, 1.0f); } else { if (stack.is(currentBehaviorItem.getItem())) { //同类物品 +1 - if (stack.getCount() >= currentBehaviorItem.getMaxStackSize()) { + if (currentBehaviorItem.getCount() >= currentBehaviorItem.getMaxStackSize()) { if (!player.isCreative() && !player.getInventory().add(currentBehaviorItem)) { player.drop(currentBehaviorItem, false); } } ItemStack stack1 = stack.copy(); stack1.setCount(currentBehaviorItem.getCount() + 1); - ((ServerPlayer) player).sendSystemMessage(Component.translatable(ADD_BEHAVIOR_DIALOG, I18n.get(currentBehaviorItem.getDescriptionId()),Math.min(currentBehaviorItem.getCount() + 1, currentBehaviorItem.getMaxStackSize()), currentBehaviorItem.getMaxStackSize()), true); + player.displayClientMessage(Component.translatable(ADD_BEHAVIOR_DIALOG, Component.translatable(currentBehaviorItem.getDescriptionId()),Math.min(currentBehaviorItem.getCount() + 1, currentBehaviorItem.getMaxStackSize()), currentBehaviorItem.getMaxStackSize()), true); inventory.setItem(2, stack1); - if (!player.isCreative()) { - stack.shrink(1); - } - - level().playSound(null, this.blockPosition(), getBehavior().getPlaceInSound(), SoundSource.BLOCKS, 1.0f, 1.0f); - } else { //不同类替换 + } else { //不同类替换 if (!player.isCreative() && !player.getInventory().add(currentBehaviorItem)) { player.drop(currentBehaviorItem, false); } ItemStack copied = stack.copy(); copied.setCount(1); inventory.setItem(2, copied); - ((ServerPlayer) player).sendSystemMessage(Component.translatable(ADD_BEHAVIOR_DIALOG, I18n.get(stack.getDescriptionId()), 1, stack.getMaxStackSize()), true); - if (!player.isCreative()) { - stack.shrink(1); - } - level().playSound(null, this.blockPosition(), getBehavior().getPlaceInSound(), SoundSource.BLOCKS, 1.0f, 1.0f); - } - } + player.displayClientMessage(Component.translatable(ADD_BEHAVIOR_DIALOG, Component.translatable(stack.getDescriptionId()), 1, stack.getMaxStackSize()), true); + } + if (!player.isCreative()) { + stack.shrink(1); + } + level().playSound(null, this.blockPosition(), getBehavior().getPlaceInSound(), SoundSource.BLOCKS, 1.0f, 1.0f); + } } } diff --git a/src/main/java/com/leisuretimedock/blasttravelreborn/datagen/DataGeneratorHandler.java b/src/main/java/com/leisuretimedock/blasttravelreborn/datagen/DataGeneratorHandler.java index 89e6ebf..49f2817 100644 --- a/src/main/java/com/leisuretimedock/blasttravelreborn/datagen/DataGeneratorHandler.java +++ b/src/main/java/com/leisuretimedock/blasttravelreborn/datagen/DataGeneratorHandler.java @@ -9,14 +9,12 @@ import net.minecraft.data.DataProvider; import net.minecraftforge.common.data.DatapackBuiltinEntriesProvider; import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; import org.jetbrains.annotations.NotNull; import top.r3944realms.lib39.datagen.provider.SimpleLanguageProvider; import top.r3944realms.lib39.datagen.value.McLocale; import java.util.Set; -@Mod.EventBusSubscriber(modid = BlastTravelReborn.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) public class DataGeneratorHandler { @SubscribeEvent public static void generatorDataEvent(GatherDataEvent event) { diff --git a/src/main/java/com/leisuretimedock/blasttravelreborn/datagen/value/BTRLangKeys.java b/src/main/java/com/leisuretimedock/blasttravelreborn/datagen/value/BTRLangKeys.java index 1b64092..bd927b5 100644 --- a/src/main/java/com/leisuretimedock/blasttravelreborn/datagen/value/BTRLangKeys.java +++ b/src/main/java/com/leisuretimedock/blasttravelreborn/datagen/value/BTRLangKeys.java @@ -58,14 +58,14 @@ public enum BTRLangKeys implements ILangKeyValueCollection { )); addLang(LangKeyValue.ofKey( "dialog.blasttravelreborn.add_gunpowder_item", ModPartEnum.MESSAGE, - "Added Gunpowder", + "Added Gunpowder (Current/Max): %d / %d", "填充火药 (当前/最大): %d / %d", "填充火藥 (當前/最大): %d / %d" )); addLang(LangKeyValue.ofKey( "dialog.blasttravelreborn.add_behavior_item", ModPartEnum.MESSAGE, - "Added %s", + "Added %s (Current/Max): %d / %d", "填充%s (当前/最大): %d / %d", "填充%s (當前/最大): %d / %d" )); diff --git a/src/main/java/com/leisuretimedock/blasttravelreborn/mixin/PlayerEntityMixin.java b/src/main/java/com/leisuretimedock/blasttravelreborn/mixin/PlayerEntityMixin.java index a38888b..af40b1b 100644 --- a/src/main/java/com/leisuretimedock/blasttravelreborn/mixin/PlayerEntityMixin.java +++ b/src/main/java/com/leisuretimedock/blasttravelreborn/mixin/PlayerEntityMixin.java @@ -6,7 +6,6 @@ import com.leisuretimedock.blasttravelreborn.network.BTRNetwork; import com.leisuretimedock.blasttravelreborn.network.toClient.SyncFlightStatePayload; import com.leisuretimedock.blasttravelreborn.network.toServer.StopCannonFlightServerPayload; import com.leisuretimedock.blasttravelreborn.util.PlayerEntityDuck; -import net.minecraft.client.Minecraft; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.server.level.ServerPlayer; @@ -22,7 +21,6 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.entity.EntityTypeTest; import net.minecraft.world.phys.Vec3; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.fml.loading.FMLEnvironment; import net.minecraftforge.network.NetworkDirection; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -86,10 +84,13 @@ public abstract class PlayerEntityMixin extends LivingEntity implements PlayerEn entity.hurt(source, (float)(vel.length() * 4)); } } - try { - ServerPlayer cast = ServerPlayer.class.cast(self); - BTRNetwork.CHANNEL.sendTo(new SyncFlightStatePayload(self.getId(), vel, self.position(), true, noPhysics), cast.connection.connection, NetworkDirection.PLAY_TO_CLIENT); - } catch(Exception ignored){} + if(blasttravel$ticksFlying < 5) { + try { + ServerPlayer cast = ServerPlayer.class.cast(self); + BTRNetwork.CHANNEL.sendTo(new SyncFlightStatePayload(self.getId(), vel, self.position(), true, noPhysics), cast.connection.connection, NetworkDirection.PLAY_TO_CLIENT); + } catch (Exception ignored) { + } + } } if (self.isLocalPlayer() && diff --git a/src/main/java/com/leisuretimedock/blasttravelreborn/mixin/PlayerEntityRendererMixin.java b/src/main/java/com/leisuretimedock/blasttravelreborn/mixin/PlayerEntityRendererMixin.java index 21feb5e..5df712c 100644 --- a/src/main/java/com/leisuretimedock/blasttravelreborn/mixin/PlayerEntityRendererMixin.java +++ b/src/main/java/com/leisuretimedock/blasttravelreborn/mixin/PlayerEntityRendererMixin.java @@ -36,7 +36,6 @@ public abstract class PlayerEntityRendererMixin extends LivingEntityRenderer