diff --git a/build.gradle b/build.gradle index 328f9d0..22855e4 100644 --- a/build.gradle +++ b/build.gradle @@ -14,7 +14,7 @@ base { } java { - toolchain.languageVersion = JavaLanguageVersion.of(17) + toolchain.languageVersion = JavaLanguageVersion.of(21) } minecraft { @@ -77,12 +77,6 @@ minecraft { // You can set various levels here. // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels property 'forge.logging.console.level', 'debug' - - mods { - "${mod_id}" { - source sourceSets.main - } - } } client { @@ -149,6 +143,7 @@ dependencies { // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html // http://www.gradle.org/docs/current/userguide/dependency_management.html + implementation('net.sf.jopt-simple:jopt-simple:5.0.4') { version { strictly '5.0.4' } } } // This block of code expands all declared replace properties in the specified resource targets. diff --git a/gradle.properties b/gradle.properties index 3639828..fb9f660 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,12 +1,12 @@ org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false -minecraft_version=1.20.3 -minecraft_version_range=[1.20.3,1.20.4] -forge_version=49.0.2 -forge_version_range=[49,) -loader_version_range=[49,) +minecraft_version=1.20.6 +minecraft_version_range=[1.20.6] +forge_version=50.1.0 +forge_version_range=[50,) +loader_version_range=[50,) mapping_channel=parchment -mapping_version=2023.12.31-1.20.3 +mapping_version=2024.06.16-1.20.6 mod_id=enhancedexplosives mod_name=Enhanced Explosives diff --git a/src/main/java/com/jenny/enhancedexplosives/entities/arrows/baseArrow.java b/src/main/java/com/jenny/enhancedexplosives/entities/arrows/baseArrow.java index b575f57..bb7b758 100644 --- a/src/main/java/com/jenny/enhancedexplosives/entities/arrows/baseArrow.java +++ b/src/main/java/com/jenny/enhancedexplosives/entities/arrows/baseArrow.java @@ -39,6 +39,11 @@ public class baseArrow extends AbstractArrow { return ItemStack.EMPTY; } + @Override + protected ItemStack getDefaultPickupItem() { + return ItemStack.EMPTY; + } + protected Vec3 particlePos(double dist) { Double speed = getDeltaMovement().length(); return new Vec3( diff --git a/src/main/java/com/jenny/enhancedexplosives/entities/tnt/basePrimedTNT.java b/src/main/java/com/jenny/enhancedexplosives/entities/tnt/basePrimedTNT.java index 8821faa..f11f61b 100644 --- a/src/main/java/com/jenny/enhancedexplosives/entities/tnt/basePrimedTNT.java +++ b/src/main/java/com/jenny/enhancedexplosives/entities/tnt/basePrimedTNT.java @@ -102,9 +102,10 @@ public abstract class basePrimedTNT extends Entity implements TraceableEntity { return MovementEmission.NONE; } - protected void defineSynchedData() { - this.entityData.define(DATA_FUSE_ID, 80); - this.entityData.define(DATA_POWER_ID, 4.0f); + @Override + protected void defineSynchedData(SynchedEntityData.@NotNull Builder builder) { + builder.define(DATA_FUSE_ID, 80); + builder.define(DATA_POWER_ID, 4.0f); } protected void addAdditionalSaveData(CompoundTag pCompound) { diff --git a/src/main/java/com/jenny/enhancedexplosives/entities/tnt/blackHolePrimedTNT.java b/src/main/java/com/jenny/enhancedexplosives/entities/tnt/blackHolePrimedTNT.java index c475c77..c17ef15 100644 --- a/src/main/java/com/jenny/enhancedexplosives/entities/tnt/blackHolePrimedTNT.java +++ b/src/main/java/com/jenny/enhancedexplosives/entities/tnt/blackHolePrimedTNT.java @@ -6,11 +6,14 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; -import net.minecraft.world.entity.*; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.NotNull; import javax.annotation.Nullable; import java.util.List; @@ -83,9 +86,9 @@ public class blackHolePrimedTNT extends basePrimedTNT { } @Override - protected void defineSynchedData() { - this.entityData.define(DATA_SPEED_ID, 4.0f); - super.defineSynchedData(); + protected void defineSynchedData(SynchedEntityData.@NotNull Builder builder) { + builder.define(DATA_SPEED_ID, 4.0f); + super.defineSynchedData(builder); } @Override diff --git a/src/main/java/com/jenny/enhancedexplosives/entities/tnt/claymorePrimedTNT.java b/src/main/java/com/jenny/enhancedexplosives/entities/tnt/claymorePrimedTNT.java index da0a447..e722a3c 100644 --- a/src/main/java/com/jenny/enhancedexplosives/entities/tnt/claymorePrimedTNT.java +++ b/src/main/java/com/jenny/enhancedexplosives/entities/tnt/claymorePrimedTNT.java @@ -14,6 +14,7 @@ import net.minecraft.world.entity.projectile.Projectile; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.NotNull; import javax.annotation.Nullable; @@ -72,9 +73,9 @@ public class claymorePrimedTNT extends basePrimedTNT { } @Override - protected void defineSynchedData() { - this.entityData.define(DATA_PCOUNT_ID, 16); - super.defineSynchedData(); + protected void defineSynchedData(SynchedEntityData.@NotNull Builder builder) { + builder.define(DATA_PCOUNT_ID, 16); + super.defineSynchedData(builder); } @Override diff --git a/src/main/java/com/jenny/enhancedexplosives/entities/tnt/homingPrimedTNT.java b/src/main/java/com/jenny/enhancedexplosives/entities/tnt/homingPrimedTNT.java index 4252a83..03d7e1b 100644 --- a/src/main/java/com/jenny/enhancedexplosives/entities/tnt/homingPrimedTNT.java +++ b/src/main/java/com/jenny/enhancedexplosives/entities/tnt/homingPrimedTNT.java @@ -16,6 +16,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.NotNull; import javax.annotation.Nullable; import java.util.ArrayList; @@ -116,9 +117,9 @@ public class homingPrimedTNT extends basePrimedTNT { } @Override - protected void defineSynchedData() { - this.entityData.define(DATA_SPEED_ID, 4.0f); - super.defineSynchedData(); + protected void defineSynchedData(SynchedEntityData.@NotNull Builder builder) { + builder.define(DATA_SPEED_ID, 4.0f); + super.defineSynchedData(builder); } @Override diff --git a/src/main/java/com/jenny/enhancedexplosives/entities/tnt/repulsivePrimedTNT.java b/src/main/java/com/jenny/enhancedexplosives/entities/tnt/repulsivePrimedTNT.java index 09d0355..b3a2b6a 100644 --- a/src/main/java/com/jenny/enhancedexplosives/entities/tnt/repulsivePrimedTNT.java +++ b/src/main/java/com/jenny/enhancedexplosives/entities/tnt/repulsivePrimedTNT.java @@ -13,6 +13,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.NotNull; import javax.annotation.Nullable; import java.util.List; @@ -86,9 +87,9 @@ public class repulsivePrimedTNT extends basePrimedTNT { } @Override - protected void defineSynchedData() { - this.entityData.define(DATA_SPEED_ID, 4.0f); - super.defineSynchedData(); + protected void defineSynchedData(SynchedEntityData.@NotNull Builder builder) { + builder.define(DATA_SPEED_ID, 4.0f); + super.defineSynchedData(builder); } @Override diff --git a/src/main/java/com/jenny/enhancedexplosives/items/ArrowAbstract.java b/src/main/java/com/jenny/enhancedexplosives/items/ArrowAbstract.java index 9483b73..3a20a1a 100644 --- a/src/main/java/com/jenny/enhancedexplosives/items/ArrowAbstract.java +++ b/src/main/java/com/jenny/enhancedexplosives/items/ArrowAbstract.java @@ -11,7 +11,6 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.List; @@ -23,12 +22,12 @@ public abstract class ArrowAbstract extends ArrowItem { } @Override - public void appendHoverText(@NotNull ItemStack pStack, @Nullable Level pLevel, @NotNull List pTooltipComponents, @NotNull TooltipFlag pIsAdvanced) { + public void appendHoverText(@NotNull ItemStack pStack, @NotNull TooltipContext pContext, @NotNull List pTooltipComponents, @NotNull TooltipFlag pTooltipFlag) { String key = String.format("tooltip.%s.%s", MODID, this); MutableComponent toolTip = Component.translatable(key); if (!toolTip.getString().equals(key)) { pTooltipComponents.add(toolTip.withStyle(ChatFormatting.DARK_BLUE)); - super.appendHoverText(pStack, pLevel, pTooltipComponents, pIsAdvanced); + super.appendHoverText(pStack, pContext, pTooltipComponents, pTooltipFlag); } } diff --git a/src/main/java/com/jenny/enhancedexplosives/items/BlockItemTooltip.java b/src/main/java/com/jenny/enhancedexplosives/items/BlockItemTooltip.java index 9e36358..19b44a5 100644 --- a/src/main/java/com/jenny/enhancedexplosives/items/BlockItemTooltip.java +++ b/src/main/java/com/jenny/enhancedexplosives/items/BlockItemTooltip.java @@ -7,10 +7,8 @@ import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.List; @@ -22,12 +20,12 @@ public class BlockItemTooltip extends BlockItem { } @Override - public void appendHoverText(@NotNull ItemStack pStack, @Nullable Level pLevel, @NotNull List pTooltipComponents, @NotNull TooltipFlag pIsAdvanced) { + public void appendHoverText(@NotNull ItemStack pStack, @NotNull TooltipContext pContext, @NotNull List pTooltipComponents, @NotNull TooltipFlag pTooltipFlag) { String key = String.format("tooltip.%s.%s", MODID, this); MutableComponent toolTip = Component.translatable(key); if (!toolTip.getString().equals(key)) { pTooltipComponents.add(toolTip.withStyle(ChatFormatting.DARK_BLUE)); - super.appendHoverText(pStack, pLevel, pTooltipComponents, pIsAdvanced); + super.appendHoverText(pStack, pContext, pTooltipComponents, pTooltipFlag); } } } diff --git a/src/main/java/com/jenny/enhancedexplosives/items/Dynamite.java b/src/main/java/com/jenny/enhancedexplosives/items/Dynamite.java index 3347067..8c9f1d8 100644 --- a/src/main/java/com/jenny/enhancedexplosives/items/Dynamite.java +++ b/src/main/java/com/jenny/enhancedexplosives/items/Dynamite.java @@ -13,7 +13,6 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.List; @@ -43,12 +42,12 @@ public class Dynamite extends Item { } @Override - public void appendHoverText(@NotNull ItemStack pStack, @Nullable Level pLevel, @NotNull List pTooltipComponents, @NotNull TooltipFlag pIsAdvanced) { + public void appendHoverText(@NotNull ItemStack pStack, @NotNull TooltipContext pContext, @NotNull List pTooltipComponents, @NotNull TooltipFlag pTooltipFlag) { String key = String.format("tooltip.%s.%s", MODID, this); MutableComponent toolTip = Component.translatable(key); if (!toolTip.getString().equals(key)) { pTooltipComponents.add(toolTip.withStyle(ChatFormatting.DARK_BLUE)); - super.appendHoverText(pStack, pLevel, pTooltipComponents, pIsAdvanced); + super.appendHoverText(pStack, pContext, pTooltipComponents, pTooltipFlag); } } } diff --git a/src/main/java/com/jenny/enhancedexplosives/items/items.java b/src/main/java/com/jenny/enhancedexplosives/items/items.java index 6647627..4aed8d3 100644 --- a/src/main/java/com/jenny/enhancedexplosives/items/items.java +++ b/src/main/java/com/jenny/enhancedexplosives/items/items.java @@ -1,16 +1,18 @@ package com.jenny.enhancedexplosives.items; -import com.jenny.enhancedexplosives.entities.arrows.baseArrow; import com.jenny.enhancedexplosives.entities.entities; +import net.minecraft.core.Direction; import net.minecraft.core.Position; -import net.minecraft.core.dispenser.AbstractProjectileDispenseBehavior; +import net.minecraft.core.dispenser.BlockSource; +import net.minecraft.core.dispenser.DefaultDispenseItemBehavior; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.projectile.AbstractArrow; -import net.minecraft.world.entity.projectile.Projectile; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ProjectileItem; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.DispenserBlock; +import net.minecraft.world.phys.Vec3; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; @@ -33,26 +35,38 @@ public class items { } public static void registerDispenser() { - class ArrowDispenseBehaviour extends AbstractProjectileDispenseBehavior { - private final EntityType arrowType; + class ArrowDispenseBehaviour extends DefaultDispenseItemBehavior { + private final ArrowAbstract.DispenseConfig dispenseConfig; + private final EntityType arrowType; - public ArrowDispenseBehaviour(EntityType arrow) { + public ArrowDispenseBehaviour(@NotNull ProjectileItem arrowItem, EntityType arrow) { + this.dispenseConfig = arrowItem.createDispenseConfig(); this.arrowType = arrow; } @Override - protected @NotNull Projectile getProjectile(@NotNull Level pLevel, @NotNull Position pPosition, @NotNull ItemStack pStack) { - baseArrow arrow = arrowType.create(pLevel); - assert arrow != null; - arrow.setPos(pPosition.x(), pPosition.y(), pPosition.z()); - arrow.pickup = AbstractArrow.Pickup.ALLOWED; - return arrow; + public @NotNull ItemStack execute(@NotNull BlockSource pBlockSource, @NotNull ItemStack pItem) { + Level level = pBlockSource.level(); + Direction dir = pBlockSource.state().getValue(DispenserBlock.FACING); + Position pos = this.dispenseConfig.positionFunction().getDispensePosition(pBlockSource, dir); + + Entity arrowEntity = arrowType.create(level); + assert arrowEntity != null; + arrowEntity.setPos(new Vec3(pos.x(), pos.y(), pos.z())); + arrowEntity.setDeltaMovement(dir.getStepX(), dir.getStepY(), dir.getStepZ()); + level.addFreshEntity(arrowEntity); + pItem.shrink(1); + return pItem; } } - DispenserBlock.registerBehavior(TNT_ARROW.get(), new ArrowDispenseBehaviour(entities.ARROW_TNT.get())); - DispenserBlock.registerBehavior(CONCUSSIVE_ARROW.get(), new ArrowDispenseBehaviour(entities.ARROW_CONCUSSIVE.get())); - DispenserBlock.registerBehavior(CARPET_ARROW.get(), new ArrowDispenseBehaviour(entities.ARROW_CARPET.get())); - DispenserBlock.registerBehavior(TUNNEL_ARROW.get(), new ArrowDispenseBehaviour(entities.ARROW_TUNNEL.get())); + DispenserBlock.registerBehavior(TNT_ARROW.get(), new ArrowDispenseBehaviour( + (ArrowAbstract) TNT_ARROW.get(), entities.ARROW_TNT.get())); + DispenserBlock.registerBehavior(CONCUSSIVE_ARROW.get(), new ArrowDispenseBehaviour( + (ArrowAbstract) TNT_ARROW.get(), entities.ARROW_CONCUSSIVE.get())); + DispenserBlock.registerBehavior(CARPET_ARROW.get(), new ArrowDispenseBehaviour( + (ArrowAbstract) CARPET_ARROW.get(), entities.ARROW_CARPET.get())); + DispenserBlock.registerBehavior(TUNNEL_ARROW.get(), new ArrowDispenseBehaviour( + (ArrowAbstract) TUNNEL_ARROW.get(), entities.ARROW_TUNNEL.get())); } }