From 76f69b581c6103a980decb973c5b291ec1e559ce Mon Sep 17 00:00:00 2001 From: cheaterpaul Date: Sun, 23 Jun 2024 16:00:42 +0200 Subject: [PATCH] update neoforge --- gradle.properties | 4 +-- .../de/teamlapen/vampirism/api/VEnums.java | 16 ++++++++++ .../teamlapen/vampirism/api/VReference.java | 10 +----- .../worldgen/biome/vampire_forest.json | 4 +-- .../java/de/teamlapen/vampirism/ModEnums.java | 8 +++++ .../de/teamlapen/vampirism/VampirismMod.java | 1 - .../blockentity/TentBlockEntity.java | 6 ++-- .../vampirism/client/ModClientEnums.java | 14 +++++++++ .../vampirism/client/VampirismModClient.java | 5 --- .../VampirismClientEntityRegistry.java | 3 +- .../command/test/InfoEntitiesCommand.java | 4 +-- .../teamlapen/vampirism/core/ModEntities.java | 30 +++++++++--------- .../teamlapen/vampirism/core/ModRecipes.java | 18 ++--------- .../entity/ModEntityEventHandler.java | 5 ++- .../vampirism/items/CrossbowArrowItem.java | 2 +- .../vampirism/items/ItemEventHandler.java | 6 ++-- .../vampirism/items/UmbrellaItem.java | 3 +- .../vampirism/items/VampireSwordItem.java | 1 + .../items/crossbow/VampirismCrossbowItem.java | 4 +-- .../EntityRenderDispatcherAccessor.java | 16 ++++++++++ .../resources/META-INF/enumextensions.json | 31 +++++++++++++++++++ .../resources/META-INF/neoforge.mods.toml | 1 + src/main/resources/vampirism.mixins.json | 5 +-- 23 files changed, 128 insertions(+), 69 deletions(-) create mode 100644 src/api/java/de/teamlapen/vampirism/api/VEnums.java create mode 100644 src/main/java/de/teamlapen/vampirism/ModEnums.java create mode 100644 src/main/java/de/teamlapen/vampirism/client/ModClientEnums.java create mode 100644 src/main/java/de/teamlapen/vampirism/mixin/client/accessor/EntityRenderDispatcherAccessor.java create mode 100644 src/main/resources/META-INF/enumextensions.json diff --git a/gradle.properties b/gradle.properties index c8397c067c..c14c99a382 100755 --- a/gradle.properties +++ b/gradle.properties @@ -6,8 +6,8 @@ org.gradle.debug=false # forge minecraft_version=1.21 minecraft_version_range=[1.21,1.22) -forge_version=21.0.8-beta -forge_version_range=[21.0.8-beta,) +forge_version=21.0.25-beta +forge_version_range=[21.0.25-beta,) loader_version_range=[1,) parchment_minecraft_version=1.20.6 parchment_mappings_version=2024.05.01 diff --git a/src/api/java/de/teamlapen/vampirism/api/VEnums.java b/src/api/java/de/teamlapen/vampirism/api/VEnums.java new file mode 100644 index 0000000000..991cc8b4b8 --- /dev/null +++ b/src/api/java/de/teamlapen/vampirism/api/VEnums.java @@ -0,0 +1,16 @@ +package de.teamlapen.vampirism.api; + +import net.minecraft.world.entity.MobCategory; +import net.neoforged.fml.common.asm.enumextension.EnumProxy; + +public class VEnums { + /** + * Hunter creatures are of this creature type. But when they are counted for spawning they belong to {@link net.minecraft.world.entity.MobCategory#MONSTER} + */ + public static final EnumProxy HUNTER_CATEGORY = new EnumProxy<>(MobCategory.class, "vampirism:hunter", 15, false, false, 128); + /** + * Vampire creatures are of this creature type. But when they are counted for spawning they belong to {@link net.minecraft.world.entity.MobCategory#MONSTER} + */ + public static final EnumProxy VAMPIRE_CATEGORY = new EnumProxy<>(MobCategory.class, "vampirism:vampire", 30, false, false, 128); + +} diff --git a/src/api/java/de/teamlapen/vampirism/api/VReference.java b/src/api/java/de/teamlapen/vampirism/api/VReference.java index 6122cfbcda..b64cfa89b5 100755 --- a/src/api/java/de/teamlapen/vampirism/api/VReference.java +++ b/src/api/java/de/teamlapen/vampirism/api/VReference.java @@ -7,7 +7,6 @@ import de.teamlapen.vampirism.api.util.VResourceLocation; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.MobCategory; import net.minecraft.world.level.material.Fluid; import net.neoforged.neoforge.common.PlantType; import net.neoforged.neoforge.registries.DeferredHolder; @@ -32,14 +31,7 @@ public class VReference { public static final PlantType VAMPIRE_PLANT_TYPE = PlantType.get("vampirism_vampire"); public static final Supplier BLOOD = DeferredHolder.create(Registries.FLUID, VResourceLocation.mod("blood")); - /** - * Hunter creatures are of this creature type. But when they are counted for spawning they belong to {@link MobCategory#MONSTER} - */ - public static MobCategory HUNTER_CREATURE_TYPE = MobCategory.create("vampirism_hunter", "vampirism_hunter", 15, false, false, 128); - /** - * Vampire creatures are of this creature type. But when they are counted for spawning they belong to {@link MobCategory#MONSTER} - */ - public static MobCategory VAMPIRE_CREATURE_TYPE = MobCategory.create("vampirism_vampire", "vampirism_vampire", 30, false, false, 128); + /** * Vampire Player Faction * Filled during pre-init. diff --git a/src/generated/resources/data/vampirism/worldgen/biome/vampire_forest.json b/src/generated/resources/data/vampirism/worldgen/biome/vampire_forest.json index 1f727f506d..a844b26a61 100644 --- a/src/generated/resources/data/vampirism/worldgen/biome/vampire_forest.json +++ b/src/generated/resources/data/vampirism/worldgen/biome/vampire_forest.json @@ -117,8 +117,8 @@ } ], "underground_water_creature": [], - "vampirism_hunter": [], - "vampirism_vampire": [], + "vampirism:hunter": [], + "vampirism:vampire": [], "water_ambient": [], "water_creature": [] }, diff --git a/src/main/java/de/teamlapen/vampirism/ModEnums.java b/src/main/java/de/teamlapen/vampirism/ModEnums.java new file mode 100644 index 0000000000..c1c4f54bd0 --- /dev/null +++ b/src/main/java/de/teamlapen/vampirism/ModEnums.java @@ -0,0 +1,8 @@ +package de.teamlapen.vampirism; + +import net.minecraft.world.inventory.RecipeBookType; +import net.neoforged.fml.common.asm.enumextension.EnumProxy; + +public class ModEnums { +// public static final EnumProxy WEAPON_TABLE_RECIPE_BOOK_TYPE = new EnumProxy<>(RecipeBookType.class); +} diff --git a/src/main/java/de/teamlapen/vampirism/VampirismMod.java b/src/main/java/de/teamlapen/vampirism/VampirismMod.java index 107d22e6ab..e571711f61 100755 --- a/src/main/java/de/teamlapen/vampirism/VampirismMod.java +++ b/src/main/java/de/teamlapen/vampirism/VampirismMod.java @@ -307,7 +307,6 @@ private void setup(final @NotNull FMLCommonSetupEvent event) { event.enqueueWork(ModVillage::villagerTradeSetup); event.enqueueWork(ModTiles::registerTileExtensionsUnsafe); event.enqueueWork(ModItems::registerDispenserBehaviourUnsafe); - ModRecipes.Types.init(); TelemetryCollector.execute(); } diff --git a/src/main/java/de/teamlapen/vampirism/blockentity/TentBlockEntity.java b/src/main/java/de/teamlapen/vampirism/blockentity/TentBlockEntity.java index ded96c6c33..d7551d5368 100644 --- a/src/main/java/de/teamlapen/vampirism/blockentity/TentBlockEntity.java +++ b/src/main/java/de/teamlapen/vampirism/blockentity/TentBlockEntity.java @@ -2,7 +2,7 @@ import de.teamlapen.lib.lib.util.SimpleSpawnerLogic; import de.teamlapen.lib.lib.util.UtilLib; -import de.teamlapen.vampirism.api.VReference; +import de.teamlapen.vampirism.api.VEnums; import de.teamlapen.vampirism.config.VampirismConfig; import de.teamlapen.vampirism.core.ModEntities; import de.teamlapen.vampirism.core.ModTiles; @@ -30,8 +30,8 @@ public class TentBlockEntity extends BlockEntity { public TentBlockEntity(@NotNull BlockPos pos, @NotNull BlockState state) { super(ModTiles.TENT.get(), pos, state); - this.spawnerLogicHunter = new SimpleSpawnerLogic<>(ModEntities.HUNTER.get()).setActivateRange(64).setSpawnRange(6).setMinSpawnDelay(600).setMaxSpawnDelay(1000).setMaxNearbyEntities(2).setDailyLimit(VampirismConfig.BALANCE.hunterTentMaxSpawn.get()).setLimitTotalEntities(VReference.HUNTER_CREATURE_TYPE).setOnSpawned(hunter -> hunter.makeCampHunter(this.worldPosition)); - this.spawnerLogicAdvancedHunter = new SimpleSpawnerLogic<>(ModEntities.ADVANCED_HUNTER.get()).setActivateRange(64).setSpawnRange(6).setMinSpawnDelay(1200).setMaxSpawnDelay(2000).setMaxNearbyEntities(1).setDailyLimit(1).setLimitTotalEntities(VReference.HUNTER_CREATURE_TYPE).setOnSpawned(hunter -> hunter.makeCampHunter(this.worldPosition)); + this.spawnerLogicHunter = new SimpleSpawnerLogic<>(ModEntities.HUNTER.get()).setActivateRange(64).setSpawnRange(6).setMinSpawnDelay(600).setMaxSpawnDelay(1000).setMaxNearbyEntities(2).setDailyLimit(VampirismConfig.BALANCE.hunterTentMaxSpawn.get()).setLimitTotalEntities(VEnums.HUNTER_CATEGORY.getValue()).setOnSpawned(hunter -> hunter.makeCampHunter(this.worldPosition)); + this.spawnerLogicAdvancedHunter = new SimpleSpawnerLogic<>(ModEntities.ADVANCED_HUNTER.get()).setActivateRange(64).setSpawnRange(6).setMinSpawnDelay(1200).setMaxSpawnDelay(2000).setMaxNearbyEntities(1).setDailyLimit(1).setLimitTotalEntities(VEnums.HUNTER_CATEGORY.getValue()).setOnSpawned(hunter -> hunter.makeCampHunter(this.worldPosition)); } public boolean isSpawner() { diff --git a/src/main/java/de/teamlapen/vampirism/client/ModClientEnums.java b/src/main/java/de/teamlapen/vampirism/client/ModClientEnums.java new file mode 100644 index 0000000000..23b730ba01 --- /dev/null +++ b/src/main/java/de/teamlapen/vampirism/client/ModClientEnums.java @@ -0,0 +1,14 @@ +package de.teamlapen.vampirism.client; + +import de.teamlapen.vampirism.core.ModBlocks; +import net.minecraft.client.RecipeBookCategories; +import net.minecraft.world.item.ItemStack; +import net.neoforged.fml.common.asm.enumextension.EnumProxy; + +import java.util.function.Supplier; + +public class ModClientEnums { + + public static final EnumProxy WEAPON_TABLE_RECIPE_BOOK_CATEGORY = new EnumProxy<>(RecipeBookCategories.class, (Supplier)() -> new ItemStack(ModBlocks.WEAPON_TABLE)); + +} diff --git a/src/main/java/de/teamlapen/vampirism/client/VampirismModClient.java b/src/main/java/de/teamlapen/vampirism/client/VampirismModClient.java index e6013abd52..450649a3f2 100644 --- a/src/main/java/de/teamlapen/vampirism/client/VampirismModClient.java +++ b/src/main/java/de/teamlapen/vampirism/client/VampirismModClient.java @@ -85,11 +85,6 @@ public void setupClient(@NotNull FMLClientSetupEvent event) { }); } - @SubscribeEvent - public void commonEvent(FMLCommonSetupEvent event) { - ModRecipes.Categories.init(); - } - public void onDataMapsUpdated(DataMapsUpdatedEvent event) { ((VampirismClientEntityRegistry)VampirismAPI.entityRegistry()).syncOverlays(); } diff --git a/src/main/java/de/teamlapen/vampirism/client/renderer/VampirismClientEntityRegistry.java b/src/main/java/de/teamlapen/vampirism/client/renderer/VampirismClientEntityRegistry.java index 08e3716831..6549b905a9 100644 --- a/src/main/java/de/teamlapen/vampirism/client/renderer/VampirismClientEntityRegistry.java +++ b/src/main/java/de/teamlapen/vampirism/client/renderer/VampirismClientEntityRegistry.java @@ -2,6 +2,7 @@ import de.teamlapen.vampirism.client.renderer.entity.layers.ConvertedVampireEntityLayer; import de.teamlapen.vampirism.entity.converted.VampirismEntityRegistry; +import de.teamlapen.vampirism.mixin.client.accessor.EntityRenderDispatcherAccessor; import de.teamlapen.vampirism.mixin.client.accessor.LivingEntityRendererAccessor; import net.minecraft.client.Minecraft; import net.minecraft.client.model.EntityModel; @@ -20,7 +21,7 @@ public VampirismClientEntityRegistry() { public > void syncOverlays() { for (EntityType type: getConvertibleOverlay().keySet()) { - LivingEntityRenderer render = (LivingEntityRenderer) Minecraft.getInstance().getEntityRenderDispatcher().renderers.get(type); + LivingEntityRenderer render = (LivingEntityRenderer) ((EntityRenderDispatcherAccessor)Minecraft.getInstance().getEntityRenderDispatcher()).renderers().get(type); if (render == null) { LOGGER.error("Did not find renderer for {}", type); continue; diff --git a/src/main/java/de/teamlapen/vampirism/command/test/InfoEntitiesCommand.java b/src/main/java/de/teamlapen/vampirism/command/test/InfoEntitiesCommand.java index 4f12335220..afb3d12e83 100644 --- a/src/main/java/de/teamlapen/vampirism/command/test/InfoEntitiesCommand.java +++ b/src/main/java/de/teamlapen/vampirism/command/test/InfoEntitiesCommand.java @@ -2,7 +2,7 @@ import com.mojang.brigadier.builder.ArgumentBuilder; import de.teamlapen.lib.lib.util.BasicCommand; -import de.teamlapen.vampirism.api.VReference; +import de.teamlapen.vampirism.api.VEnums; import it.unimi.dsi.fastutil.objects.Object2IntMap; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; @@ -25,7 +25,7 @@ public class InfoEntitiesCommand extends BasicCommand { private static int infoEntities(@NotNull CommandSourceStack commandSource, @NotNull ServerPlayer asPlayer) { NaturalSpawner.SpawnState densityManager = asPlayer.serverLevel().getChunkSource().getLastSpawnState(); Object2IntMap object2intmap = densityManager.getMobCategoryCounts(); - commandSource.sendSuccess(() -> Component.literal(String.format("Creature: %d (%d), Monster: %s (%s), Hunter: %s (%s), Vampire: %s (%s)", object2intmap.getOrDefault(MobCategory.CREATURE, 0), MobCategory.CREATURE.getMaxInstancesPerChunk(), object2intmap.getOrDefault(MobCategory.MONSTER, 0), MobCategory.MONSTER.getMaxInstancesPerChunk(), object2intmap.getOrDefault(VReference.HUNTER_CREATURE_TYPE, 0), VReference.HUNTER_CREATURE_TYPE.getMaxInstancesPerChunk(), object2intmap.getOrDefault(VReference.VAMPIRE_CREATURE_TYPE, 0), VReference.VAMPIRE_CREATURE_TYPE.getMaxInstancesPerChunk())), true); + commandSource.sendSuccess(() -> Component.literal(String.format("Creature: %d (%d), Monster: %s (%s), Hunter: %s (%s), Vampire: %s (%s)", object2intmap.getOrDefault(MobCategory.CREATURE, 0), MobCategory.CREATURE.getMaxInstancesPerChunk(), object2intmap.getOrDefault(MobCategory.MONSTER, 0), MobCategory.MONSTER.getMaxInstancesPerChunk(), object2intmap.getOrDefault(VEnums.HUNTER_CATEGORY.getValue(), 0), VEnums.HUNTER_CATEGORY.getValue().getMaxInstancesPerChunk(), object2intmap.getOrDefault(VEnums.VAMPIRE_CATEGORY.getValue(), 0), VEnums.VAMPIRE_CATEGORY.getValue().getMaxInstancesPerChunk())), true); return 0; } } diff --git a/src/main/java/de/teamlapen/vampirism/core/ModEntities.java b/src/main/java/de/teamlapen/vampirism/core/ModEntities.java index 0a462e91e3..11043ae2ab 100755 --- a/src/main/java/de/teamlapen/vampirism/core/ModEntities.java +++ b/src/main/java/de/teamlapen/vampirism/core/ModEntities.java @@ -4,7 +4,7 @@ import de.teamlapen.vampirism.REFERENCE; import de.teamlapen.vampirism.advancements.critereon.FactionSubPredicate; import de.teamlapen.vampirism.advancements.critereon.PlayerFactionSubPredicate; -import de.teamlapen.vampirism.api.VReference; +import de.teamlapen.vampirism.api.VEnums; import de.teamlapen.vampirism.api.VampirismRegistries; import de.teamlapen.vampirism.api.entity.convertible.Converter; import de.teamlapen.vampirism.datamaps.EntityExistsCondition; @@ -46,17 +46,17 @@ public class ModEntities { public static final DeferredRegister> ENTITY_SUB_PREDICATES = DeferredRegister.create(Registries.ENTITY_SUB_PREDICATE_TYPE, REFERENCE.MODID); public static final DeferredRegister> CONDITIONS = DeferredRegister.create(NeoForgeRegistries.Keys.CONDITION_CODECS, REFERENCE.MODID); - public static final DeferredHolder, EntityType> HUNTER = prepareEntityType("hunter", () -> EntityType.Builder.of(BasicHunterEntity::new, VReference.HUNTER_CREATURE_TYPE).sized(0.6F, 1.95F), true); - public static final DeferredHolder, EntityType> HUNTER_TRAINER = prepareEntityType("hunter_trainer", () -> EntityType.Builder.of(HunterTrainerEntity::new, VReference.HUNTER_CREATURE_TYPE).sized(0.6F, 1.95F), true); - public static final DeferredHolder, EntityType> ADVANCED_HUNTER = prepareEntityType("advanced_hunter", () -> EntityType.Builder.of(AdvancedHunterEntity::new, VReference.HUNTER_CREATURE_TYPE).sized(0.6F, 1.95F), true); - public static final DeferredHolder, EntityType> VAMPIRE_BARON = prepareEntityType("vampire_baron", () -> EntityType.Builder.of(VampireBaronEntity::new, VReference.VAMPIRE_CREATURE_TYPE).sized(0.6F, 1.95F), true); - public static final DeferredHolder, EntityType> VAMPIRE = prepareEntityType("vampire", () -> EntityType.Builder.of(BasicVampireEntity::new, VReference.VAMPIRE_CREATURE_TYPE).sized(0.6F, 1.95F), true); - public static final DeferredHolder, EntityType> ADVANCED_VAMPIRE = prepareEntityType("advanced_vampire", () -> EntityType.Builder.of(AdvancedVampireEntity::new, VReference.VAMPIRE_CREATURE_TYPE).sized(0.6F, 1.95F), true); + public static final DeferredHolder, EntityType> HUNTER = prepareEntityType("hunter", () -> EntityType.Builder.of(BasicHunterEntity::new, VEnums.HUNTER_CATEGORY.getValue()).sized(0.6F, 1.95F), true); + public static final DeferredHolder, EntityType> HUNTER_TRAINER = prepareEntityType("hunter_trainer", () -> EntityType.Builder.of(HunterTrainerEntity::new, VEnums.HUNTER_CATEGORY.getValue()).sized(0.6F, 1.95F), true); + public static final DeferredHolder, EntityType> ADVANCED_HUNTER = prepareEntityType("advanced_hunter", () -> EntityType.Builder.of(AdvancedHunterEntity::new, VEnums.HUNTER_CATEGORY.getValue()).sized(0.6F, 1.95F), true); + public static final DeferredHolder, EntityType> VAMPIRE_BARON = prepareEntityType("vampire_baron", () -> EntityType.Builder.of(VampireBaronEntity::new, VEnums.VAMPIRE_CATEGORY.getValue()).sized(0.6F, 1.95F), true); + public static final DeferredHolder, EntityType> VAMPIRE = prepareEntityType("vampire", () -> EntityType.Builder.of(BasicVampireEntity::new, VEnums.VAMPIRE_CATEGORY.getValue()).sized(0.6F, 1.95F), true); + public static final DeferredHolder, EntityType> ADVANCED_VAMPIRE = prepareEntityType("advanced_vampire", () -> EntityType.Builder.of(AdvancedVampireEntity::new, VEnums.VAMPIRE_CATEGORY.getValue()).sized(0.6F, 1.95F), true); public static final DeferredHolder, EntityType>> CONVERTED_CREATURE = prepareEntityType("converted_creature", () -> EntityType.Builder.of(ConvertedCreatureEntity::new, MobCategory.CREATURE), false); public static final DeferredHolder, EntityType> DUMMY_CREATURE = prepareEntityType("dummy_creature", () -> EntityType.Builder.of(DummyBittenAnimalEntity::new, MobCategory.CREATURE), true); public static final DeferredHolder, EntityType> BLINDING_BAT = prepareEntityType("blinding_bat", () -> EntityType.Builder.of(BlindingBatEntity::new, MobCategory.AMBIENT).sized(0.5F, 0.9F), true); - public static final DeferredHolder, EntityType> ADVANCED_HUNTER_IMOB = prepareEntityType("advanced_hunter_imob", () -> EntityType.Builder.of(AdvancedHunterEntity.IMob::new, VReference.HUNTER_CREATURE_TYPE).sized(0.6f, 1.95f), false); - public static final DeferredHolder, EntityType> ADVANCED_VAMPIRE_IMOB = prepareEntityType("advanced_vampire_imob", () -> EntityType.Builder.of(AdvancedVampireEntity.IMob::new, VReference.VAMPIRE_CREATURE_TYPE).sized(0.6f, 1.95f), false); + public static final DeferredHolder, EntityType> ADVANCED_HUNTER_IMOB = prepareEntityType("advanced_hunter_imob", () -> EntityType.Builder.of(AdvancedHunterEntity.IMob::new, VEnums.HUNTER_CATEGORY.getValue()).sized(0.6f, 1.95f), false); + public static final DeferredHolder, EntityType> ADVANCED_VAMPIRE_IMOB = prepareEntityType("advanced_vampire_imob", () -> EntityType.Builder.of(AdvancedVampireEntity.IMob::new, VEnums.VAMPIRE_CATEGORY.getValue()).sized(0.6f, 1.95f), false); public static final DeferredHolder, EntityType>> CONVERTED_CREATURE_IMOB = prepareEntityType("converted_creature_imob", () -> EntityType.Builder.of(ConvertedCreatureEntity.IMob::new, MobCategory.CREATURE), false); public static final DeferredHolder, EntityType> CONVERTED_SHEEP = prepareEntityType("converted_sheep", () -> EntityType.Builder.of(ConvertedSheepEntity::new, MobCategory.CREATURE).sized(0.9F, 1.3F), false); public static final DeferredHolder, EntityType> CONVERTED_COW = prepareEntityType("converted_cow", () -> EntityType.Builder.of(ConvertedCowEntity::new, MobCategory.CREATURE).sized(0.9F, 1.4F), false); @@ -66,17 +66,17 @@ public class ModEntities { public static final DeferredHolder, EntityType> PARTICLE_CLOUD = prepareEntityType("particle_cloud", () -> EntityType.Builder.of(AreaParticleCloudEntity::new, MobCategory.MISC).sized(6.0F, 0.5F).fireImmune(), false); public static final DeferredHolder, EntityType> SOUL_ORB = prepareEntityType("soul_orb", () -> EntityType.Builder.of(SoulOrbEntity::new, MobCategory.MISC).sized(0.25F, 0.25F).fireImmune(), false); public static final DeferredHolder, EntityType> THROWABLE_ITEM = prepareEntityType("throwable_item", () -> EntityType.Builder.of(ThrowableItemEntity::new, MobCategory.MISC).sized(0.25F, 0.25F), false); - public static final DeferredHolder, EntityType> VAMPIRE_IMOB = prepareEntityType("vampire_imob", () -> EntityType.Builder.of(BasicVampireEntity.IMob::new, VReference.VAMPIRE_CREATURE_TYPE).sized(0.6f, 1.95f), false); - public static final DeferredHolder, EntityType> HUNTER_IMOB = prepareEntityType("hunter_imob", () -> EntityType.Builder.of(BasicHunterEntity.IMob::new, VReference.HUNTER_CREATURE_TYPE).sized(0.6f, 1.95f), false); + public static final DeferredHolder, EntityType> VAMPIRE_IMOB = prepareEntityType("vampire_imob", () -> EntityType.Builder.of(BasicVampireEntity.IMob::new, VEnums.VAMPIRE_CATEGORY.getValue()).sized(0.6f, 1.95f), false); + public static final DeferredHolder, EntityType> HUNTER_IMOB = prepareEntityType("hunter_imob", () -> EntityType.Builder.of(BasicHunterEntity.IMob::new, VEnums.HUNTER_CATEGORY.getValue()).sized(0.6f, 1.95f), false); public static final DeferredHolder, EntityType> VILLAGER_ANGRY = prepareEntityType("villager_angry", () -> EntityType.Builder.of(AggressiveVillagerEntity::new, MobCategory.CREATURE).sized(0.6F, 1.95F), false); - public static final DeferredHolder, EntityType> VILLAGER_CONVERTED = prepareEntityType("villager_converted", () -> EntityType.Builder.of(ConvertedVillagerEntity::new, VReference.VAMPIRE_CREATURE_TYPE).sized(0.6F, 1.95F), true); + public static final DeferredHolder, EntityType> VILLAGER_CONVERTED = prepareEntityType("villager_converted", () -> EntityType.Builder.of(ConvertedVillagerEntity::new, VEnums.VAMPIRE_CATEGORY.getValue()).sized(0.6F, 1.95F), true); public static final DeferredHolder, EntityType> CONVERTED_HORSE = prepareEntityType("converted_horse", () -> EntityType.Builder.of(ConvertedHorseEntity::new, MobCategory.CREATURE).sized(1.3964844F, 1.6F), false); public static final DeferredHolder, EntityType> VAMPIRE_MINION = prepareEntityType("vampire_minion", () -> EntityType.Builder.of(VampireMinionEntity::new, MobCategory.CREATURE).sized(0.6f, 1.95f), false); public static final DeferredHolder, EntityType> CONVERTED_DONKEY = prepareEntityType("converted_donkey", () -> EntityType.Builder.of(ConvertedDonkeyEntity::new, MobCategory.CREATURE).sized(1.3964844F, 1.5F), false); public static final DeferredHolder, EntityType> CONVERTED_MULE = prepareEntityType("converted_mule", () -> EntityType.Builder.of(ConvertedMuleEntity::new, MobCategory.CREATURE).sized(1.3964844F, 1.5F), false); public static final DeferredHolder, EntityType> HUNTER_MINION = prepareEntityType("hunter_minion", () -> EntityType.Builder.of(HunterMinionEntity::new, MobCategory.CREATURE).sized(0.6f, 1.95f), false); - public static final DeferredHolder, EntityType> TASK_MASTER_VAMPIRE = prepareEntityType("task_master_vampire", () -> EntityType.Builder.of(VampireTaskMasterEntity::new, VReference.VAMPIRE_CREATURE_TYPE).sized(0.6f, 1.95f), true); - public static final DeferredHolder, EntityType> TASK_MASTER_HUNTER = prepareEntityType("task_master_hunter", () -> EntityType.Builder.of(HunterTaskMasterEntity::new, VReference.HUNTER_CREATURE_TYPE).sized(0.6f, 1.95f), true); + public static final DeferredHolder, EntityType> TASK_MASTER_VAMPIRE = prepareEntityType("task_master_vampire", () -> EntityType.Builder.of(VampireTaskMasterEntity::new, VEnums.VAMPIRE_CATEGORY.getValue()).sized(0.6f, 1.95f), true); + public static final DeferredHolder, EntityType> TASK_MASTER_HUNTER = prepareEntityType("task_master_hunter", () -> EntityType.Builder.of(HunterTaskMasterEntity::new, VEnums.HUNTER_CATEGORY.getValue()).sized(0.6f, 1.95f), true); public static final DeferredHolder, EntityType> dummy_sit_entity = prepareEntityType("dummy_sit_entity", () -> EntityType.Builder.of(SitEntity::new, MobCategory.MISC).sized(0.0001f, 0.0001f).setTrackingRange(256).setUpdateInterval(20), false); public static final DeferredHolder, EntityType> BOAT = prepareEntityType("boat", () -> EntityType.Builder.of(VampirismBoatEntity::new, MobCategory.MISC).sized(1.375F, 0.5625F).clientTrackingRange(10), false); public static final DeferredHolder, EntityType> CHEST_BOAT = prepareEntityType("chest_boat", () -> EntityType.Builder.of(VampirismChestBoatEntity::new, MobCategory.MISC).sized(1.375F, 0.5625F).clientTrackingRange(10), false); @@ -84,7 +84,7 @@ public class ModEntities { public static final DeferredHolder, EntityType> CONVERTED_GOAT = prepareEntityType("converted_goat", () -> EntityType.Builder.of(ConvertedGoatEntity::new, MobCategory.CREATURE).sized(0.9F, 1.3F), false); public static final DeferredHolder, EntityType> VULNERABLE_REMAINS_DUMMY = prepareEntityType("vulnerable_remains_dummy", () -> EntityType.Builder.of(VulnerableRemainsDummyEntity::new, MobCategory.MISC).sized(1.02f, 1.02f).setTrackingRange(10).setUpdateInterval(20), false); public static final DeferredHolder, EntityType> REMAINS_DEFENDER = prepareEntityType("remains_defender", () -> EntityType.Builder.of(RemainsDefenderEntity::new, MobCategory.MISC).sized(0.3f, 0.3f).setTrackingRange(10).setUpdateInterval(20), false); - public static final DeferredHolder, EntityType> GHOST = prepareEntityType("ghost", () -> EntityType.Builder.of(GhostEntity::new, VReference.VAMPIRE_CREATURE_TYPE).sized(0.35F, 0.5F).setTrackingRange(10).setUpdateInterval(20).fireImmune(), true); + public static final DeferredHolder, EntityType> GHOST = prepareEntityType("ghost", () -> EntityType.Builder.of(GhostEntity::new, VEnums.VAMPIRE_CATEGORY.getValue()).sized(0.35F, 0.5F).setTrackingRange(10).setUpdateInterval(20).fireImmune(), true); public static final DeferredHolder, EntityType> CONVERTED_CAMEL = prepareEntityType("converted_camel", () -> EntityType.Builder.of(ConvertedCamelEntity::new, MobCategory.CREATURE).sized(1.7F, 2.375F), false); diff --git a/src/main/java/de/teamlapen/vampirism/core/ModRecipes.java b/src/main/java/de/teamlapen/vampirism/core/ModRecipes.java index 2aca35c654..db0db004d5 100644 --- a/src/main/java/de/teamlapen/vampirism/core/ModRecipes.java +++ b/src/main/java/de/teamlapen/vampirism/core/ModRecipes.java @@ -3,11 +3,10 @@ import com.mojang.serialization.MapCodec; import de.teamlapen.vampirism.REFERENCE; import de.teamlapen.vampirism.api.items.IWeaponTableRecipe; +import de.teamlapen.vampirism.client.ModClientEnums; import de.teamlapen.vampirism.recipes.*; import net.minecraft.client.RecipeBookCategories; import net.minecraft.core.registries.Registries; -import net.minecraft.world.inventory.RecipeBookType; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.item.crafting.ShapedRecipe; @@ -55,19 +54,6 @@ public class ModRecipes { public static final DeferredHolder, MapCodec> CONFIG_CONDITION = CONDITION_CODECS.register("config", () -> ConfigCondition.CODEC); - public static class Types { - public static final RecipeBookType WEAPON_TABLE_TYPE = RecipeBookType.create(WEAPONTABLE_CRAFTING_TYPE.getKey().location().toString()); - public static void init() { - - } - } - public static class Categories { - public static final RecipeBookCategories WEAPON_TABLE = RecipeBookCategories.create(WEAPONTABLE_CRAFTING_TYPE.getKey().location().toString(), new ItemStack(ModBlocks.WEAPON_TABLE)); - public static void init() { - - } - } - static void register(@NotNull IEventBus bus) { RECIPE_TYPES.register(bus); RECIPE_SERIALIZERS.register(bus); @@ -77,7 +63,7 @@ static void register(@NotNull IEventBus bus) { static void registerCategories(RegisterRecipeBookCategoriesEvent event) { event.registerRecipeCategoryFinder(ALCHEMICAL_CAULDRON_TYPE.get(), holder -> RecipeBookCategories.UNKNOWN); event.registerRecipeCategoryFinder(ALCHEMICAL_TABLE_TYPE.get(), holder -> RecipeBookCategories.UNKNOWN); - event.registerRecipeCategoryFinder(WEAPONTABLE_CRAFTING_TYPE.get(), holder -> Categories.WEAPON_TABLE); + event.registerRecipeCategoryFinder(WEAPONTABLE_CRAFTING_TYPE.get(), holder -> ModClientEnums.WEAPON_TABLE_RECIPE_BOOK_CATEGORY.getValue()); } } diff --git a/src/main/java/de/teamlapen/vampirism/entity/ModEntityEventHandler.java b/src/main/java/de/teamlapen/vampirism/entity/ModEntityEventHandler.java index ea189c18fd..7b192ff876 100755 --- a/src/main/java/de/teamlapen/vampirism/entity/ModEntityEventHandler.java +++ b/src/main/java/de/teamlapen/vampirism/entity/ModEntityEventHandler.java @@ -1,10 +1,10 @@ package de.teamlapen.vampirism.entity; +import de.teamlapen.vampirism.api.VEnums; import de.teamlapen.vampirism.api.VReference; import de.teamlapen.vampirism.api.difficulty.Difficulty; import de.teamlapen.vampirism.api.difficulty.IAdjustableLevel; import de.teamlapen.vampirism.api.entity.IExtendedCreatureVampirism; -import de.teamlapen.vampirism.api.items.IItemWithTier; import de.teamlapen.vampirism.api.items.oil.IWeaponOil; import de.teamlapen.vampirism.blockentity.TotemBlockEntity; import de.teamlapen.vampirism.config.VampirismConfig; @@ -56,7 +56,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.HashSet; import java.util.Optional; @@ -105,7 +104,7 @@ public void onFinalizeSpawn(@NotNull FinalizeSpawnEvent event) { if (!event.getLevel().hasChunkAt(pos)) return; BlockState blockState = event.getLevel().getBlockState(pos); - if (blockState.is(ModTags.Blocks.NO_SPAWN) || (blockState.is(ModTags.Blocks.VAMPIRE_SPAWN) && event.getEntity().getClassification(false) != VReference.VAMPIRE_CREATURE_TYPE)) { + if (blockState.is(ModTags.Blocks.NO_SPAWN) || (blockState.is(ModTags.Blocks.VAMPIRE_SPAWN) && event.getEntity().getClassification(false) != VEnums.VAMPIRE_CATEGORY.getValue())) { event.setSpawnCancelled(true); } } diff --git a/src/main/java/de/teamlapen/vampirism/items/CrossbowArrowItem.java b/src/main/java/de/teamlapen/vampirism/items/CrossbowArrowItem.java index 7f5263f068..8925554376 100644 --- a/src/main/java/de/teamlapen/vampirism/items/CrossbowArrowItem.java +++ b/src/main/java/de/teamlapen/vampirism/items/CrossbowArrowItem.java @@ -120,7 +120,7 @@ public void onHitBlock(ItemStack arrow, @NotNull BlockPos blockPos, IEntityCross if (shootingEntity != null) { if (!shootingEntity.level().isClientSide && shootingEntity.isAlive()) { if (shootingEntity instanceof ServerPlayer player) { - if (player.connection.connection.isConnected() && player.level() == entity.level() && !player.isSleeping()) { + if (player.connection.getConnection().isConnected() && player.level() == entity.level() && !player.isSleeping()) { if (player.isPassenger()) { player.stopRiding(); diff --git a/src/main/java/de/teamlapen/vampirism/items/ItemEventHandler.java b/src/main/java/de/teamlapen/vampirism/items/ItemEventHandler.java index 6243b12abd..20e6fdbdff 100644 --- a/src/main/java/de/teamlapen/vampirism/items/ItemEventHandler.java +++ b/src/main/java/de/teamlapen/vampirism/items/ItemEventHandler.java @@ -18,9 +18,9 @@ public class ItemEventHandler { @SubscribeEvent public static void onItemAttributeModifier(ItemAttributeModifierEvent event) { ItemStack stack = event.getItemStack(); - if (stack.getItem() instanceof VampireSwordItem sword && event.getSlotType() == EquipmentSlot.MAINHAND) { - event.addModifier(Attributes.ATTACK_DAMAGE, new AttributeModifier(BuiltInRegistries.ITEM.getKey(sword), sword.getAttackDamageModifier(stack), AttributeModifier.Operation.ADD_VALUE)); - event.addModifier(Attributes.ATTACK_SPEED, new AttributeModifier(BuiltInRegistries.ITEM.getKey(sword), sword.getSpeedModifier(stack), AttributeModifier.Operation.ADD_VALUE)); + if (stack.getItem() instanceof VampireSwordItem sword) { + event.addModifier(Attributes.ATTACK_DAMAGE, new AttributeModifier(BuiltInRegistries.ITEM.getKey(sword), sword.getAttackDamageModifier(stack), AttributeModifier.Operation.ADD_VALUE), EquipmentSlotGroup.MAINHAND); + event.addModifier(Attributes.ATTACK_SPEED, new AttributeModifier(BuiltInRegistries.ITEM.getKey(sword), sword.getSpeedModifier(stack), AttributeModifier.Operation.ADD_VALUE), EquipmentSlotGroup.MAINHAND); } } } diff --git a/src/main/java/de/teamlapen/vampirism/items/UmbrellaItem.java b/src/main/java/de/teamlapen/vampirism/items/UmbrellaItem.java index 37acec3d90..7295da78ae 100644 --- a/src/main/java/de/teamlapen/vampirism/items/UmbrellaItem.java +++ b/src/main/java/de/teamlapen/vampirism/items/UmbrellaItem.java @@ -32,8 +32,7 @@ public UmbrellaItem() { } @Override - public @NotNull ItemAttributeModifiers getAttributeModifiers(@NotNull ItemStack stack) { + public ItemAttributeModifiers getDefaultAttributeModifiers(ItemStack stack) { return mainHandAttributes.get(); } - } diff --git a/src/main/java/de/teamlapen/vampirism/items/VampireSwordItem.java b/src/main/java/de/teamlapen/vampirism/items/VampireSwordItem.java index b435ca9e81..9f5a749482 100644 --- a/src/main/java/de/teamlapen/vampirism/items/VampireSwordItem.java +++ b/src/main/java/de/teamlapen/vampirism/items/VampireSwordItem.java @@ -28,6 +28,7 @@ import de.teamlapen.vampirism.util.ToolMaterial; import net.minecraft.ChatFormatting; import net.minecraft.core.component.DataComponents; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; diff --git a/src/main/java/de/teamlapen/vampirism/items/crossbow/VampirismCrossbowItem.java b/src/main/java/de/teamlapen/vampirism/items/crossbow/VampirismCrossbowItem.java index 2f270ecffa..8234482a00 100644 --- a/src/main/java/de/teamlapen/vampirism/items/crossbow/VampirismCrossbowItem.java +++ b/src/main/java/de/teamlapen/vampirism/items/crossbow/VampirismCrossbowItem.java @@ -135,8 +135,8 @@ protected void onShoot(LivingEntity shooter, ItemStack crossbow) { } @Override - public AbstractArrow customArrow(AbstractArrow arrow, ItemStack stack) { - if (ignoreHurtTimer(stack) && arrow instanceof IEntityCrossbowArrow) { + public AbstractArrow customArrow(AbstractArrow arrow, ItemStack projectileStack, ItemStack weapon) { + if (ignoreHurtTimer(projectileStack) && arrow instanceof IEntityCrossbowArrow) { ((IEntityCrossbowArrow)arrow).setIgnoreHurtTimer(); } return arrow; diff --git a/src/main/java/de/teamlapen/vampirism/mixin/client/accessor/EntityRenderDispatcherAccessor.java b/src/main/java/de/teamlapen/vampirism/mixin/client/accessor/EntityRenderDispatcherAccessor.java new file mode 100644 index 0000000000..c7a77f2f56 --- /dev/null +++ b/src/main/java/de/teamlapen/vampirism/mixin/client/accessor/EntityRenderDispatcherAccessor.java @@ -0,0 +1,16 @@ +package de.teamlapen.vampirism.mixin.client.accessor; + +import net.minecraft.client.renderer.entity.EntityRenderDispatcher; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.world.entity.EntityType; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(EntityRenderDispatcher.class) +public interface EntityRenderDispatcherAccessor { + + @Accessor("renderers") + Map, EntityRenderer> renderers(); +} diff --git a/src/main/resources/META-INF/enumextensions.json b/src/main/resources/META-INF/enumextensions.json new file mode 100644 index 0000000000..8e4421840c --- /dev/null +++ b/src/main/resources/META-INF/enumextensions.json @@ -0,0 +1,31 @@ +{ + "entries": [ + { + "enum": "net/minecraft/world/entity/MobCategory", + "name": "VAMPIRISM_HUNTER", + "constructor": "(Ljava/lang/String;IZZI)V", + "parameters": { + "class": "de/teamlapen/vampirism/api/VEnums", + "field": "HUNTER_CATEGORY" + } + }, + { + "enum": "net/minecraft/world/entity/MobCategory", + "name": "VAMPIRISM_VAMPIRE", + "constructor": "(Ljava/lang/String;IZZI)V", + "parameters": { + "class": "de/teamlapen/vampirism/api/VEnums", + "field": "VAMPIRE_CATEGORY" + } + }, + { + "enum": "net/minecraft/client/RecipeBookCategories", + "name": "VAMPIRISM_WEAPON_TABLE", + "constructor": "(Ljava/util/function/Supplier;)V", + "parameters": { + "class": "de/teamlapen/vampirism/client/ModClientEnums", + "field": "WEAPON_TABLE_RECIPE_BOOK_CATEGORY" + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/META-INF/neoforge.mods.toml b/src/main/resources/META-INF/neoforge.mods.toml index c92444174c..57f47bee73 100755 --- a/src/main/resources/META-INF/neoforge.mods.toml +++ b/src/main/resources/META-INF/neoforge.mods.toml @@ -43,6 +43,7 @@ config = "vampirism.mixins.json" displayURL="${mod_url}" logoFile="logo.png" updateJSONURL="https://api.modrinth.com/updates/vampirism/forge_updates.json" + enumExtensions="META-INF/enumextensions.json" [[dependencies.${mod_id}]] modId="neoforge" type="required" diff --git a/src/main/resources/vampirism.mixins.json b/src/main/resources/vampirism.mixins.json index 29390fb9e8..219752d1b3 100644 --- a/src/main/resources/vampirism.mixins.json +++ b/src/main/resources/vampirism.mixins.json @@ -65,12 +65,13 @@ "client.accessor.BossOverlayGuiAccessor", "client.accessor.CameraAccessor", "client.accessor.EffectRenderingInventoryScreenAccessor", + "client.accessor.EntityRenderDispatcherAccessor", "client.accessor.HumanoidArmorLayerAccessor", "client.accessor.LivingEntityRendererAccessor", + "client.accessor.MobEffectAccessor", "client.accessor.ParticleEngineAccessor", "client.accessor.StatsScreenAccessor", - "client.accessor.VillagerModelAccessor", - "client.accessor.MobEffectAccessor" + "client.accessor.VillagerModelAccessor" ], "injectors": { "defaultRequire": 1