diff --git a/build.gradle b/build.gradle index c9e28d1..a7021f9 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { mavenCentral() } dependencies { - classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '6.0.+', changing: true classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT' } } @@ -14,7 +14,7 @@ apply plugin: 'net.minecraftforge.gradle' apply plugin: 'org.spongepowered.mixin' group = 'com.github.eterdelta.broomsmod' -version = '1.19-1.1.1' +version = '1.20.1-1.1.1' java { archivesBaseName = 'BroomsMod' @@ -23,7 +23,7 @@ java { minecraft { - mappings channel: 'official', version: '1.19' + mappings channel: 'official', version: '1.20.1' runs { client { @@ -81,7 +81,7 @@ repositories { dependencies { - minecraft 'net.minecraftforge:forge:1.19-41.0.100' + minecraft 'net.minecraftforge:forge:1.20.1-47.1.39' annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ffed3a2..fae0804 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/java/com/github/eterdelta/broomsmod/client/renderer/BroomRenderer.java b/src/main/java/com/github/eterdelta/broomsmod/client/renderer/BroomRenderer.java index 3c2de80..45168b8 100644 --- a/src/main/java/com/github/eterdelta/broomsmod/client/renderer/BroomRenderer.java +++ b/src/main/java/com/github/eterdelta/broomsmod/client/renderer/BroomRenderer.java @@ -4,7 +4,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexMultiConsumer; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.model.EntityModel; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; @@ -24,21 +24,21 @@ public BroomRenderer(EntityRendererProvider.Context context) { public void render(T broomEntity, float p_113930_, float partialTicks, PoseStack poseStack, MultiBufferSource multiBufferSource, int p_113934_) { poseStack.pushPose(); poseStack.translate(0.0D, 0.5D, 0.0D); - poseStack.mulPose(Vector3f.YP.rotationDegrees(-p_113930_)); + poseStack.mulPose(Axis.YP.rotationDegrees(-p_113930_)); float hurtTime = broomEntity.getHurtTime() - partialTicks; if (hurtTime > 0.0F) { float swingDegrees = Mth.sin(hurtTime) * hurtTime * 2.5F / 10.0F; - poseStack.mulPose(Vector3f.XP.rotationDegrees(swingDegrees)); - poseStack.mulPose(Vector3f.ZP.rotationDegrees(swingDegrees)); + poseStack.mulPose(Axis.XP.rotationDegrees(swingDegrees)); + poseStack.mulPose(Axis.ZP.rotationDegrees(swingDegrees)); } ResourceLocation broomTexture = this.getTextureLocation(broomEntity); EntityModel broomModel = this.getBroomModel(); poseStack.scale(-1.0F, -1.0F, 1.0F); - poseStack.mulPose(Vector3f.YP.rotationDegrees(180.0F)); + poseStack.mulPose(Axis.YP.rotationDegrees(180.0F)); broomModel.setupAnim(broomEntity, partialTicks, 0.0F, broomEntity.tickCount + partialTicks, 0.0F, 0.0F); VertexConsumer vertexconsumer = this.getBuffer(broomEntity, broomModel, broomTexture, multiBufferSource); broomModel.renderToBuffer(poseStack, vertexconsumer, p_113934_, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F, 1.0F, 1.0F); diff --git a/src/main/java/com/github/eterdelta/broomsmod/entity/WoodenBroomEntity.java b/src/main/java/com/github/eterdelta/broomsmod/entity/WoodenBroomEntity.java index 2158a66..c5213d0 100644 --- a/src/main/java/com/github/eterdelta/broomsmod/entity/WoodenBroomEntity.java +++ b/src/main/java/com/github/eterdelta/broomsmod/entity/WoodenBroomEntity.java @@ -8,6 +8,7 @@ import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ClientGamePacketListener; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; @@ -88,7 +89,7 @@ public double getPassengersRidingOffset() { public boolean hurt(DamageSource source, float amount) { if (this.isInvulnerableTo(source)) { return false; - } else if (!this.level.isClientSide && !this.isRemoved()) { + } else if (!this.level().isClientSide && !this.isRemoved()) { this.setHurtDir(-this.getHurtDir()); this.setHurtTime(10); this.setDamage(this.getDamage() + amount * 10.0F); @@ -96,7 +97,7 @@ public boolean hurt(DamageSource source, float amount) { this.gameEvent(GameEvent.ENTITY_DAMAGE, source.getEntity()); boolean flag = source.getEntity() instanceof Player && ((Player) source.getEntity()).getAbilities().instabuild; if (flag || this.getDamage() > 40.0F) { - if (!flag && this.level.getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) { + if (!flag && this.level().getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) { this.spawnBroomItem(); } this.discard(); @@ -119,7 +120,7 @@ public void push(Entity entity) { } @Override - public void animateHurt() { + public void animateHurt(float p_265161_) { this.setHurtDir(-this.getHurtDir()); this.setHurtTime(10); this.setDamage(this.getDamage() * 11.0F); @@ -152,7 +153,7 @@ public void tick() { this.setDeltaMovement(this.getDeltaMovement().multiply(0.8D, 0.9D, 0.8D)); - if (!this.isOnGround() && !this.seaBreezing) { + if (!this.onGround() && !this.seaBreezing) { if (this.hoverTime > 0) { this.canHover = true; this.hoverTime--; @@ -185,7 +186,7 @@ public void tick() { } if (this.isControlledByLocalInstance()) { - if (this.level.isClientSide) { + if (this.level().isClientSide) { this.handleInputs(); } this.move(MoverType.SELF, this.getDeltaMovement()); @@ -193,7 +194,7 @@ public void tick() { this.setDeltaMovement(Vec3.ZERO); } - if (this.level.getBlockState(this.blockPosition().below()).is(Blocks.WATER) && EnchantmentHelper.getItemEnchantmentLevel(BroomsEnchantments.SEA_BREEZE.get(), this.getItem()) > 0) { + if (this.level().getBlockState(this.blockPosition().below()).is(Blocks.WATER) && EnchantmentHelper.getItemEnchantmentLevel(BroomsEnchantments.SEA_BREEZE.get(), this.getItem()) > 0) { this.seaBreezing = true; if (this.getDeltaMovement().y() < 0) { this.setDeltaMovement(this.getDeltaMovement().multiply(0.9D, 0.3D, 0.9D)); @@ -203,9 +204,9 @@ public void tick() { } this.checkInsideBlocks(); - List list = this.level.getEntities(this, this.getBoundingBox().inflate(0.2F, -0.01F, 0.2F), EntitySelector.pushableBy(this)); + List list = this.level().getEntities(this, this.getBoundingBox().inflate(0.2F, -0.01F, 0.2F), EntitySelector.pushableBy(this)); if (!list.isEmpty()) { - boolean flag = !this.level.isClientSide && !(this.getControllingPassenger() instanceof Player); + boolean flag = !this.level().isClientSide && !(this.getControllingPassenger() instanceof Player); for (Entity entity : list) { if (!entity.hasPassenger(this)) { @@ -262,8 +263,8 @@ private void handleInputs() { } @Override - public void positionRider(Entity rider) { - super.positionRider(rider); + protected void positionRider(Entity rider, MoveFunction p_19958_) { + super.positionRider(rider, p_19958_); if (rider instanceof Player player) { player.setYBodyRot(player.getYHeadRot()); } @@ -285,7 +286,7 @@ public InteractionResult interact(Player p_38330_, InteractionHand p_38331_) { if (p_38330_.isSecondaryUseActive()) { return InteractionResult.PASS; } else { - if (!this.level.isClientSide()) { + if (!this.level().isClientSide()) { return p_38330_.startRiding(this) ? InteractionResult.CONSUME : InteractionResult.PASS; } else { return InteractionResult.SUCCESS; @@ -299,8 +300,9 @@ protected void checkFallDamage(double p_19911_, boolean p_19912_, BlockState p_1 } @Override - public Entity getControllingPassenger() { - return this.getFirstPassenger(); + public LivingEntity getControllingPassenger() { + Entity passenger = this.getFirstPassenger(); + return passenger instanceof LivingEntity livingEntity ? livingEntity : null; } public void setInputs(boolean left, boolean right, boolean up, boolean down, boolean jumping) { @@ -312,7 +314,7 @@ public void setInputs(boolean left, boolean right, boolean up, boolean down, boo } @Override - public Packet getAddEntityPacket() { + public Packet getAddEntityPacket() { return NetworkHooks.getEntitySpawningPacket(this); } @@ -387,7 +389,7 @@ public double getHoverSpeed() { } public float getSpeed() { - if (this.isOnGround()) { + if (this.onGround()) { return 0.08F + (0.08F * (this.getItem().getEnchantmentLevel(BroomsEnchantments.LAND_SKILLS.get())) * 20 / 100.0F); } else { return 0.08F + (0.08F * (this.getItem().getEnchantmentLevel(BroomsEnchantments.AIR_SKILLS.get())) * 20 / 100.0F); diff --git a/src/main/java/com/github/eterdelta/broomsmod/handler/ClientHandler.java b/src/main/java/com/github/eterdelta/broomsmod/handler/ClientHandler.java index cdbdeee..7986b2d 100644 --- a/src/main/java/com/github/eterdelta/broomsmod/handler/ClientHandler.java +++ b/src/main/java/com/github/eterdelta/broomsmod/handler/ClientHandler.java @@ -4,8 +4,11 @@ import com.github.eterdelta.broomsmod.client.renderer.WoodenBroomRenderer; import com.github.eterdelta.broomsmod.client.renderer.model.WoodenBroomModel; import com.github.eterdelta.broomsmod.registry.BroomsEntities; +import com.github.eterdelta.broomsmod.registry.BroomsItems; +import net.minecraft.world.item.CreativeModeTabs; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.EntityRenderersEvent; +import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @@ -21,4 +24,11 @@ public static void registerEntityRenderers(EntityRenderersEvent.RegisterRenderer public static void registerLayerDefinitions(EntityRenderersEvent.RegisterLayerDefinitions event) { event.registerLayerDefinition(WoodenBroomModel.LAYER_LOCATION, WoodenBroomModel::createBodyLayer); } + + @SubscribeEvent + public static void registerCreativeTab(BuildCreativeModeTabContentsEvent event) { + if (event.getTabKey() == CreativeModeTabs.TOOLS_AND_UTILITIES) { + event.accept(BroomsItems.WOODEN_BROOM); + } + } } diff --git a/src/main/java/com/github/eterdelta/broomsmod/item/WoodenBroomItem.java b/src/main/java/com/github/eterdelta/broomsmod/item/WoodenBroomItem.java index f304eb2..f4f6290 100644 --- a/src/main/java/com/github/eterdelta/broomsmod/item/WoodenBroomItem.java +++ b/src/main/java/com/github/eterdelta/broomsmod/item/WoodenBroomItem.java @@ -2,7 +2,6 @@ import com.github.eterdelta.broomsmod.entity.WoodenBroomEntity; import com.github.eterdelta.broomsmod.registry.BroomsItems; -import net.minecraft.core.BlockPos; import net.minecraft.stats.Stats; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; @@ -37,7 +36,7 @@ public InteractionResultHolder use(Level level, Player player, Intera } else { if (!level.isClientSide()) { level.addFreshEntity(broom); - level.gameEvent(player, GameEvent.ENTITY_PLACE, new BlockPos(hitResult.getLocation())); + level.gameEvent(player, GameEvent.ENTITY_PLACE, hitResult.getLocation()); if (!player.getAbilities().instabuild) { itemStack.shrink(1); } diff --git a/src/main/java/com/github/eterdelta/broomsmod/mixin/LocalPlayerMixin.java b/src/main/java/com/github/eterdelta/broomsmod/mixin/LocalPlayerMixin.java index 5965f3a..2dc3dbc 100644 --- a/src/main/java/com/github/eterdelta/broomsmod/mixin/LocalPlayerMixin.java +++ b/src/main/java/com/github/eterdelta/broomsmod/mixin/LocalPlayerMixin.java @@ -6,7 +6,6 @@ import net.minecraft.client.player.AbstractClientPlayer; import net.minecraft.client.player.Input; import net.minecraft.client.player.LocalPlayer; -import net.minecraft.world.entity.player.ProfilePublicKey; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -21,8 +20,8 @@ public class LocalPlayerMixin extends AbstractClientPlayer { @Shadow private boolean handsBusy; - public LocalPlayerMixin(ClientLevel clientLevel, GameProfile gameProfile, ProfilePublicKey profilePublicKey) { - super(clientLevel, gameProfile, profilePublicKey); + public LocalPlayerMixin(ClientLevel clientLevel, GameProfile gameProfile) { + super(clientLevel, gameProfile); } @Inject(at = @At("TAIL"), method = "rideTick()V") diff --git a/src/main/java/com/github/eterdelta/broomsmod/registry/BroomsItems.java b/src/main/java/com/github/eterdelta/broomsmod/registry/BroomsItems.java index 67d7ba1..d2c49a2 100644 --- a/src/main/java/com/github/eterdelta/broomsmod/registry/BroomsItems.java +++ b/src/main/java/com/github/eterdelta/broomsmod/registry/BroomsItems.java @@ -2,7 +2,6 @@ import com.github.eterdelta.broomsmod.BroomsMod; import com.github.eterdelta.broomsmod.item.WoodenBroomItem; -import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; @@ -12,5 +11,5 @@ public class BroomsItems { public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, BroomsMod.MODID); - public static final RegistryObject WOODEN_BROOM = ITEMS.register("wooden_broom", () -> new WoodenBroomItem(new Item.Properties().stacksTo(1).tab(CreativeModeTab.TAB_TRANSPORTATION))); + public static final RegistryObject WOODEN_BROOM = ITEMS.register("wooden_broom", () -> new WoodenBroomItem(new Item.Properties().stacksTo(1))); } diff --git a/src/main/java/com/github/eterdelta/broomsmod/registry/BroomsSounds.java b/src/main/java/com/github/eterdelta/broomsmod/registry/BroomsSounds.java index 92f4b9b..f755b9e 100644 --- a/src/main/java/com/github/eterdelta/broomsmod/registry/BroomsSounds.java +++ b/src/main/java/com/github/eterdelta/broomsmod/registry/BroomsSounds.java @@ -11,6 +11,6 @@ public class BroomsSounds { public static final DeferredRegister SOUND_EVENTS = DeferredRegister.create(ForgeRegistries.SOUND_EVENTS, BroomsMod.MODID); - public static final RegistryObject BROOM_DESTROY = SOUND_EVENTS.register("entity.wooden_broom.destroy", () -> new SoundEvent(new ResourceLocation(BroomsMod.MODID, "entity.wooden_broom.destroy"))); - public static final RegistryObject BROOM_FALL = SOUND_EVENTS.register("entity.wooden_broom.fall", () -> new SoundEvent(new ResourceLocation(BroomsMod.MODID, "entity.wooden_broom.fall"))); + public static final RegistryObject BROOM_DESTROY = SOUND_EVENTS.register("entity.wooden_broom.destroy", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(BroomsMod.MODID, "entity.wooden_broom.destroy"))); + public static final RegistryObject BROOM_FALL = SOUND_EVENTS.register("entity.wooden_broom.fall", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(BroomsMod.MODID, "entity.wooden_broom.fall"))); } diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index e29341b..f6583fe 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -1,5 +1,5 @@ modLoader = "javafml" -loaderVersion = "[41,)" +loaderVersion = "[47,)" license = "MIT" [[mods]] modId = "broomsmod" @@ -13,13 +13,13 @@ Adds balanced enchantable brooms to Minecraft. Fly around the world! [[dependencies.broomsmod]] modId = "forge" mandatory = true -versionRange = "[41,)" +versionRange = "[47,)" ordering = "NONE" side = "BOTH" [[dependencies.broomsmod]] modId = "minecraft" mandatory = true -versionRange = "[1.19,1.20)" +versionRange = "[1.20.1,1.21)" ordering = "NONE" side = "BOTH" diff --git a/src/main/resources/assets/broomsmod/lang/zh_cn.json b/src/main/resources/assets/broomsmod/lang/zh_cn.json new file mode 100644 index 0000000..3869a09 --- /dev/null +++ b/src/main/resources/assets/broomsmod/lang/zh_cn.json @@ -0,0 +1,21 @@ +{ + "entity.broomsmod.wooden_broom": "木制扫帚", + "item.broomsmod.wooden_broom": "木扫帚", + + + "enchantment.broomsmod.air_skills": "空中灵巧", + "enchantment.broomsmod.air_skills.desc": "每级提高扫帚在空中的速度 20%,最多 3 级", + + "enchantment.broomsmod.land_skills": "陆地灵巧", + "enchantment.broomsmod.land_skills.desc": "每级提高地面扫帚速度 20%,最多 3 级", + + "enchantment.broomsmod.hovering": "悬停", + "enchantment.broomsmod.hovering.desc": "每级增加 25% 的扫帚最大飞行时间,最多 4 级", + + "enchantment.broomsmod.seabreeze": "海风", + "enchantment.broomsmod.seabreeze.desc": "当靠近水时,您的扫帚会减速并重新充能,使您可以再次飞行", + + + "advancements.husbandry.ride_broom.title": "是时候摆脱小船了", + "advancements.husbandry.ride_broom.description": "乘坐木制扫帚,一种神奇的交通工具" +} \ No newline at end of file diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta index 5f78719..6cbd747 100644 --- a/src/main/resources/pack.mcmeta +++ b/src/main/resources/pack.mcmeta @@ -1,7 +1,7 @@ { "pack": { "description": "broomsmod resources", - "pack_format": 9, + "pack_format": 15, "_comment": "" } }