From 11aeb70185720957a54ba34475c9a6745308f3cb Mon Sep 17 00:00:00 2001 From: Maxx <53229958+MBatt1@users.noreply.github.com> Date: Fri, 9 Aug 2024 12:31:00 -0500 Subject: [PATCH] argh! --- .../net/id/paradiselost/ParadiseLost.java | 9 +- .../entity/ParadiseLostEntityRenderers.java | 2 - .../texture/ParadiseLostTextures.java | 8 - .../rendering/ui/BloodstoneHUDRenderer.java | 14 +- .../id/paradiselost/commands/LoreCommand.java | 83 ---- .../commands/ParadiseLostCommands.java | 1 - .../component/ParadiseLostComponents.java | 3 - .../entities/passive/ambyst/AmbystBrain.java | 11 +- .../entities/passive/ambyst/RunToLogTask.java | 3 +- .../passive/ambyst/StayInLogTask.java | 3 +- .../items/ParadiseLostItemGroups.java | 31 +- .../paradiselost/items/ParadiseLostItems.java | 23 +- .../items/misc/BookOfLoreItem.java | 52 -- .../net/id/paradiselost/lore/LoreEntry.java | 64 --- .../net/id/paradiselost/lore/LoreState.java | 222 --------- .../net/id/paradiselost/lore/LoreStatus.java | 49 -- .../id/paradiselost/lore/LoreTriggerType.java | 6 - .../net/id/paradiselost/lore/LoreType.java | 46 -- .../paradiselost/lore/ParadiseLostLore.java | 53 -- .../client/render/CloudRendererMixin.java | 7 +- .../render/InGameOverlayRendererMixin.java | 38 +- .../mixin/entity/PlayerEntityMixin.java | 5 +- .../entity/ServerPlayerEntity$Anon1Mixin.java | 25 - .../registry/ParadiseLostRegistries.java | 21 - .../registry/TrinketSlotRegistry.java | 6 - .../id/paradiselost/screen/LoreScreen.java | 456 ------------------ .../screen/ParadiseLostScreens.java | 6 +- .../screen/handler/LoreHandler.java | 26 - .../screen/util/FloatyDrawableHelper.java | 249 ---------- .../tag/ParadiseLostStructureTags.java | 1 - .../util/ParadiseLostDamageSources.java | 15 - .../util/ParadiseLostDamageTypes.java | 20 + .../util/ParadiseLostSoundEvents.java | 2 +- .../ParadiseLostStructureFeatures.java | 10 +- .../bloodstone => mob_effect}/affinity.png | Bin .../{hud/bloodstone => mob_effect}/race.png | Bin .../data/paradise_lost/damage_type/fall.json | 5 + .../tags/damage_type/bypasses_armor.json | 6 + 38 files changed, 95 insertions(+), 1486 deletions(-) delete mode 100644 src/main/java/net/id/paradiselost/commands/LoreCommand.java delete mode 100644 src/main/java/net/id/paradiselost/items/misc/BookOfLoreItem.java delete mode 100644 src/main/java/net/id/paradiselost/lore/LoreEntry.java delete mode 100644 src/main/java/net/id/paradiselost/lore/LoreState.java delete mode 100644 src/main/java/net/id/paradiselost/lore/LoreStatus.java delete mode 100644 src/main/java/net/id/paradiselost/lore/LoreTriggerType.java delete mode 100644 src/main/java/net/id/paradiselost/lore/LoreType.java delete mode 100644 src/main/java/net/id/paradiselost/lore/ParadiseLostLore.java delete mode 100644 src/main/java/net/id/paradiselost/mixin/entity/ServerPlayerEntity$Anon1Mixin.java delete mode 100644 src/main/java/net/id/paradiselost/registry/ParadiseLostRegistries.java delete mode 100644 src/main/java/net/id/paradiselost/registry/TrinketSlotRegistry.java delete mode 100644 src/main/java/net/id/paradiselost/screen/LoreScreen.java delete mode 100644 src/main/java/net/id/paradiselost/screen/handler/LoreHandler.java delete mode 100644 src/main/java/net/id/paradiselost/screen/util/FloatyDrawableHelper.java delete mode 100644 src/main/java/net/id/paradiselost/util/ParadiseLostDamageSources.java create mode 100644 src/main/java/net/id/paradiselost/util/ParadiseLostDamageTypes.java rename src/main/resources/assets/paradise_lost/textures/{hud/bloodstone => mob_effect}/affinity.png (100%) rename src/main/resources/assets/paradise_lost/textures/{hud/bloodstone => mob_effect}/race.png (100%) create mode 100644 src/main/resources/data/paradise_lost/damage_type/fall.json create mode 100644 src/main/resources/data/paradise_lost/tags/damage_type/bypasses_armor.json diff --git a/src/main/java/net/id/paradiselost/ParadiseLost.java b/src/main/java/net/id/paradiselost/ParadiseLost.java index 9949718ad..60aa6a57b 100644 --- a/src/main/java/net/id/paradiselost/ParadiseLost.java +++ b/src/main/java/net/id/paradiselost/ParadiseLost.java @@ -20,18 +20,17 @@ import net.id.paradiselost.commands.ParadiseLostCommands; import net.id.paradiselost.entities.ParadiseLostEntityTypes; import net.id.paradiselost.entities.passive.moa.MoaRaces; +import net.id.paradiselost.items.ParadiseLostItemGroups; import net.id.paradiselost.items.ParadiseLostItems; -import net.id.paradiselost.lore.ParadiseLostLore; import net.id.paradiselost.recipe.ParadiseLostRecipeTypes; -import net.id.paradiselost.registry.ParadiseLostRegistries; import net.id.paradiselost.screen.ParadiseLostScreens; +import net.id.paradiselost.util.ParadiseLostDamageTypes; import net.id.paradiselost.util.ParadiseLostSoundEvents; import net.id.paradiselost.world.ParadiseLostGameRules; import net.id.paradiselost.world.dimension.ParadiseLostBiomes; import net.id.paradiselost.world.dimension.ParadiseLostDimension; import net.id.paradiselost.world.feature.ParadiseLostFeatures; import net.id.paradiselost.world.gen.carver.ParadiseLostCarvers; -import net.minecraft.block.EnchantingTableBlock; import net.minecraft.util.Identifier; import org.slf4j.Logger; @@ -75,7 +74,7 @@ public static Identifier locate(String location) { @Override public void onInitialize() { - ParadiseLostRegistries.init(); + ParadiseLostDamageTypes.init(); ParadiseLostCarvers.init(); ParadiseLostFeatures.init(); ParadiseLostBiomes.init(); @@ -85,6 +84,7 @@ public void onInitialize() { ParadiseLostBlocks.init(); ParadiseLostEntityTypes.init(); ParadiseLostItems.init(); + ParadiseLostItemGroups.init(); ParadiseLostBlockEntityTypes.init(); ParadiseLostRecipeTypes.init(); ParadiseLostCommands.init(); @@ -92,7 +92,6 @@ public void onInitialize() { ParadiseLostSoundEvents.init(); MoaRaces.init(); ParadiseLostScreens.init(); - ParadiseLostLore.init(); ParadiseLostParticles.init(); ServerLifecycleEvents.SERVER_STARTED.register(server -> { diff --git a/src/main/java/net/id/paradiselost/client/rendering/entity/ParadiseLostEntityRenderers.java b/src/main/java/net/id/paradiselost/client/rendering/entity/ParadiseLostEntityRenderers.java index 4a27a29c2..3aa71b7d1 100644 --- a/src/main/java/net/id/paradiselost/client/rendering/entity/ParadiseLostEntityRenderers.java +++ b/src/main/java/net/id/paradiselost/client/rendering/entity/ParadiseLostEntityRenderers.java @@ -3,12 +3,10 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry; -import net.id.incubus_core.blocklikeentities.api.client.BlockLikeEntityRenderer; import net.id.paradiselost.client.rendering.entity.hostile.EnvoyEntityRenderer; import net.id.paradiselost.client.rendering.entity.passive.MoaEntityRenderer; import net.id.paradiselost.entities.ParadiseLostEntityTypes; import net.minecraft.client.render.entity.EntityRendererFactory; -import net.minecraft.client.render.entity.EntityRenderers; import net.minecraft.client.render.entity.FlyingItemEntityRenderer; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; diff --git a/src/main/java/net/id/paradiselost/client/rendering/texture/ParadiseLostTextures.java b/src/main/java/net/id/paradiselost/client/rendering/texture/ParadiseLostTextures.java index 40a3910b5..c25076744 100644 --- a/src/main/java/net/id/paradiselost/client/rendering/texture/ParadiseLostTextures.java +++ b/src/main/java/net/id/paradiselost/client/rendering/texture/ParadiseLostTextures.java @@ -2,10 +2,6 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.event.client.ClientSpriteRegistryCallback; -import net.minecraft.util.Identifier; - -import static net.id.paradiselost.ParadiseLost.locate; @Environment(EnvType.CLIENT) public final class ParadiseLostTextures { @@ -13,9 +9,5 @@ private ParadiseLostTextures() { } public static void initClient() { - ClientSpriteRegistryCallback.event(new Identifier("textures/atlas/mob_effects.png")).register((atlasTexture, registry) -> { - registry.register(locate("hud/bloodstone/affinity")); - registry.register(locate("hud/bloodstone/race")); - }); } } diff --git a/src/main/java/net/id/paradiselost/client/rendering/ui/BloodstoneHUDRenderer.java b/src/main/java/net/id/paradiselost/client/rendering/ui/BloodstoneHUDRenderer.java index 47b7a4ded..11eae3b62 100644 --- a/src/main/java/net/id/paradiselost/client/rendering/ui/BloodstoneHUDRenderer.java +++ b/src/main/java/net/id/paradiselost/client/rendering/ui/BloodstoneHUDRenderer.java @@ -16,6 +16,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; import net.minecraft.text.Text; +import net.minecraft.util.Identifier; import net.minecraft.util.Pair; import net.minecraft.util.hit.EntityHitResult; import net.minecraft.util.hit.HitResult; @@ -84,8 +85,9 @@ private static void renderCherine(MatrixStack matrixStack, MinecraftClient clien private static void renderOlvite(MatrixStack matrixStack, MinecraftClient client, BloodstoneCapturedData bloodstoneCapturedData) { StatusEffectSpriteManager statusEffectSpriteManager = client.getStatusEffectSpriteManager(); - Sprite affinitySprite = statusEffectSpriteManager.getSprite(StatusEffects.BAD_OMEN).getAtlas().getSprite(ParadiseLost.locate("hud/bloodstone/affinity")); - Sprite raceSprite = statusEffectSpriteManager.getSprite(StatusEffects.BAD_OMEN).getAtlas().getSprite(ParadiseLost.locate("hud/bloodstone/race")); + var effectAtlas = client.getSpriteAtlas(new Identifier("textures/atlas/mob_effects.png")); + Sprite affinitySprite = effectAtlas.apply(ParadiseLost.locate("affinity")); + Sprite raceSprite = effectAtlas.apply(ParadiseLost.locate("race")); renderRing(matrixStack, 0, 0); renderText(matrixStack, client, bloodstoneCapturedData.name, 0, -80); @@ -142,7 +144,7 @@ private static void renderRing(MatrixStack matrixStack, int offsetX, int offsetY } private static void renderIconWText(MatrixStack matrixStack, MinecraftClient client, Sprite sprite, Text text, int offsetX, int offsetY) { - int totalWidth = ((sprite.getWidth() + 2 + client.textRenderer.getWidth(text))); + int totalWidth = ((sprite.getContents().getWidth()) + 2 + client.textRenderer.getWidth(text)); int totalHeight = client.textRenderer.fontHeight / 2; int startX = offsetX; @@ -152,10 +154,10 @@ private static void renderIconWText(MatrixStack matrixStack, MinecraftClient cli startX = (offsetX - totalWidth); } - RenderSystem.setShaderTexture(0, sprite.getAtlas().getId()); + RenderSystem.setShaderTexture(0, sprite.getAtlasId()); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1); - DrawableHelper.drawSprite(matrixStack, startX, offsetY - 9, client.inGameHud.getZOffset(), 18, 18, sprite); - client.textRenderer.drawWithShadow(matrixStack, text, startX + sprite.getWidth() + 2, offsetY - totalHeight, 14737632); + DrawableHelper.drawSprite(matrixStack, startX, offsetY - 9, 0, 18, 18, sprite); // 0 z correct? + client.textRenderer.drawWithShadow(matrixStack, text, startX + sprite.getContents().getWidth() + 2, offsetY - totalHeight, 14737632); } private static void renderText(MatrixStack matrixStack, MinecraftClient client, Text text, int offsetX, int offsetY) { diff --git a/src/main/java/net/id/paradiselost/commands/LoreCommand.java b/src/main/java/net/id/paradiselost/commands/LoreCommand.java deleted file mode 100644 index cd9aaffe0..000000000 --- a/src/main/java/net/id/paradiselost/commands/LoreCommand.java +++ /dev/null @@ -1,83 +0,0 @@ -package net.id.paradiselost.commands; - -import com.mojang.brigadier.CommandDispatcher; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import com.mojang.brigadier.suggestion.SuggestionProvider; -import net.id.paradiselost.component.ParadiseLostComponents; -import net.id.paradiselost.lore.LoreStatus; -import net.id.paradiselost.registry.ParadiseLostRegistries; -import net.minecraft.command.argument.IdentifierArgumentType; -import net.minecraft.server.command.ServerCommandSource; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; - -import static net.minecraft.server.command.CommandManager.argument; -import static net.minecraft.server.command.CommandManager.literal; - -final class LoreCommand { - private LoreCommand() { - } - - private static final SuggestionProvider LORE_SUGGESTER = (context, builder) -> { - ParadiseLostRegistries.LORE_REGISTRY.getIds().forEach((id) -> builder.suggest(id.toString())); - return builder.buildFuture(); - }; - - public static void register(CommandDispatcher dispatcher) { - dispatcher.register(literal("paradiseLostLore") - .requires((source) -> source.hasPermissionLevel(2)) - .then(literal("grant") - .then(argument("id", IdentifierArgumentType.identifier()) - .suggests(LORE_SUGGESTER) - .executes((context) -> executeGrant(context.getSource(), IdentifierArgumentType.getIdentifier(context, "id"))) - ) - ) - .then(literal("revoke") - .then(argument("id", IdentifierArgumentType.identifier()) - .suggests(LORE_SUGGESTER) - .executes((context) -> executeRevoke(context.getSource(), IdentifierArgumentType.getIdentifier(context, "id"))) - ) - ) - .then(literal("get") - .then(argument("id", IdentifierArgumentType.identifier()) - .suggests(LORE_SUGGESTER) - .executes((context) -> executeGet(context.getSource(), IdentifierArgumentType.getIdentifier(context, "id"))) - ) - ) - ); - } - - private static int executeGrant(ServerCommandSource source, Identifier id) throws CommandSyntaxException { - var player = source.getPlayer(); - var state = ParadiseLostComponents.LORE_STATE.get(player); - var status = state.getLoreStatus(id); - if (status == LoreStatus.UNLOCKED) { - state.setLoreStatus(id, LoreStatus.COMPLETED); - return 1; - } else { - return 0; - } - } - - private static int executeRevoke(ServerCommandSource source, Identifier id) throws CommandSyntaxException { - var player = source.getPlayer(); - var state = ParadiseLostComponents.LORE_STATE.get(player); - var status = state.getLoreStatus(id); - if (status == LoreStatus.COMPLETED) { - state.setLoreStatus(id, LoreStatus.UNLOCKED); - return 1; - } else { - return 0; - } - } - - private static int executeGet(ServerCommandSource source, Identifier id) throws CommandSyntaxException { - var player = source.getPlayer(); - var state = ParadiseLostComponents.LORE_STATE.get(player); - var status = state.getLoreStatus(id); - String sourceStr = status.getName(); - // make this translatable - source.sendFeedback(Text.translatable("commands.paradise_lost.lore.get." + sourceStr), false); - return status.ordinal(); - } -} diff --git a/src/main/java/net/id/paradiselost/commands/ParadiseLostCommands.java b/src/main/java/net/id/paradiselost/commands/ParadiseLostCommands.java index dbe279238..27eb89854 100644 --- a/src/main/java/net/id/paradiselost/commands/ParadiseLostCommands.java +++ b/src/main/java/net/id/paradiselost/commands/ParadiseLostCommands.java @@ -12,7 +12,6 @@ public static void init() { register(MoaEggCommand::register); register(MoaStatCommand::register); register(FloatingBlockCommand::register); - register(LoreCommand::register); } private static void register(Consumer> command) { diff --git a/src/main/java/net/id/paradiselost/component/ParadiseLostComponents.java b/src/main/java/net/id/paradiselost/component/ParadiseLostComponents.java index 74406c2cc..749be3a04 100644 --- a/src/main/java/net/id/paradiselost/component/ParadiseLostComponents.java +++ b/src/main/java/net/id/paradiselost/component/ParadiseLostComponents.java @@ -7,16 +7,13 @@ import dev.onyxstudios.cca.api.v3.entity.RespawnCopyStrategy; import net.id.paradiselost.ParadiseLost; import net.id.paradiselost.entities.passive.moa.MoaEntity; -import net.id.paradiselost.lore.LoreState; public class ParadiseLostComponents implements EntityComponentInitializer { public static final ComponentKey MOA_GENETICS_KEY = ComponentRegistry.getOrCreate(ParadiseLost.locate("moa_genetics"), MoaGenes.class); - public static final ComponentKey LORE_STATE = ComponentRegistry.getOrCreate(ParadiseLost.locate("lore_state"), LoreState.class); @Override public void registerEntityComponentFactories(EntityComponentFactoryRegistry registry) { registry.registerFor(MoaEntity.class, MOA_GENETICS_KEY, moa -> new MoaGenes()); - registry.registerForPlayers(LORE_STATE, LoreState.Impl::new, RespawnCopyStrategy.ALWAYS_COPY); } } diff --git a/src/main/java/net/id/paradiselost/entities/passive/ambyst/AmbystBrain.java b/src/main/java/net/id/paradiselost/entities/passive/ambyst/AmbystBrain.java index 87916479d..951dd731e 100644 --- a/src/main/java/net/id/paradiselost/entities/passive/ambyst/AmbystBrain.java +++ b/src/main/java/net/id/paradiselost/entities/passive/ambyst/AmbystBrain.java @@ -27,7 +27,16 @@ private static void addCoreActivities(Brain brain) { } private static void addIdleActivities(Brain brain) { - brain.setTaskList(Activity.IDLE, ImmutableList.of(Pair.of(0, new TimeLimitedTask(new FollowMobTask(EntityType.PLAYER, 6.0F), UniformIntProvider.create(30, 60))), Pair.of(1, new BreedTask(EntityType.AXOLOTL, 0.2F)), Pair.of(3, new SeekWaterTask(6, 0.15F)), Pair.of(4, new CompositeTask(ImmutableMap.of(MemoryModuleType.WALK_TARGET, MemoryModuleState.VALUE_ABSENT), ImmutableSet.of(), CompositeTask.Order.ORDERED, CompositeTask.RunMode.TRY_ALL, ImmutableList.of(Pair.of(new AquaticStrollTask(0.5F), 2), Pair.of(new StrollTask(0.15F, false), 2)))))); +// brain.setTaskList(Activity.IDLE, ImmutableList.of( +// Pair.of(0, new TimeLimitedTask(new FollowMobTask(EntityType.PLAYER, 6.0F), UniformIntProvider.create(30, 60))), +// Pair.of(1, new BreedTask(EntityType.AXOLOTL, 0.2F)), +// Pair.of(3, new SeekWaterTask(6, 0.15F)), +// Pair.of(4, new CompositeTask( +// ImmutableMap.of(MemoryModuleType.WALK_TARGET, MemoryModuleState.VALUE_ABSENT), +// ImmutableSet.of(), +// CompositeTask.Order.ORDERED, +// CompositeTask.RunMode.TRY_ALL, +// ImmutableList.of(Pair.of(new AquaticStrollTask(0.5F), 2), Pair.of(new StrollTask(0.15F, false), 2)))))); } private static void addHideActivities(Brain brain) { diff --git a/src/main/java/net/id/paradiselost/entities/passive/ambyst/RunToLogTask.java b/src/main/java/net/id/paradiselost/entities/passive/ambyst/RunToLogTask.java index c73c167b3..fb1ede12a 100644 --- a/src/main/java/net/id/paradiselost/entities/passive/ambyst/RunToLogTask.java +++ b/src/main/java/net/id/paradiselost/entities/passive/ambyst/RunToLogTask.java @@ -4,6 +4,7 @@ import net.id.paradiselost.entities.ParadiseLostEntityTypes; import net.minecraft.entity.ai.brain.Brain; import net.minecraft.entity.ai.brain.MemoryModuleState; +import net.minecraft.entity.ai.brain.task.MultiTickTask; import net.minecraft.entity.ai.brain.task.Task; import net.minecraft.entity.ai.pathing.Path; import net.minecraft.entity.ai.pathing.PathNode; @@ -14,7 +15,7 @@ import java.util.ArrayList; import java.util.List; -public class RunToLogTask extends Task { +public class RunToLogTask extends MultiTickTask { private final float speed = .25f; public RunToLogTask() { diff --git a/src/main/java/net/id/paradiselost/entities/passive/ambyst/StayInLogTask.java b/src/main/java/net/id/paradiselost/entities/passive/ambyst/StayInLogTask.java index 398b09018..e40e8e151 100644 --- a/src/main/java/net/id/paradiselost/entities/passive/ambyst/StayInLogTask.java +++ b/src/main/java/net/id/paradiselost/entities/passive/ambyst/StayInLogTask.java @@ -4,12 +4,13 @@ import net.id.paradiselost.entities.ParadiseLostEntityTypes; import net.minecraft.entity.ai.brain.Brain; import net.minecraft.entity.ai.brain.MemoryModuleState; +import net.minecraft.entity.ai.brain.task.MultiTickTask; import net.minecraft.entity.ai.brain.task.Task; import net.minecraft.entity.passive.AnimalEntity; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; -public class StayInLogTask extends Task { +public class StayInLogTask extends MultiTickTask { public StayInLogTask() { super(ImmutableMap.of(ParadiseLostEntityTypes.IS_RAINING_MEMORY, MemoryModuleState.VALUE_PRESENT, ParadiseLostEntityTypes.LOG_MEMORY, MemoryModuleState.VALUE_PRESENT, diff --git a/src/main/java/net/id/paradiselost/items/ParadiseLostItemGroups.java b/src/main/java/net/id/paradiselost/items/ParadiseLostItemGroups.java index b5c10b0b9..10ec92d9c 100644 --- a/src/main/java/net/id/paradiselost/items/ParadiseLostItemGroups.java +++ b/src/main/java/net/id/paradiselost/items/ParadiseLostItemGroups.java @@ -1,36 +1,19 @@ package net.id.paradiselost.items; +import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; import net.id.paradiselost.ParadiseLost; import net.id.paradiselost.blocks.ParadiseLostBlocks; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; public class ParadiseLostItemGroups { - public static final ItemGroup PARADISE_LOST_BUILDING_BLOCKS = build( - ParadiseLost.locate("building_blocks"), - () -> new ItemStack(ParadiseLostBlocks.HIGHLANDS_GRASS)); - public static final ItemGroup PARADISE_LOST_DECORATIONS = build( - ParadiseLost.locate("decorations"), - () -> new ItemStack(ParadiseLostBlocks.CHERINE_LANTERN)); + private static final ItemGroup ITEM_GROUP = FabricItemGroup.builder(ParadiseLost.locate("building_blocks")) + .icon(() -> new ItemStack(ParadiseLostBlocks.HIGHLANDS_GRASS)) + .entries((context, entries) -> { + entries.add(ParadiseLostItems.LEVITA_BRICK); + }).build(); - public static final ItemGroup PARADISE_LOST_TOOLS = build( - ParadiseLost.locate("tools"), - () -> new ItemStack(ParadiseLostItems.OLVITE_PICKAXE)); - public static final ItemGroup PARADISE_LOST_FOOD = build( - ParadiseLost.locate("food"), - () -> new ItemStack(ParadiseLostItems.BLACKCURRANT)); - - public static final ItemGroup PARADISE_LOST_RESOURCES = build( - ParadiseLost.locate("resources"), - () -> new ItemStack(ParadiseLostItems.CHERINE)); - - public static final ItemGroup PARADISE_LOST_MISC = build( - ParadiseLost.locate("misc"), - () -> new ItemStack(ParadiseLostItems.LORE_BOOK)); - - public static final ItemGroup PARADISE_LOST_WEARABLES = build( - ParadiseLost.locate("wearables"), - () -> new ItemStack(ParadiseLostItems.OLVITE_CHESTPLATE)); + public static void init() {} } diff --git a/src/main/java/net/id/paradiselost/items/ParadiseLostItems.java b/src/main/java/net/id/paradiselost/items/ParadiseLostItems.java index 410c100e5..6d20bf62e 100644 --- a/src/main/java/net/id/paradiselost/items/ParadiseLostItems.java +++ b/src/main/java/net/id/paradiselost/items/ParadiseLostItems.java @@ -3,6 +3,7 @@ import com.google.common.collect.ImmutableList; import dev.emi.trinkets.api.TrinketItem; import net.fabricmc.fabric.api.item.v1.FabricItemSettings; +import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; import net.id.paradiselost.ParadiseLost; import net.id.paradiselost.blocks.ParadiseLostBlocks; import net.id.paradiselost.entities.ParadiseLostEntityTypes; @@ -31,6 +32,7 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.Rarity; +import net.minecraft.util.math.Direction; import org.jetbrains.annotations.NotNull; import java.util.Arrays; @@ -54,8 +56,8 @@ private static FabricItemSettings nightmare() { return new FabricItemSettings().fireproof(); } - private static FabricItemSettings resource() { - return new FabricItemSettings().group(ParadiseLostItemGroups.PARADISE_LOST_RESOURCES); + private static Settings resource() { + return new Settings(); } public static final Item GOLDEN_AMBER = add("golden_amber", new Item(resource())); @@ -73,7 +75,7 @@ private static FabricItemSettings resource() { private static Settings tool() { - return new Settings().group(ParadiseLostItemGroups.PARADISE_LOST_TOOLS); + return new Settings(); } private static final Settings tool = tool(); @@ -118,7 +120,7 @@ private static Settings unstackableRareTool() { public static final Item GLAZED_GOLD_UPGRADE = add("glazed_gold_upgrade_smithing_template", new Item(tool())); private static Settings wearable() { - return new Settings().group(ParadiseLostItemGroups.PARADISE_LOST_WEARABLES); + return new Settings(); } private static final Settings WEARABLE = wearable(); @@ -144,11 +146,11 @@ private static Settings wearable() { private static Settings food() { - return new Settings().group(ParadiseLostItemGroups.PARADISE_LOST_FOOD); + return new Settings(); } private static Settings food(FoodComponent foodComponent) { - return new Settings().group(ParadiseLostItemGroups.PARADISE_LOST_FOOD).food(foodComponent); + return new Settings().food(foodComponent); } private static Settings food(FoodComponent foodComponent, Rarity rarity) { @@ -170,14 +172,13 @@ private static Settings food(FoodComponent foodComponent, Rarity rarity) { public static final Item COOKED_MOA_MEAT = add("moa_meat_cooked", new Item(food(ParadiseLostFoodComponent.COOKED_MOA_MEAT))); private static Settings misc() { - return new Settings().group(ParadiseLostItemGroups.PARADISE_LOST_MISC); + return new Settings(); } private static final Settings misc = misc(); public static final ParadiseLostPortalItem PARADISE_LOST_PORTAL = add("portal", new ParadiseLostPortalItem(misc)); - public static final BookOfLoreItem LORE_BOOK = add("lore_book", new BookOfLoreItem(misc().maxCount(1))); public static final MoaEggItem MOA_EGG = add("moa_egg", new MoaEggItem(misc().maxCount(1))); public static final BlockItem INCUBATOR = add("incubator", ParadiseLostBlocks.INCUBATOR, misc, fuel(300)); public static final BlockItem FOOD_BOWL = add("food_bowl", ParadiseLostBlocks.FOOD_BOWL, misc, fuel(300)); @@ -194,7 +195,7 @@ private static Settings misc() { public static final SpawnEggItem MOA_SPAWN_EGG = add("moa_spawn_egg", new SpawnEggItem(ParadiseLostEntityTypes.MOA, 0xC55C2E4, 0xB3A8BB, misc), spawnEggBehavior); private static FabricItemSettings building_block() { - return new FabricItemSettings().group(ParadiseLostItemGroups.PARADISE_LOST_BUILDING_BLOCKS); + return new FabricItemSettings(); } public static final BlockItem BLOOMED_CALCITE = add("bloomed_calcite", ParadiseLostBlocks.BLOOMED_CALCITE, building_block()); @@ -301,7 +302,7 @@ private static FabricItemSettings building_block() { // colorfuls private static FabricItemSettings decoration() { - return new FabricItemSettings().group(ParadiseLostItemGroups.PARADISE_LOST_DECORATIONS); + return new FabricItemSettings(); } private static final FabricItemSettings decoration = decoration(); @@ -369,7 +370,7 @@ private static FabricItemSettings decoration() { // lights public static final BlockItem CHERINE_LANTERN = add("cherine_lantern", ParadiseLostBlocks.CHERINE_LANTERN, decoration); - public static final WallStandingBlockItem CHERINE_TORCH = add("cherine_torch", new WallStandingBlockItem(ParadiseLostBlocks.CHERINE_TORCH, ParadiseLostBlocks.CHERINE_TORCH_WALL, decoration)); + public static final VerticallyAttachableBlockItem CHERINE_TORCH = add("cherine_torch", new VerticallyAttachableBlockItem(ParadiseLostBlocks.CHERINE_TORCH, ParadiseLostBlocks.CHERINE_TORCH_WALL, decoration, Direction.DOWN)); // util blocks (enchanter, freezer, etc.) // redstone diff --git a/src/main/java/net/id/paradiselost/items/misc/BookOfLoreItem.java b/src/main/java/net/id/paradiselost/items/misc/BookOfLoreItem.java deleted file mode 100644 index 677ec3066..000000000 --- a/src/main/java/net/id/paradiselost/items/misc/BookOfLoreItem.java +++ /dev/null @@ -1,52 +0,0 @@ -package net.id.paradiselost.items.misc; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.id.paradiselost.screen.handler.LoreHandler; -import net.minecraft.client.item.TooltipContext; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.screen.NamedScreenHandlerFactory; -import net.minecraft.screen.ScreenHandler; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; -import net.minecraft.util.Hand; -import net.minecraft.util.TypedActionResult; -import net.minecraft.world.World; -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -public class BookOfLoreItem extends Item { - public BookOfLoreItem(Settings settings) { - super(settings); - } - - @Override - @Environment(EnvType.CLIENT) - public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { - tooltip.clear(); - tooltip.add((Text.translatable("item.paradise_lost.lore_book")).formatted(Formatting.YELLOW)); - tooltip.add((Text.translatable("book.edition", "1")).formatted(Formatting.GOLD)); - tooltip.add((Text.translatable("book.byAuthor", "Immortal Devs")).formatted(Formatting.GRAY)); - } - - @Override - public TypedActionResult use(World world, PlayerEntity user, Hand hand) { - ItemStack itemStack = user.getStackInHand(hand); - user.openHandledScreen(new NamedScreenHandlerFactory() { - @Override - public ScreenHandler createMenu(int syncId, PlayerInventory inv, PlayerEntity player) { - return new LoreHandler(syncId, inv); - } - - @Override - public Text getDisplayName() { - return Text.of("asdf"); - } - }); - return TypedActionResult.pass(itemStack); - } -} diff --git a/src/main/java/net/id/paradiselost/lore/LoreEntry.java b/src/main/java/net/id/paradiselost/lore/LoreEntry.java deleted file mode 100644 index f70a18ca8..000000000 --- a/src/main/java/net/id/paradiselost/lore/LoreEntry.java +++ /dev/null @@ -1,64 +0,0 @@ -package net.id.paradiselost.lore; - -import net.id.paradiselost.registry.ParadiseLostRegistries; -import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemStack; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; -import org.jetbrains.annotations.NotNull; - -import java.util.Objects; -import java.util.Set; -import java.util.function.Predicate; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -public record LoreEntry( - int x, - int y, - @NotNull ItemStack stack, - @NotNull LoreTriggerType triggerType, - @NotNull Predicate trigger, - @NotNull Set<@NotNull LoreEntry> prerequisites -) { - public LoreEntry { - Objects.requireNonNull(stack, "stack was null"); - Objects.requireNonNull(triggerType, "triggerType was null"); - Objects.requireNonNull(trigger, "trigger was null"); - Objects.requireNonNull(prerequisites, "prerequisites was null"); - } - - public LoreEntry(int x, int y, @NotNull ItemConvertible item, @NotNull LoreEntry @NotNull... prerequisites) { - this( - x, y, - new ItemStack(Objects.requireNonNull(item, "item was null")), - LoreTriggerType.NONE, (ignored) -> false, - Stream.of(Objects.requireNonNull(prerequisites, "prerequisites was null")) - .collect(Collectors.toUnmodifiableSet()) - ); - } - - public LoreEntry(int x, int y, @NotNull ItemConvertible item, @NotNull LoreTriggerType triggerType, @NotNull Predicate trigger, @NotNull LoreEntry @NotNull... prerequisites) { - this( - x, y, - new ItemStack(Objects.requireNonNull(item, "item was null")), - triggerType, trigger, - Stream.of(Objects.requireNonNull(prerequisites, "prerequisites was null")) - .collect(Collectors.toUnmodifiableSet()) - ); - } - - public Text getTitleText() { - Identifier id = ParadiseLostRegistries.LORE_REGISTRY.getId(this); - return Text.translatable("lore." + id.getNamespace() + "." + id.getPath() + ".title"); - } - - public Text getDescriptionText() { - Identifier id = ParadiseLostRegistries.LORE_REGISTRY.getId(this); - return Text.translatable("lore." + id.getNamespace() + "." + id.getPath() + ".description"); - } - - public Identifier getId() { - return ParadiseLostRegistries.LORE_REGISTRY.getId(this); - } -} diff --git a/src/main/java/net/id/paradiselost/lore/LoreState.java b/src/main/java/net/id/paradiselost/lore/LoreState.java deleted file mode 100644 index 9a9780369..000000000 --- a/src/main/java/net/id/paradiselost/lore/LoreState.java +++ /dev/null @@ -1,222 +0,0 @@ -package net.id.paradiselost.lore; - -import com.mojang.blaze3d.systems.RenderSystem; -import dev.onyxstudios.cca.api.v3.component.sync.AutoSyncedComponent; -import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.id.paradiselost.component.ParadiseLostComponents; -import net.id.paradiselost.mixin.util.NbtCompoundAccessor; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.render.GameRenderer; -import net.minecraft.client.toast.Toast; -import net.minecraft.client.toast.ToastManager; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.text.OrderedText; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.MathHelper; -import org.jetbrains.annotations.NotNull; - -import java.util.*; - -import static net.id.paradiselost.registry.ParadiseLostRegistries.LORE_REGISTRY; - -public interface LoreState extends AutoSyncedComponent { - default @NotNull LoreStatus getLoreStatus(@NotNull Identifier id) { - Objects.requireNonNull(id, "Identifier was null"); - LoreEntry lore = LORE_REGISTRY.get(id); - if (lore == null) { - throw new RuntimeException("Unknown lore entry: " + id); - } - return getLoreStatus(lore); - } - - default void setLoreStatus(@NotNull Identifier id, @NotNull LoreStatus status) { - Objects.requireNonNull(id, "id was null"); - Objects.requireNonNull(status, "status was null"); - LoreEntry lore = LORE_REGISTRY.get(id); - if (lore == null) { - throw new RuntimeException("Unknown lore entry: " + id); - } - setLoreStatus(lore, status); - } - - @NotNull LoreStatus getLoreStatus(@NotNull LoreEntry lore); - - void setLoreStatus(@NotNull LoreEntry lore, @NotNull LoreStatus status); - - final class Impl implements LoreState { - private final Map, LoreStatus> loreStates = new Object2ObjectOpenHashMap<>(); - private final Set> dirtyLore = new HashSet<>(); - private final PlayerEntity player; - private final boolean isClient; - - public Impl(PlayerEntity player) { - this.player = player; - isClient = player.world.isClient(); - } - - @Override - public void readFromNbt(NbtCompound tag) { - var statuses = tag.getCompound("statuses"); - loreStates.clear(); - ((NbtCompoundAccessor) statuses).getEntries().forEach((key, value) -> - loreStates.put(LORE_REGISTRY.get(new Identifier(key)), LoreStatus.ofValue(value.asString())) - ); - dirtyLore.addAll(loreStates.keySet()); - validate(); - } - - private void validate() { - // TODO: Implement logic - } - - @Override - public void writeToNbt(NbtCompound tag) { - var statuses = new NbtCompound(); - loreStates.forEach((key, value) -> - statuses.putString(key.toString(), value.getName()) - ); - } - - @Override - public void writeSyncPacket(PacketByteBuf buf, ServerPlayerEntity recipient) { - buf.writeVarInt(dirtyLore.size()); - for (LoreEntry lore : dirtyLore) { - buf.writeIdentifier(lore.getId()); - buf.writeVarInt(loreStates.getOrDefault(lore, LoreStatus.HIDDEN).ordinal()); - } - dirtyLore.clear(); - } - - @Override - public void applySyncPacket(PacketByteBuf buf) { - int count = buf.readVarInt(); - for (int i = 0; i < count; i++) { - var id = buf.readIdentifier(); - var status = LoreStatus.ofValue(buf.readVarInt()); - var oldStatus = loreStates.put(LORE_REGISTRY.get(id), status); - if (isClient && oldStatus != status && status == LoreStatus.COMPLETED) { - // Fingers crossed this gets by the validator - ToastTriggerer.triggerToast(id); - } - } - } - - @Override - public @NotNull LoreStatus getLoreStatus(@NotNull LoreEntry lore) { - if (lore.equals(ParadiseLostLore.ROOT)) { - return LoreStatus.COMPLETED; - } - - return loreStates.getOrDefault(lore, LoreStatus.HIDDEN); - } - - @Override - public void setLoreStatus(@NotNull LoreEntry lore, @NotNull LoreStatus status) { - Objects.requireNonNull(lore, "lore was null"); - Objects.requireNonNull(status, "status was null"); - - if (!isClient) { - throw new IllegalStateException("setLoreStatus was called on the client"); - } - - var existing = loreStates.put(lore, status); - if (existing != status) { - dirtyLore.add(lore); - - if (status == LoreStatus.COMPLETED) { - getChildren(lore).forEach((child) -> { - if (getLoreStatus(child) == LoreStatus.HIDDEN) { - setLoreStatus(child, LoreStatus.LOCKED); - } - }); - } - - ParadiseLostComponents.LORE_STATE.sync(player); - } - } - - private static final Map>> CHILDREN = new HashMap<>(); - public Set> getChildren(LoreEntry lore) { - var children = CHILDREN.get(lore.getId()); - if (children != null) { - return children; - } - - Set> newChildren = new HashSet<>(); - - LORE_REGISTRY.forEach((entry) -> { - if (entry.prerequisites().contains(lore)) { - newChildren.add(entry); - } - }); - - children = newChildren.isEmpty() ? Set.of() : Collections.unmodifiableSet(newChildren); - CHILDREN.put(lore.getId(), children); - return children; - } - } - - - // TODO this is a silly solution. - // This class is here solely so that the server does not crash. - class ToastTriggerer { - @Environment(EnvType.CLIENT) - public static void triggerToast(Identifier id) { - LORE_REGISTRY.getOrEmpty(id).ifPresent((lore) -> { - MinecraftClient.getInstance().getToastManager().add(new Toast() { - @Override - public Visibility draw(MatrixStack matrices, ToastManager manager, long startTime) { - RenderSystem.setShader(GameRenderer::getPositionTexShader); - RenderSystem.setShaderTexture(0, TEXTURE); - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - manager.drawTexture(matrices, 0, 0, 0, 0, this.getWidth(), this.getHeight()); - List list = manager.getClient().textRenderer.wrapLines(lore.getTitleText(), 125); - int color = 0xFFFF00; - if (list.size() == 1) { - manager.getClient().textRenderer.draw(matrices, Text.of("TODO"), 30.0F, 7.0F, color | 0xFF000000); - manager.getClient().textRenderer.draw(matrices, list.get(0), 30.0F, 18.0F, -1); - } else { - int l; - if (startTime < 1500L) { - l = MathHelper.floor(MathHelper.clamp((float) (1500L - startTime) / 300.0F, 0.0F, 1.0F) * 255.0F) << 24 | 67108864; - manager.getClient().textRenderer.draw(matrices, Text.of("TODO"), 30.0F, 11.0F, color | l); - } else { - l = MathHelper.floor(MathHelper.clamp((float) (startTime - 1500L) / 300.0F, 0.0F, 1.0F) * 252.0F) << 24 | 67108864; - int var10000 = this.getHeight() / 2; - int var10001 = list.size(); - Objects.requireNonNull(manager.getClient().textRenderer); - int m = var10000 - var10001 * 9 / 2; - - for (Iterator var12 = list.iterator(); var12.hasNext(); m += 9) { - OrderedText orderedText = var12.next(); - manager.getClient().textRenderer.draw(matrices, orderedText, 30.0F, (float) m, 16777215 | l); - Objects.requireNonNull(manager.getClient().textRenderer); - } - } - } - -/* - if (!soundPlayed && startTime > 0L) { - soundPlayed = true; - if (advancementDisplay.getFrame() == AdvancementFrame.CHALLENGE) { - manager.getGame().getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_TOAST_CHALLENGE_COMPLETE, 1.0F, 1.0F)); - } - } -*/ - - manager.getClient().getItemRenderer().renderInGui(lore.stack(), 8, 8); - return startTime >= 5000L ? Visibility.HIDE : Visibility.SHOW; - } - }); - }); - } - } -} - diff --git a/src/main/java/net/id/paradiselost/lore/LoreStatus.java b/src/main/java/net/id/paradiselost/lore/LoreStatus.java deleted file mode 100644 index 4a31f19ef..000000000 --- a/src/main/java/net/id/paradiselost/lore/LoreStatus.java +++ /dev/null @@ -1,49 +0,0 @@ -package net.id.paradiselost.lore; - -import com.google.common.collect.ImmutableMap; - -import java.util.Locale; -import java.util.Map; - -public enum LoreStatus { - HIDDEN, - LOCKED, - FREE, - UNLOCKED, - COMPLETED; - - private final String name; - - LoreStatus() { - this.name = name().toLowerCase(Locale.ROOT); - } - - public String getName() { - return name; - } - - private static final Map VALUES; - static { - var builder = ImmutableMap.builder(); - for (LoreStatus status : values()) { - builder.put(status.name, status); - } - VALUES = builder.build(); - } - - public static LoreStatus ofValue(String string) { - LoreStatus status = VALUES.get(string); - if (status == null) { - throw new IllegalArgumentException("Unknown lore status: " + string); - } - return status; - } - - public static LoreStatus ofValue(int ordinal) { - var values = values(); - if (ordinal >= values.length || ordinal < 0) { - throw new IllegalArgumentException("Unknown lore status ordinal: " + ordinal); - } - return values[ordinal]; - } -} diff --git a/src/main/java/net/id/paradiselost/lore/LoreTriggerType.java b/src/main/java/net/id/paradiselost/lore/LoreTriggerType.java deleted file mode 100644 index 3577d5742..000000000 --- a/src/main/java/net/id/paradiselost/lore/LoreTriggerType.java +++ /dev/null @@ -1,6 +0,0 @@ -package net.id.paradiselost.lore; - -public enum LoreTriggerType { - NONE, - ITEM, -} diff --git a/src/main/java/net/id/paradiselost/lore/LoreType.java b/src/main/java/net/id/paradiselost/lore/LoreType.java deleted file mode 100644 index 750b0effc..000000000 --- a/src/main/java/net/id/paradiselost/lore/LoreType.java +++ /dev/null @@ -1,46 +0,0 @@ -package net.id.paradiselost.lore; - -public enum LoreType { - NORMAL(0, 17, 22, 22, 3, 3), - RARE(0, 39, 32, 32, 8, 8); - - private final int u; - private final int v; - private final int width; - private final int height; - private final int itemX; - private final int itemY; - - LoreType(int u, int v, int width, int height, int itemX, int itemY) { - this.u = u; - this.v = v; - this.width = width; - this.height = height; - this.itemX = itemX; - this.itemY = itemY; - } - - public int getU() { - return u; - } - - public int getV() { - return v; - } - - public int getWidth() { - return width; - } - - public int getHeight() { - return height; - } - - public int getItemX() { - return itemX; - } - - public int getItemY() { - return itemY; - } -} diff --git a/src/main/java/net/id/paradiselost/lore/ParadiseLostLore.java b/src/main/java/net/id/paradiselost/lore/ParadiseLostLore.java deleted file mode 100644 index 0c17f5428..000000000 --- a/src/main/java/net/id/paradiselost/lore/ParadiseLostLore.java +++ /dev/null @@ -1,53 +0,0 @@ -package net.id.paradiselost.lore; - -import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import net.id.paradiselost.component.ParadiseLostComponents; -import net.id.paradiselost.items.ParadiseLostItems; -import net.id.paradiselost.registry.ParadiseLostRegistries; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.registry.Registry; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.util.Identifier; -import org.jetbrains.annotations.NotNull; - -import java.util.HashSet; -import java.util.Map; -import java.util.Objects; -import java.util.Set; - -import static net.id.paradiselost.ParadiseLost.locate; - -public final class ParadiseLostLore { - private static final Map>> TRIGGER_MAP = new Object2ObjectOpenHashMap<>(); - - public static final LoreEntry ROOT = register("root", new LoreEntry<>(0, 0, ParadiseLostItems.LORE_BOOK)); - public static final LoreEntry ITEM_TEST = register("item_test", new LoreEntry<>(0, 0, Items.DIAMOND, LoreTriggerType.ITEM, (stack) -> stack.getItem().equals(Items.DIAMOND))); - - public static void init() { - } - - private static LoreEntry register(@NotNull String name, @NotNull LoreEntry lore) { - return register(locate(name), lore); - } - - public static LoreEntry register(@NotNull Identifier id, @NotNull LoreEntry lore) { - Objects.requireNonNull(id, "id was null"); - Objects.requireNonNull(lore, "lore was null"); - TRIGGER_MAP.computeIfAbsent(lore.triggerType(), (key) -> new HashSet<>()).add(lore); - return Registry.register(ParadiseLostRegistries.LORE_REGISTRY, id, lore); - } - - @SuppressWarnings("unchecked") - public static void trigger(@NotNull LoreTriggerType triggerType, @NotNull ServerPlayerEntity player, @NotNull T object) { - var state = ParadiseLostComponents.LORE_STATE.get(player); - for (LoreEntry lore : TRIGGER_MAP.getOrDefault(triggerType, Set.of())) { - Identifier id = lore.getId(); - var status = state.getLoreStatus(id); - - if (status == LoreStatus.LOCKED && ((LoreEntry) lore).trigger().test(object)) { - state.setLoreStatus(id, LoreStatus.COMPLETED); - } - } - } -} diff --git a/src/main/java/net/id/paradiselost/mixin/client/render/CloudRendererMixin.java b/src/main/java/net/id/paradiselost/mixin/client/render/CloudRendererMixin.java index fee8c1f37..aae5bb491 100644 --- a/src/main/java/net/id/paradiselost/mixin/client/render/CloudRendererMixin.java +++ b/src/main/java/net/id/paradiselost/mixin/client/render/CloudRendererMixin.java @@ -4,6 +4,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import net.id.paradiselost.world.dimension.ParadiseLostDimension; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gl.ShaderProgram; import net.minecraft.client.gl.VertexBuffer; import net.minecraft.client.option.CloudRenderMode; import net.minecraft.client.render.*; @@ -11,10 +12,10 @@ import net.minecraft.client.world.ClientWorld; import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.Matrix4f; import net.minecraft.util.math.Vec3d; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.joml.Matrix4f; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -117,7 +118,7 @@ private void internalCloudRender(MatrixStack matrices, Matrix4f projectionMatrix VertexBuffer.unbind(); } - RenderSystem.setShader(GameRenderer::getPositionTexColorNormalShader); + RenderSystem.setShader(GameRenderer::getPositionTexColorNormalProgram); RenderSystem.setShaderTexture(0, CLOUDS); BackgroundRenderer.setFogBlack(); matrices.push(); @@ -136,7 +137,7 @@ private void internalCloudRender(MatrixStack matrices, Matrix4f projectionMatrix } else { RenderSystem.colorMask(true, true, true, true); } - Shader shader = RenderSystem.getShader(); + ShaderProgram shader = RenderSystem.getShader(); cloudsBuffer.draw(matrices.peek().getPositionMatrix(), projectionMatrix, shader); } VertexBuffer.unbind(); diff --git a/src/main/java/net/id/paradiselost/mixin/client/render/InGameOverlayRendererMixin.java b/src/main/java/net/id/paradiselost/mixin/client/render/InGameOverlayRendererMixin.java index 50aa630a1..8a8b3d73b 100644 --- a/src/main/java/net/id/paradiselost/mixin/client/render/InGameOverlayRendererMixin.java +++ b/src/main/java/net/id/paradiselost/mixin/client/render/InGameOverlayRendererMixin.java @@ -5,7 +5,6 @@ import net.fabricmc.api.Environment; import net.id.paradiselost.ParadiseLost; import net.id.paradiselost.blocks.natural.cloud.ParadiseLostCloudBlock; -import net.id.paradiselost.fluids.DenseCloudFluid; import net.minecraft.block.BlockState; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.hud.InGameOverlayRenderer; @@ -13,9 +12,10 @@ import net.minecraft.client.texture.Sprite; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.registry.Registries; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; +import org.joml.Matrix4f; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -38,9 +38,8 @@ private static void renderCloudOverlay(Sprite sprite, MatrixStack matrices, Call MinecraftClient client = MinecraftClient.getInstance(); BlockState overlayState = getInWallBlockState(client.player); if (overlayState != null && overlayState.getBlock() instanceof ParadiseLostCloudBlock) { - RenderSystem.setShader(GameRenderer::getPositionTexShader); - RenderSystem.enableTexture(); - RenderSystem.setShaderTexture(0, ParadiseLost.locate("textures/block/" + Registry.BLOCK.getId(overlayState.getBlock()).getPath() + ".png")); + RenderSystem.setShader(GameRenderer::getPositionColorTexProgram); + RenderSystem.setShaderTexture(0, ParadiseLost.locate("textures/block/" + Registries.BLOCK.getId(overlayState.getBlock()).getPath() + ".png")); BufferBuilder bufferBuilder = Tessellator.getInstance().getBuffer(); float f = client.player.getBrightnessAtEyes(); RenderSystem.enableBlend(); @@ -54,7 +53,7 @@ private static void renderCloudOverlay(Sprite sprite, MatrixStack matrices, Call bufferBuilder.vertex(matrix4f, 1.0F, -1.0F, -0.5F).texture(0.0F - yaw, 1.0F + pitch).next(); bufferBuilder.vertex(matrix4f, 1.0F, 1.0F, -0.5F).texture(0.0F - yaw, 0.0F + pitch).next(); bufferBuilder.vertex(matrix4f, -1.0F, 1.0F, -0.5F).texture(1.0F - yaw, 0.0F + pitch).next(); - BufferRenderer.drawWithShader(bufferBuilder.end()); + BufferRenderer.drawWithGlobalProgram(bufferBuilder.end()); //FIXME? Should this be removed? The original doesn't have it. RenderSystem.disableBlend(); ci.cancel(); @@ -77,31 +76,4 @@ private static void getInWallBlockState(PlayerEntity player, CallbackInfoReturna } } } - - @Inject(method = "renderUnderwaterOverlay", at = @At("HEAD"), cancellable = true) - private static void renderDenseCloudOverlay(MinecraftClient client, MatrixStack matrices, CallbackInfo ci) { - BlockPos pos = new BlockPos(client.player.getEyePos()); - World world = client.player.world; - if (world.getFluidState(pos).getFluid() instanceof DenseCloudFluid) { - RenderSystem.setShader(GameRenderer::getPositionTexShader); - RenderSystem.enableTexture(); - RenderSystem.setShaderTexture(0, ParadiseLost.locate("textures/block/dense_cloud_still.png")); - BufferBuilder bufferBuilder = Tessellator.getInstance().getBuffer(); - float f = client.player.getBrightnessAtEyes(); - RenderSystem.enableBlend(); - RenderSystem.defaultBlendFunc(); - RenderSystem.setShaderColor(f, f, f, 0.8F); - float m = -client.player.getYaw() / 64.0F; - float n = client.player.getPitch() / 64.0F; - Matrix4f matrix4f = matrices.peek().getPositionMatrix(); - bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE); - bufferBuilder.vertex(matrix4f, -1.0F, -1.0F, -0.5F).texture(4.0F + m, 4.0F + n).next(); - bufferBuilder.vertex(matrix4f, 1.0F, -1.0F, -0.5F).texture(0.0F + m, 4.0F + n).next(); - bufferBuilder.vertex(matrix4f, 1.0F, 1.0F, -0.5F).texture(0.0F + m, 0.0F + n).next(); - bufferBuilder.vertex(matrix4f, -1.0F, 1.0F, -0.5F).texture(4.0F + m, 0.0F + n).next(); - BufferRenderer.drawWithShader(bufferBuilder.end()); - RenderSystem.disableBlend(); - ci.cancel(); - } - } } diff --git a/src/main/java/net/id/paradiselost/mixin/entity/PlayerEntityMixin.java b/src/main/java/net/id/paradiselost/mixin/entity/PlayerEntityMixin.java index 3886382d9..7c7160743 100644 --- a/src/main/java/net/id/paradiselost/mixin/entity/PlayerEntityMixin.java +++ b/src/main/java/net/id/paradiselost/mixin/entity/PlayerEntityMixin.java @@ -1,7 +1,7 @@ package net.id.paradiselost.mixin.entity; import net.id.paradiselost.entities.ParadiseLostEntityExtensions; -import net.id.paradiselost.util.ParadiseLostDamageSources; +import net.id.paradiselost.util.ParadiseLostDamageTypes; import net.id.paradiselost.world.dimension.ParadiseLostDimension; import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; @@ -10,7 +10,6 @@ import net.minecraft.entity.effect.StatusEffects; import net.minecraft.entity.player.PlayerAbilities; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.registry.tag.DamageTypeTags; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ServerWorld; import net.minecraft.stat.Stats; @@ -96,7 +95,7 @@ public void handleFallDamage(float fallDistance, float damageMultiplier, DamageS if (fallDistance >= 2.0F) { increaseStat(Stats.FALL_ONE_CM, (int) Math.round((double) fallDistance * 100.0D)); } - cir.setReturnValue(super.handleFallDamage(fallDistance, damageMultiplier, ParadiseLostDamageSources.PARADISE_LOST_FALL)); + cir.setReturnValue(super.handleFallDamage(fallDistance, damageMultiplier, ParadiseLostDamageTypes.of(world, ParadiseLostDamageTypes.FALL_FROM_PARADISE))); } cir.cancel(); } diff --git a/src/main/java/net/id/paradiselost/mixin/entity/ServerPlayerEntity$Anon1Mixin.java b/src/main/java/net/id/paradiselost/mixin/entity/ServerPlayerEntity$Anon1Mixin.java deleted file mode 100644 index c6433f11f..000000000 --- a/src/main/java/net/id/paradiselost/mixin/entity/ServerPlayerEntity$Anon1Mixin.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.id.paradiselost.mixin.entity; - -import net.id.paradiselost.lore.ParadiseLostLore; -import net.id.paradiselost.lore.LoreTriggerType; -import net.minecraft.item.ItemStack; -import net.minecraft.screen.ScreenHandler; -import net.minecraft.server.network.ServerPlayerEntity; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(targets = "net/minecraft/server/network/ServerPlayerEntity$2") -public abstract class ServerPlayerEntity$Anon1Mixin { - @Inject( - method = "onSlotUpdate", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/advancement/criterion/InventoryChangedCriterion;trigger(Lnet/minecraft/server/network/ServerPlayerEntity;Lnet/minecraft/entity/player/PlayerInventory;Lnet/minecraft/item/ItemStack;)V" - ) - ) - private void trigger(ScreenHandler handler, int slotId, ItemStack stack, CallbackInfo ci) { - ParadiseLostLore.trigger(LoreTriggerType.ITEM, (ServerPlayerEntity) (Object) this, stack); - } -} diff --git a/src/main/java/net/id/paradiselost/registry/ParadiseLostRegistries.java b/src/main/java/net/id/paradiselost/registry/ParadiseLostRegistries.java deleted file mode 100644 index f92c3d18d..000000000 --- a/src/main/java/net/id/paradiselost/registry/ParadiseLostRegistries.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.id.paradiselost.registry; - -import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder; -import net.fabricmc.fabric.api.event.registry.RegistryAttribute; -import net.id.paradiselost.lore.LoreEntry; -import net.id.paradiselost.lore.ParadiseLostLore; -import net.minecraft.registry.Registry; - -import static net.id.paradiselost.ParadiseLost.locate; - -@SuppressWarnings("unchecked") -public class ParadiseLostRegistries { - - public static void init() { - } - - /** - * The registry for {@link LoreEntry}, try not to use this directly. Use the methods in {@link ParadiseLostLore}. - */ - public static final Registry> LORE_REGISTRY = (Registry>) (Object) FabricRegistryBuilder.createDefaulted(LoreEntry.class, locate("lore"), locate("root")).attribute(RegistryAttribute.SYNCED).buildAndRegister(); -} diff --git a/src/main/java/net/id/paradiselost/registry/TrinketSlotRegistry.java b/src/main/java/net/id/paradiselost/registry/TrinketSlotRegistry.java deleted file mode 100644 index ea3f0a45e..000000000 --- a/src/main/java/net/id/paradiselost/registry/TrinketSlotRegistry.java +++ /dev/null @@ -1,6 +0,0 @@ -package net.id.paradiselost.registry; - -public class TrinketSlotRegistry { - public static void init() { - } -} diff --git a/src/main/java/net/id/paradiselost/screen/LoreScreen.java b/src/main/java/net/id/paradiselost/screen/LoreScreen.java deleted file mode 100644 index 0059abbca..000000000 --- a/src/main/java/net/id/paradiselost/screen/LoreScreen.java +++ /dev/null @@ -1,456 +0,0 @@ -package net.id.paradiselost.screen; - -import com.mojang.blaze3d.systems.RenderSystem; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.id.paradiselost.component.ParadiseLostComponents; -import net.id.paradiselost.lore.LoreStatus; -import net.id.paradiselost.lore.LoreType; -import net.id.paradiselost.registry.ParadiseLostRegistries; -import net.id.paradiselost.screen.handler.LoreHandler; -import net.id.paradiselost.screen.util.FloatyDrawableHelper; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.ingame.HandledScreen; -import net.minecraft.client.render.GameRenderer; -import net.minecraft.client.render.VertexConsumer; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.text.MutableText; -import net.minecraft.text.OrderedText; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.MathHelper; -import org.jetbrains.annotations.NotNull; - -import java.util.List; -import java.util.Objects; -import java.util.Set; - -import static net.id.paradiselost.ParadiseLost.locate; - -// TODO: Requirements, requirement lines and status -@Environment(EnvType.CLIENT) -public final class LoreScreen extends HandledScreen { - public static final Identifier WIDGET_TEXTURE = locate("textures/gui/lore/widgets.png"); - - private static final LoreEntry LORE_TEST = new LoreEntry(0, 0, LoreType.NORMAL, Items.DIAMOND, Text.of("Test!"), Text.of("This is a test lore entry.\nWhat fun!")); - private static final LoreEntry PARENT_TEST = new LoreEntry(64, 0, LoreType.RARE, Items.EMERALD, Text.of("Parent Test"), Text.of("This is a test of the lineage system"), LORE_TEST); - - private final int viewportWidth = 200; - private final int viewportHeight = 200; - - private final List loreEntries; - - private int scrollX = 0; - private int scrollY = 0; - private int scrollLimitX1 = 0; - private int scrollLimitY1 = 0; - private int scrollLimitX0 = 0; - private int scrollLimitY0 = 0; - - private LoreEntry hoveredEntry = null; - - public LoreScreen(LoreHandler handler, PlayerInventory inventory, Text title) { - super(handler, inventory, title); - - backgroundWidth = viewportWidth; - backgroundHeight = viewportHeight; - - var state = ParadiseLostComponents.LORE_STATE.get(MinecraftClient.getInstance().player); - loreEntries = ParadiseLostRegistries.LORE_REGISTRY.stream().map((entry) -> { - var status = state.getLoreStatus(entry); - if (status == LoreStatus.FREE || status == LoreStatus.UNLOCKED || status == LoreStatus.COMPLETED) { - return new LoreEntry(entry); - } else { - return null; - } - }).filter(Objects::nonNull).toList(); - - var coreLoreType = LoreType.NORMAL; - scrollX = (viewportWidth - coreLoreType.getWidth()) >> 2; - scrollY = (viewportHeight - coreLoreType.getHeight()) >> 1; - } - - @Override - protected void init() { - super.init(); - - int scrollLimitX1 = 0; - int scrollLimitY1 = 0; - int scrollLimitX0 = 0; - int scrollLimitY0 = 0; - - for (LoreEntry loreEntry : loreEntries) { - scrollLimitX0 = Math.min(scrollLimitX0, loreEntry.x); - scrollLimitY0 = Math.min(scrollLimitY0, loreEntry.y); - scrollLimitX1 = Math.max(scrollLimitX1, loreEntry.x + loreEntry.type.getWidth()); - scrollLimitY1 = Math.max(scrollLimitY1, loreEntry.y + loreEntry.type.getHeight()); - } - - this.scrollLimitX0 = scrollLimitX0 - (viewportWidth >> 1); - this.scrollLimitY0 = scrollLimitY0 - (viewportHeight >> 1); - this.scrollLimitX1 = scrollLimitX1 + (viewportWidth >> 1); - this.scrollLimitY1 = scrollLimitY1 + (viewportHeight >> 1); - - this.scrollX = MathHelper.clamp(scrollX, scrollLimitX0, scrollLimitX1); - this.scrollY = MathHelper.clamp(scrollX, scrollLimitY0, scrollLimitY1); - } - - @Override - protected void drawForeground(MatrixStack matrices, int mouseX, int mouseY) { - } - - @Override - protected void drawBackground(MatrixStack matrices, float delta, int mouseX, int mouseY) { - matrices.push(); - RenderSystem.setShader(GameRenderer::getPositionTexShader); - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - RenderSystem.setShaderTexture(0, WIDGET_TEXTURE); - - drawFrame(matrices); - - var scaleFactor = MinecraftClient.getInstance().getWindow().getScaleFactor(); - RenderSystem.enableScissor( - (int) (x * scaleFactor), - (int) ((height - y - backgroundHeight) * scaleFactor), - (int) ((backgroundWidth) * scaleFactor), - (int) ((backgroundHeight) * scaleFactor) - ); - - var filterState = new Object() { - int mouseX; - int mouseY; - }; - filterState.mouseX = mouseX - this.x - scrollX; - filterState.mouseY = mouseY - this.y - scrollY; - var currentlyHovered = loreEntries.stream().filter((entry) -> - filterState.mouseX >= entry.x && filterState.mouseX <= entry.x + entry.type.getWidth() - && filterState.mouseY >= entry.y && filterState.mouseY <= entry.y + entry.type.getHeight() - ).findFirst().orElse(null); - if (hoveredEntry != currentlyHovered) { - if (hoveredEntry != null) { - hoveredEntry.setHovered(false); - } - hoveredEntry = currentlyHovered; - if (hoveredEntry != null) { - hoveredEntry.setHovered(true); - } - } - - int offsetX = x + scrollX; - int offsetY = y + scrollY; - - loreEntries.forEach((entry) -> entry.tick(delta)); - -// RenderSystem.setShader(GameRenderer::getRenderTypeLinesShader); -// RenderSystem.setShaderColor(1.0F, 0.0F, 1.0F, 1.0F); - - /* - var entityBuilders = MinecraftClient.getInstance().getBufferBuilders().getEntityVertexConsumers(); - var lineBuffer = entityBuilders.getBuffer(RenderLayer.getLines()); - loreEntries.forEach((entry)->entry.drawLines(matrices, lineBuffer, offsetX, offsetY)); - entityBuilders.draw(); - */ - - RenderSystem.setShader(GameRenderer::getPositionTexShader); - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - RenderSystem.setShaderTexture(0, WIDGET_TEXTURE); - RenderSystem.enableBlend(); - drawBorder(matrices); - loreEntries.forEach((entry) -> entry.drawBackground(matrices, offsetX, offsetY)); - loreEntries.forEach((entry) -> entry.drawForeground(matrices, offsetX, offsetY)); - - setZOffset(200); - itemRenderer.zOffset = 200; - RenderSystem.enableDepthTest(); - loreEntries.forEach((entry) -> entry.drawStack(offsetX, offsetY)); - setZOffset(0); - itemRenderer.zOffset = 0; - RenderSystem.disableDepthTest(); - - RenderSystem.disableScissor(); - } - - private int dragStartX; - private int dragStartY; - private int scrollStartX; - private int scrollStartY; - - @Override - public boolean mouseClicked(double mouseX, double mouseY, int button) { - dragStartX = (int) mouseX; - dragStartY = (int) mouseY; - scrollStartX = scrollX; - scrollStartY = scrollY; - - return false; - } - - @Override - public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) { - scrollX = MathHelper.clamp((int) (scrollStartX + mouseX - dragStartX), scrollLimitX0, scrollLimitX1); - scrollY = MathHelper.clamp((int) (scrollStartY + mouseY - dragStartY), scrollLimitY0, scrollLimitY1); - - return true; - } - - private void drawFrame(MatrixStack matrices) { - int x = this.x; - int y = this.y; - int width = backgroundWidth; - int height = backgroundHeight; - - matrices.push(); - matrices.translate(x, y, 0); - - // Top left corner - drawTexture(matrices, -8, -8, 8, 8, 0, 0, 8, 8, 256, 256); - // Top right corner - drawTexture(matrices, width, -8, 8, 8, 9, 0, 8, 8, 256, 256); - // Bottom right corner - drawTexture(matrices, width, height, 8, 8, 9, 9, 8, 8, 256, 256); - // Bottom left corner - drawTexture(matrices, -8, height, 8, 8, 0, 9, 8, 8, 256, 256); - - // Top middle - drawTexture(matrices, 0, -8, width, 8, 8, 0, 1, 8, 256, 256); - // Left middle - drawTexture(matrices, -8, 0, 8, height, 0, 8, 8, 1, 256, 256); - // Right middle - drawTexture(matrices, width, 0, 8, height, 9, 8, 8, 1, 256, 256); - // Bottom middle - drawTexture(matrices, 0, height, width, 8, 8, 9, 1, 8, 256, 256); - - // Middle - drawTexture(matrices, 0, 0, width, height, 8, 8, 1, 1, 256, 256); - - matrices.pop(); - } - - //FIXME Figure out why this is so far off. - private void drawBorder(MatrixStack matrices) { - matrices.push(); - matrices.translate(x + scrollLimitX0 + scrollX - 69, y + scrollLimitX0 + scrollY - 5, 0); - int width = scrollLimitX1 - scrollLimitX0 + viewportWidth; - int height = scrollLimitY1 - scrollLimitY0 + viewportHeight; - - // Top left corner - drawTexture(matrices, 0, 0, 4, 4, 0, 72, 4, 4, 256, 256); - // Top right corner - drawTexture(matrices, width - 4, 0, 4, 4, 5, 72, 4, 4, 256, 256); - // Bottom right corner - drawTexture(matrices, width - 4, height - 4, 4, 4, 5, 77, 4, 4, 256, 256); - // Bottom left corner - drawTexture(matrices, 0, height - 4, 4, 4, 0, 77, 4, 4, 256, 256); - - // Top middle - drawTexture(matrices, 4, 0, width - 8, 4, 4, 72, 1, 4, 256, 256); - // Left middle - drawTexture(matrices, 0, 4, 4, height - 8, 0, 76, 4, 1, 256, 256); - // Right middle - drawTexture(matrices, width - 4, 4, 4, height - 8, 5, 76, 4, 1, 256, 256); - // Bottom middle - drawTexture(matrices, 4, height - 4, width - 8, 4, 4, 77, 1, 4, 256, 256); - - matrices.pop(); - } - - private static final class LoreEntry implements FloatyDrawableHelper { - private static final int HOVER_LIMIT = 20; - - private final int x; - private final int y; - private final @NotNull LoreType type; - private final @NotNull ItemStack stack; - private final @NotNull Text title; - private final List description; - private final @NotNull Set<@NotNull LoreEntry> requirements; - - private final int width; - private final int height; - - private boolean hover = false; - private float hoverTime = 0; - - private LoreEntry(int x, int y, @NotNull LoreType type, @NotNull ItemStack stack, @NotNull Text title, @NotNull Text description, @NotNull Set<@NotNull LoreEntry> requirements) { - Objects.requireNonNull(type, "type was null"); - Objects.requireNonNull(stack, "stack was null"); - Objects.requireNonNull(title, "title was null"); - Objects.requireNonNull(description, "description was null"); - Objects.requireNonNull(requirements, "requirements was null"); - this.x = x - (type.getWidth() >> 1); - this.y = y - (type.getHeight() >> 1); - this.type = type; - this.stack = stack; - - if (title instanceof MutableText mutableTitle) { - this.title = mutableTitle.setStyle(title.getStyle().withBold(true)); - } else { - this.title = title; - } - this.requirements = requirements; - - var textRenderer = MinecraftClient.getInstance().textRenderer; - this.width = Math.max(textRenderer.getWidth(this.title), 100) + 2; - - this.description = textRenderer.wrapLines(description, width); - - this.height = 9 * (this.description.size() + 1); - } - - private LoreEntry(int x, int y, @NotNull LoreType type, @NotNull ItemStack stack, @NotNull Text title, @NotNull Text description, @NotNull LoreEntry @NotNull... requirements) { - this( - x, y, type, stack, title, description, - Set.of(Objects.requireNonNull(requirements, "requirements was null")) - ); - } - - private LoreEntry(int x, int y, @NotNull LoreType type, @NotNull ItemConvertible item, @NotNull Text title, @NotNull Text description) { - this( - x, y, type, - new ItemStack(Objects.requireNonNull(item, "item was null")), - title, description, Set.of() - ); - } - - private LoreEntry(int x, int y, @NotNull LoreType type, @NotNull ItemConvertible item, @NotNull Text title, @NotNull Text description, @NotNull LoreEntry @NotNull... requirements) { - this( - x, y, type, - new ItemStack(Objects.requireNonNull(item, "item was null")), - title, description, - Set.of(Objects.requireNonNull(requirements, "requirements was null")) - ); - } - - LoreEntry(net.id.paradiselost.lore.LoreEntry entry) { - this(entry.x(), entry.y(), LoreType.NORMAL, entry.stack(), entry.getTitleText(), entry.getDescriptionText()); - } - - public void setHovered(boolean hovered) { - hover = hovered; - } - - public void tick(float delta) { - if (hover) { - if (hoverTime < HOVER_LIMIT) { - hoverTime = Math.min(hoverTime + delta, HOVER_LIMIT); - } - } else { - if (hoverTime > 0) { - hoverTime = Math.max(hoverTime - delta, 0); - } - } - } - - private void drawLines(MatrixStack matrices, VertexConsumer lineBuffer, int x, int y) { - if (!requirements.isEmpty()) { - int startX = this.x + x; - int startY = this.y + y; - var entry = matrices.peek(); - var model = entry.getPositionMatrix(); - var normal = entry.getNormalMatrix(); - for (var child : requirements) { - lineBuffer.vertex(model, startX, startY, 0).color(1, 0, 1, 0).normal(normal, 0, 1, 0).next(); - lineBuffer.vertex(model, child.x + x, child.y + y, 0).color(1, 0, 1, 0).normal(normal, 0, 1, 0).next(); - } - /* - vertexConsumer.vertex(entry.getModel(), (float)(k + d), (float)(l + e), (float)(m + f)).color(g, h, i, j).normal(entry.getNormal(), q, r, s).next(); - vertexConsumer.vertex(entry.getModel(), (float)(n + d), (float)(o + e), (float)(p + f)).color(g, h, i, j).normal(entry.getNormal(), q, r, s).next(); - */ - } - } - - private void drawBackground(MatrixStack matrices, int x, int y) { - x += this.x; - y += this.y; - - if (hover) { - drawTexture(matrices, x, y, type.getU() + type.getWidth(), type.getV(), type.getWidth(), type.getHeight()); - } else { - drawTexture(matrices, x, y, type.getU(), type.getV(), type.getWidth(), type.getHeight()); - } - - if (hoverTime > 0) { - float boxWidth = width; - boxWidth *= Math.min(hoverTime / HOVER_LIMIT, HOVER_LIMIT); - boxWidth += 8; - - float boxHeight = height; - boxHeight *= Math.min(hoverTime / HOVER_LIMIT, HOVER_LIMIT); - boxHeight += 8; - - matrices.push(); - matrices.translate(0, 0, 1); - drawFrame(matrices, x, y + type.getHeight(), boxWidth, boxHeight); - matrices.pop(); - } - } - - private void drawForeground(MatrixStack matrices, int x, int y) { - if (hoverTime > 0) { - matrices.push(); - - float scale = hoverTime / HOVER_LIMIT; - matrices.translate(this.x + x + 4, this.y + y + type.getHeight() + 4, 1); - matrices.scale(scale, scale, 1); - - /*x += this.x; - y += this.y;*/ - - var textRenderer = MinecraftClient.getInstance().textRenderer; - - // public int draw(MatrixStack matrices, Text text, float x, float y, int color) { - textRenderer.drawWithShadow(matrices, title, 1, 1, 0xFFFFFF); - int yOff = 10; - for (var line : description) { - textRenderer.drawWithShadow(matrices, line, 1, yOff, 0xFFFFFF); - yOff += 9; - } - matrices.pop(); - } - } - - private void drawStack(int x, int y) { - x += this.x + type.getItemX(); - y += this.y + type.getItemY(); - - var client = MinecraftClient.getInstance(); - var itemRenderer = client.getItemRenderer(); - var textRenderer = client.textRenderer; - - itemRenderer.renderInGuiWithOverrides(stack, x, y); - itemRenderer.renderGuiItemOverlay(textRenderer, stack, x, y, ""); - } - - private void drawFrame(MatrixStack matrices, int x, int y, float width, float height) { - matrices.push(); - matrices.translate(x, y, 0); - - // Top left corner - drawTexture(matrices, 0, 0, 4, 4, 17, 0, 4, 4, 256, 256); - // Top right corner - drawTexture(matrices, width - 4, 0, 4, 4, 22, 0, 4, 4, 256, 256); - // Bottom right corner - drawTexture(matrices, width - 4, height - 4, 4, 4, 22, 5, 4, 4, 256, 256); - // Bottom left corner - drawTexture(matrices, 0, height - 4, 4, 4, 17, 5, 4, 4, 256, 256); - - // Top middle - drawTexture(matrices, 4, 0, width - 8, 4, 21, 0, 1, 4, 256, 256); - // Left middle - drawTexture(matrices, 0, 4, 4, height - 8, 17, 4, 4, 1, 256, 256); - // Right middle - drawTexture(matrices, width - 4, 4, 4, height - 8, 22, 4, 4, 1, 256, 256); - // Bottom middle - drawTexture(matrices, 4, height - 4, width - 8, 4, 21, 5, 1, 4, 256, 256); - - // Middle - drawTexture(matrices, 4, 4, width - 8, height - 8, 21, 4, 1, 1, 256, 256); - - matrices.pop(); - } - } -} diff --git a/src/main/java/net/id/paradiselost/screen/ParadiseLostScreens.java b/src/main/java/net/id/paradiselost/screen/ParadiseLostScreens.java index cb218e7e3..90a086054 100644 --- a/src/main/java/net/id/paradiselost/screen/ParadiseLostScreens.java +++ b/src/main/java/net/id/paradiselost/screen/ParadiseLostScreens.java @@ -3,10 +3,8 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.client.screenhandler.v1.ScreenRegistry; -import net.fabricmc.fabric.api.event.client.ClientSpriteRegistryCallback; import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry; import net.id.paradiselost.entities.passive.moa.MoaEntity; -import net.id.paradiselost.screen.handler.LoreHandler; import net.id.paradiselost.screen.handler.MoaScreenHandler; import net.id.paradiselost.screen.slot.PreviewSlot; import net.minecraft.client.gui.screen.ingame.HandledScreen; @@ -20,8 +18,7 @@ public final class ParadiseLostScreens { private ParadiseLostScreens() { } - - public static final ScreenHandlerType LORE = register("lore", LoreHandler::new); + public static final ScreenHandlerType MOA = register("moa", (syncId, inventory, buffer) -> { Entity entity = inventory.player.world.getEntityById(buffer.readVarInt()); if (!(entity instanceof MoaEntity moa)) { @@ -36,7 +33,6 @@ public static void init() { @Environment(EnvType.CLIENT) public static void initClient() { - register(LORE, LoreScreen::new); register(MOA, MoaScreen::new); } diff --git a/src/main/java/net/id/paradiselost/screen/handler/LoreHandler.java b/src/main/java/net/id/paradiselost/screen/handler/LoreHandler.java deleted file mode 100644 index b0881860c..000000000 --- a/src/main/java/net/id/paradiselost/screen/handler/LoreHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.id.paradiselost.screen.handler; - -import net.id.paradiselost.screen.ParadiseLostScreens; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.screen.ScreenHandler; - -public final class LoreHandler extends ScreenHandler { - private final PlayerEntity player; - - public LoreHandler(int syncId, PlayerInventory playerInventory) { - super(ParadiseLostScreens.LORE, syncId); - this.player = playerInventory.player; - } - - @Override - public ItemStack transferSlot(PlayerEntity player, int index) { - throw new AssertionError("Please don't call me, I'm unimplemented. :-("); - } - - @Override - public boolean canUse(PlayerEntity player) { - return this.player.equals(player); - } -} diff --git a/src/main/java/net/id/paradiselost/screen/util/FloatyDrawableHelper.java b/src/main/java/net/id/paradiselost/screen/util/FloatyDrawableHelper.java deleted file mode 100644 index 24b24c902..000000000 --- a/src/main/java/net/id/paradiselost/screen/util/FloatyDrawableHelper.java +++ /dev/null @@ -1,249 +0,0 @@ -package net.id.paradiselost.screen.util; - -import com.mojang.blaze3d.platform.GlStateManager; -import com.mojang.blaze3d.systems.RenderSystem; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.render.*; -import net.minecraft.client.texture.Sprite; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.text.OrderedText; -import net.minecraft.text.Text; -import org.joml.Matrix4f; - -import java.util.function.BiConsumer; - -@Environment(EnvType.CLIENT) -public interface FloatyDrawableHelper { - default void drawHorizontalLine(MatrixStack matrices, float x1, float x2, float y, int color) { - if (x2 < x1) { - float i = x1; - x1 = x2; - x2 = i; - } - - fill(matrices, x1, y, x2 + 1, y + 1, color); - } - - default void drawVerticalLine(MatrixStack matrices, float x, float y1, float y2, int color) { - if (y2 < y1) { - float i = y1; - y1 = y2; - y2 = i; - } - - fill(matrices, x, y1 + 1, x + 1, y2, color); - } - - default void fill(MatrixStack matrices, float x1, float y1, float x2, float y2, int color) { - fill(matrices.peek().getPositionMatrix(), x1, y1, x2, y2, color); - } - - default void fill(Matrix4f matrix, float x1, float y1, float x2, float y2, int color) { - float j; - if (x1 < x2) { - j = x1; - x1 = x2; - x2 = j; - } - - if (y1 < y2) { - j = y1; - y1 = y2; - y2 = j; - } - - float f = (float) (color >> 24 & 255) / 255.0F; - float g = (float) (color >> 16 & 255) / 255.0F; - float h = (float) (color >> 8 & 255) / 255.0F; - float k = (float) (color & 255) / 255.0F; - BufferBuilder bufferBuilder = Tessellator.getInstance().getBuffer(); - RenderSystem.enableBlend(); - RenderSystem.disableTexture(); - RenderSystem.defaultBlendFunc(); - RenderSystem.setShader(GameRenderer::getPositionColorProgram); - bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR); - bufferBuilder.vertex(matrix, x1, y2, 0.0F).color(g, h, k, f).next(); - bufferBuilder.vertex(matrix, x2, y2, 0.0F).color(g, h, k, f).next(); - bufferBuilder.vertex(matrix, x2, y1, 0.0F).color(g, h, k, f).next(); - bufferBuilder.vertex(matrix, x1, y1, 0.0F).color(g, h, k, f).next(); - BufferRenderer.draw(bufferBuilder.end()); - RenderSystem.enableTexture(); - RenderSystem.disableBlend(); - } - - default void fillGradient(MatrixStack matrices, float startX, float startY, float endX, float endY, int colorStart, int colorEnd) { - fillGradient(matrices, startX, startY, endX, endY, colorStart, colorEnd, getZOffset()); - } - - default void fillGradient(MatrixStack matrices, float startX, float startY, float endX, float endY, int colorStart, int colorEnd, float z) { - RenderSystem.disableTexture(); - RenderSystem.enableBlend(); - RenderSystem.defaultBlendFunc(); - RenderSystem.setShader(GameRenderer::getPositionColorProgram); - Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder bufferBuilder = tessellator.getBuffer(); - bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR); - fillGradient(matrices.peek().getPositionMatrix(), bufferBuilder, startX, startY, endX, endY, z, colorStart, colorEnd); - tessellator.draw(); - RenderSystem.disableBlend(); - RenderSystem.enableTexture(); - } - - default void fillGradient(Matrix4f matrix, BufferBuilder bufferBuilder, float startX, float startY, float endX, float endY, float z, int colorStart, int colorEnd) { - float f = (float) (colorStart >> 24 & 255) / 255.0F; - float g = (float) (colorStart >> 16 & 255) / 255.0F; - float h = (float) (colorStart >> 8 & 255) / 255.0F; - float i = (float) (colorStart & 255) / 255.0F; - float j = (float) (colorEnd >> 24 & 255) / 255.0F; - float k = (float) (colorEnd >> 16 & 255) / 255.0F; - float l = (float) (colorEnd >> 8 & 255) / 255.0F; - float m = (float) (colorEnd & 255) / 255.0F; - bufferBuilder.vertex(matrix, endX, startY, z).color(g, h, i, f).next(); - bufferBuilder.vertex(matrix, startX, startY, z).color(g, h, i, f).next(); - bufferBuilder.vertex(matrix, startX, endY, z).color(k, l, m, j).next(); - bufferBuilder.vertex(matrix, endX, endY, z).color(k, l, m, j).next(); - } - - default void drawCenteredText(MatrixStack matrices, TextRenderer textRenderer, String text, float centerX, float y, int color) { - textRenderer.drawWithShadow(matrices, text, centerX - textRenderer.getWidth(text) / 2, y, color); - } - - default void drawCenteredText(MatrixStack matrices, TextRenderer textRenderer, Text text, float centerX, float y, int color) { - OrderedText orderedText = text.asOrderedText(); - textRenderer.drawWithShadow(matrices, orderedText, centerX - textRenderer.getWidth(orderedText) / 2, y, color); - } - - default void drawCenteredTextWithShadow(MatrixStack matrices, TextRenderer textRenderer, OrderedText text, float centerX, float y, int color) { - textRenderer.drawWithShadow(matrices, text, centerX - textRenderer.getWidth(text) / 2, y, color); - } - - default void drawStringWithShadow(MatrixStack matrices, TextRenderer textRenderer, String text, float x, float y, int color) { - textRenderer.drawWithShadow(matrices, text, x, y, color); - } - - default void drawWithShadow(MatrixStack matrices, TextRenderer textHandler, OrderedText text, float x, float y, int color) { - textHandler.drawWithShadow(matrices, text, x, y, color); - } - - default void drawTextWithShadow(MatrixStack matrices, TextRenderer textRenderer, Text text, float x, float y, int color) { - textRenderer.drawWithShadow(matrices, text, x, y, color); - } - - /** - * @param renderAction the action to render both the content and the outline, taking x and y positions as input - */ - default void drawWithOutline(float x, float y, BiConsumer renderAction) { - RenderSystem.blendFuncSeparate(GlStateManager.SrcFactor.ZERO, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA); - renderAction.accept(x + 1, y); - renderAction.accept(x - 1, y); - renderAction.accept(x, y + 1); - renderAction.accept(x, y - 1); - RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA); - renderAction.accept(x, y); - } - - default void drawSprite(MatrixStack matrices, float x, float y, float z, float width, float height, Sprite sprite) { - drawTexturedQuad(matrices.peek().getPositionMatrix(), x, x + width, y, y + height, z, sprite.getMinU(), sprite.getMaxU(), sprite.getMinV(), sprite.getMaxV()); - } - - /** - * Draws a textured rectangle from a region in a 256x256 texture. - * - *

The Z coordinate of the rectangle is {@link #getZOffset()}. - * - *

The width and height of the region are the same as - * the dimensions of the rectangle. - * - * @param matrices the matrix stack used for rendering - * @param x the X coordinate of the rectangle - * @param y the Y coordinate of the rectangle - * @param u the left-most coordinate of the texture region - * @param v the top-most coordinate of the texture region - * @param width the width - * @param height the height - */ - default void drawTexture(MatrixStack matrices, float x, float y, float u, float v, float width, float height) { - drawTexture(matrices, x, y, getZOffset(), u, v, width, height, 256, 256); - } - - /** - * Draws a textured rectangle from a region in a texture. - * - *

The width and height of the region are the same as - * the dimensions of the rectangle. - * - * @param matrices the matrix stack used for rendering - * @param x the X coordinate of the rectangle - * @param y the Y coordinate of the rectangle - * @param z the Z coordinate of the rectangle - * @param u the left-most coordinate of the texture region - * @param v the top-most coordinate of the texture region - * @param width the width of the rectangle - * @param height the height of the rectangle - * @param textureHeight the height of the entire texture - * @param textureWidth the width of the entire texture - */ - default void drawTexture(MatrixStack matrices, float x, float y, float z, float u, float v, float width, float height, float textureHeight, float textureWidth) { - drawTexture(matrices, x, x + width, y, y + height, z, width, height, u, v, textureWidth, textureHeight); - } - - /** - * Draws a textured rectangle from a region in a texture. - * - * @param matrices the matrix stack used for rendering - * @param x the X coordinate of the rectangle - * @param y the Y coordinate of the rectangle - * @param width the width of the rectangle - * @param height the height of the rectangle - * @param u the left-most coordinate of the texture region - * @param v the top-most coordinate of the texture region - * @param regionWidth the width of the texture region - * @param regionHeight the height of the texture region - * @param textureWidth the width of the entire texture - * @param textureHeight the height of the entire texture - */ - default void drawTexture(MatrixStack matrices, float x, float y, float width, float height, float u, float v, float regionWidth, float regionHeight, float textureWidth, float textureHeight) { - drawTexture(matrices, x, x + width, y, y + height, 0, regionWidth, regionHeight, u, v, textureWidth, textureHeight); - } - - /** - * Draws a textured rectangle from a region in a texture. - * - *

The width and height of the region are the same as - * the dimensions of the rectangle. - * - * @param matrices the matrix stack used for rendering - * @param x the X coordinate of the rectangle - * @param y the Y coordinate of the rectangle - * @param u the left-most coordinate of the texture region - * @param v the top-most coordinate of the texture region - * @param width the width of the rectangle - * @param height the height of the rectangle - * @param textureWidth the width of the entire texture - * @param textureHeight the height of the entire texture - */ - default void drawTexture(MatrixStack matrices, float x, float y, float u, float v, float width, float height, float textureWidth, float textureHeight) { - drawTexture(matrices, x, y, width, height, u, v, width, height, textureWidth, textureHeight); - } - - default void drawTexture(MatrixStack matrices, float x0, float y0, float x1, float y1, float z, float regionWidth, float regionHeight, float u, float v, float textureWidth, float textureHeight) { - drawTexturedQuad(matrices.peek().getPositionMatrix(), x0, y0, x1, y1, z, (u + 0.0F) / textureWidth, (u + regionWidth) / textureWidth, (v + 0.0F) / textureHeight, (v + regionHeight) / textureHeight); - } - - default void drawTexturedQuad(Matrix4f matrices, float x0, float x1, float y0, float y1, float z, float u0, float u1, float v0, float v1) { - RenderSystem.setShader(GameRenderer::getPositionTexProgram); - BufferBuilder bufferBuilder = Tessellator.getInstance().getBuffer(); - bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE); - bufferBuilder.vertex(matrices, x0, y1, z).texture(u0, v1).next(); - bufferBuilder.vertex(matrices, x1, y1, z).texture(u1, v1).next(); - bufferBuilder.vertex(matrices, x1, y0, z).texture(u1, v0).next(); - bufferBuilder.vertex(matrices, x0, y0, z).texture(u0, v0).next(); - BufferRenderer.draw(bufferBuilder.end()); - } - - default int getZOffset() { - return 0; - } -} diff --git a/src/main/java/net/id/paradiselost/tag/ParadiseLostStructureTags.java b/src/main/java/net/id/paradiselost/tag/ParadiseLostStructureTags.java index 05c73aeac..2eda7328e 100644 --- a/src/main/java/net/id/paradiselost/tag/ParadiseLostStructureTags.java +++ b/src/main/java/net/id/paradiselost/tag/ParadiseLostStructureTags.java @@ -3,7 +3,6 @@ import net.id.paradiselost.ParadiseLost; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.tag.TagKey; -import net.minecraft.util.registry.Registry; import net.minecraft.world.biome.Biome; public class ParadiseLostStructureTags { diff --git a/src/main/java/net/id/paradiselost/util/ParadiseLostDamageSources.java b/src/main/java/net/id/paradiselost/util/ParadiseLostDamageSources.java deleted file mode 100644 index a8f441d8f..000000000 --- a/src/main/java/net/id/paradiselost/util/ParadiseLostDamageSources.java +++ /dev/null @@ -1,15 +0,0 @@ -package net.id.paradiselost.util; - -import net.minecraft.entity.damage.DamageSource; - -public class ParadiseLostDamageSources extends DamageSource { - - public static final DamageSource PARADISE_LOST_FALL = (new ParadiseLostDamageSources("paradise_lost_fall")).setBypassesArmor().setFromFalling(); - - public static final DamageSource NIGHTMARE = (new ParadiseLostDamageSources("paradise_lost_nightmare").setBypassesArmor().setUsesMagic().setScaledWithDifficulty()); - - protected ParadiseLostDamageSources(String name) { - super(name); - } - -} diff --git a/src/main/java/net/id/paradiselost/util/ParadiseLostDamageTypes.java b/src/main/java/net/id/paradiselost/util/ParadiseLostDamageTypes.java new file mode 100644 index 000000000..b9a41ad9c --- /dev/null +++ b/src/main/java/net/id/paradiselost/util/ParadiseLostDamageTypes.java @@ -0,0 +1,20 @@ +package net.id.paradiselost.util; + +import net.id.paradiselost.ParadiseLost; +import net.minecraft.entity.damage.DamageSource; +import net.minecraft.entity.damage.DamageType; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.world.World; + +public class ParadiseLostDamageTypes { + + public static final RegistryKey FALL_FROM_PARADISE = RegistryKey.of(RegistryKeys.DAMAGE_TYPE, ParadiseLost.locate("fall")); + + public static DamageSource of(World world, RegistryKey key) { + return new DamageSource(world.getRegistryManager().get(RegistryKeys.DAMAGE_TYPE).entryOf(key)); + } + + public static void init() {} + +} diff --git a/src/main/java/net/id/paradiselost/util/ParadiseLostSoundEvents.java b/src/main/java/net/id/paradiselost/util/ParadiseLostSoundEvents.java index e9e7df594..1c82f403b 100644 --- a/src/main/java/net/id/paradiselost/util/ParadiseLostSoundEvents.java +++ b/src/main/java/net/id/paradiselost/util/ParadiseLostSoundEvents.java @@ -246,7 +246,7 @@ public static Resource createResource() { } public static final class Music { - public static final MusicSound PARADISE_LOST = new MusicSound(MUSIC_PARADISE_LOST, 12000, 24000, false); + public static final MusicSound PARADISE_LOST = new MusicSound(Registries.SOUND_EVENT.getEntry(MUSIC_PARADISE_LOST), 12000, 24000, false); //Triggers ()V private static void init() { diff --git a/src/main/java/net/id/paradiselost/world/feature/structure/ParadiseLostStructureFeatures.java b/src/main/java/net/id/paradiselost/world/feature/structure/ParadiseLostStructureFeatures.java index 7b160acd4..f006cbb0c 100644 --- a/src/main/java/net/id/paradiselost/world/feature/structure/ParadiseLostStructureFeatures.java +++ b/src/main/java/net/id/paradiselost/world/feature/structure/ParadiseLostStructureFeatures.java @@ -2,9 +2,11 @@ import net.id.paradiselost.world.feature.structure.generator.AurelTowerGenerator; import net.id.paradiselost.world.feature.structure.generator.WellGenerator; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKeys; import net.minecraft.structure.StructurePieceType; import net.minecraft.registry.tag.TagKey; -import net.minecraft.util.registry.Registry; import net.minecraft.world.gen.structure.Structure; import net.minecraft.world.gen.structure.StructureType; @@ -20,7 +22,7 @@ public class ParadiseLostStructureFeatures { public static final StructurePieceType AUREL_TOWER_PIECE = AurelTowerGenerator.Piece::new; private static TagKey tagKey(String name) { - return TagKey.of(Registry.STRUCTURE_KEY, locate(name)); + return TagKey.of(RegistryKeys.STRUCTURE, locate(name)); } public static void init() { @@ -30,7 +32,7 @@ public static void init() { private static void register(TagKey name, StructureType type, StructurePieceType pieceType) { var id = name.id(); - Registry.register(Registry.STRUCTURE_TYPE, id, type); - Registry.register(Registry.STRUCTURE_PIECE, id, pieceType); + Registry.register(Registries.STRUCTURE_TYPE, id, type); + Registry.register(Registries.STRUCTURE_PIECE, id, pieceType); } } diff --git a/src/main/resources/assets/paradise_lost/textures/hud/bloodstone/affinity.png b/src/main/resources/assets/paradise_lost/textures/mob_effect/affinity.png similarity index 100% rename from src/main/resources/assets/paradise_lost/textures/hud/bloodstone/affinity.png rename to src/main/resources/assets/paradise_lost/textures/mob_effect/affinity.png diff --git a/src/main/resources/assets/paradise_lost/textures/hud/bloodstone/race.png b/src/main/resources/assets/paradise_lost/textures/mob_effect/race.png similarity index 100% rename from src/main/resources/assets/paradise_lost/textures/hud/bloodstone/race.png rename to src/main/resources/assets/paradise_lost/textures/mob_effect/race.png diff --git a/src/main/resources/data/paradise_lost/damage_type/fall.json b/src/main/resources/data/paradise_lost/damage_type/fall.json new file mode 100644 index 000000000..13229d201 --- /dev/null +++ b/src/main/resources/data/paradise_lost/damage_type/fall.json @@ -0,0 +1,5 @@ +{ + "exhaustion": 0.0, + "message_id": "fall", + "scaling": "when_caused_by_living_non_player" +} \ No newline at end of file diff --git a/src/main/resources/data/paradise_lost/tags/damage_type/bypasses_armor.json b/src/main/resources/data/paradise_lost/tags/damage_type/bypasses_armor.json new file mode 100644 index 000000000..7554de790 --- /dev/null +++ b/src/main/resources/data/paradise_lost/tags/damage_type/bypasses_armor.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "paradise_lost:fall" + ] +} \ No newline at end of file