diff --git a/src/main/java/net/splatcraft/forge/Splatcraft.java b/src/main/java/net/splatcraft/forge/Splatcraft.java index 8830f8996..04459fbf4 100644 --- a/src/main/java/net/splatcraft/forge/Splatcraft.java +++ b/src/main/java/net/splatcraft/forge/Splatcraft.java @@ -58,7 +58,7 @@ public Splatcraft() { MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(FMLJavaModLoadingContext.get().getModEventBus()); - //addBuiltinPack("classic_weapons", new TextComponent("Splatcraft - Classic Weapons")); + //addBuiltinPack("classic_weapons", Component.literal("Splatcraft - Classic Weapons")); } diff --git a/src/main/java/net/splatcraft/forge/client/gui/SuperJumpSelectorScreen.java b/src/main/java/net/splatcraft/forge/client/gui/SuperJumpSelectorScreen.java index be116d703..2abb398ee 100644 --- a/src/main/java/net/splatcraft/forge/client/gui/SuperJumpSelectorScreen.java +++ b/src/main/java/net/splatcraft/forge/client/gui/SuperJumpSelectorScreen.java @@ -3,26 +3,21 @@ import com.mojang.authlib.GameProfile; import com.mojang.authlib.minecraft.MinecraftProfileTexture; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; +import java.util.ArrayList; +import java.util.Map; +import java.util.UUID; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Gui; -import net.minecraft.client.gui.GuiComponent; -import net.minecraft.client.gui.spectator.SpectatorMenuItem; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.resources.DefaultPlayerSkin; +import net.minecraft.core.UUIDUtil; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.splatcraft.forge.client.handlers.JumpLureHudHandler; import net.splatcraft.forge.registries.SplatcraftItems; -import java.util.ArrayList; -import java.util.Map; -import java.util.UUID; - -public class SuperJumpSelectorScreen extends GuiComponent +public class SuperJumpSelectorScreen { @@ -32,7 +27,7 @@ public SuperJumpSelectorScreen() private static final Minecraft mc = Minecraft.getInstance(); - public void render(PoseStack stack, float partialTicks, JumpLureHudHandler.SuperJumpTargets targets, double scrollDelta) + public void render(GuiGraphics graphics, float partialTicks, JumpLureHudHandler.SuperJumpTargets targets, double scrollDelta) { ArrayList playerUuids = new ArrayList<>(targets.playerTargetUuids); @@ -42,25 +37,25 @@ public void render(PoseStack stack, float partialTicks, JumpLureHudHandler.Super ArrayList options = new ArrayList<>(playerUuids.stream().map(uuid -> new PlayerMenuItem(mc.getConnection().getPlayerInfo(uuid).getProfile())).toList()); if(targets.canTargetSpawn) - options.add(0, new ItemStackMenuItem(new ItemStack(SplatcraftItems.spawnPad.get()), new TextComponent("Go to Spawn"))); - options.add(0, new ItemStackMenuItem(new ItemStack(Items.BARRIER), new TextComponent("Cancel"))); + options.add(0, new ItemStackMenuItem(new ItemStack(SplatcraftItems.spawnPad.get()), Component.literal("Go to Spawn"))); + options.add(0, new ItemStackMenuItem(new ItemStack(Items.BARRIER), Component.literal("Cancel"))); int screenWidth = mc.getWindow().getGuiScaledWidth(); int screenHeight = mc.getWindow().getGuiScaledHeight(); for(int i = -Math.min(entryCount / 2, 4); i <= Math.min(entryCount / 2, 4); i++) { - options.get(Math.floorMod((i + index), entryCount)).renderIcon(stack, screenWidth / 2 - 10 + i * 20, 10, partialTicks, 1); + options.get(Math.floorMod((i + index), entryCount)).renderIcon(graphics, screenWidth / 2 - 10 + i * 20, 10, partialTicks, 1); } - drawCenteredString(stack, mc.font, options.get(index).getName(), screenWidth / 2, 32, 0xFFFFFF); + graphics.drawCenteredString(mc.font, options.get(index).getName(), screenWidth / 2, 32, 0xFFFFFF); } interface MenuItem { Component getName(); - void renderIcon(PoseStack poseStack, int x, int y, float partialTicks, float alpha); + void renderIcon(GuiGraphics graphics, int x, int y, float partialTicks, float alpha); } static class ItemStackMenuItem implements MenuItem @@ -80,10 +75,10 @@ public Component getName() { } @Override - public void renderIcon(PoseStack poseStack, int x, int y, float partialTicks, float alpha) + public void renderIcon(GuiGraphics graphics, int x, int y, float partialTicks, float alpha) { RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, alpha); - mc.getItemRenderer().renderGuiItem(this.stack, x, y); + graphics.renderItem(this.stack, x, y); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1); } } @@ -101,10 +96,10 @@ public PlayerMenuItem(GameProfile profile) { if (map.containsKey(MinecraftProfileTexture.Type.SKIN)) { this.location = minecraft.getSkinManager().registerTexture(map.get(MinecraftProfileTexture.Type.SKIN), MinecraftProfileTexture.Type.SKIN); } else { - this.location = DefaultPlayerSkin.getDefaultSkin(Player.createPlayerUUID(profile)); + this.location = DefaultPlayerSkin.getDefaultSkin(UUIDUtil.getOrCreatePlayerUUID(profile)); } - this.name = new TextComponent(profile.getName()); + this.name = Component.literal(profile.getName()); } @Override @@ -113,12 +108,11 @@ public Component getName() { } @Override - public void renderIcon(PoseStack poseStack, int x, int y, float partialTicks, float alpha) + public void renderIcon(GuiGraphics graphics, int x, int y, float partialTicks, float alpha) { - RenderSystem.setShaderTexture(0, this.location); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, alpha); - GuiComponent.blit(poseStack, x, y, 16, 16, 8.0F, 8.0F, 8, 8, 64, 64); - GuiComponent.blit(poseStack, x, y, 16, 16, 40.0F, 8.0F, 8, 8, 64, 64); + graphics.blit(location, x, y, 16, 16, 8.0F, 8.0F, 8, 8, 64, 64); + graphics.blit(location, x, y, 16, 16, 40.0F, 8.0F, 8, 8, 64, 64); RenderSystem.setShaderColor(1, 1, 1, 1); } } diff --git a/src/main/java/net/splatcraft/forge/client/gui/WeaponWorkbenchScreen.java b/src/main/java/net/splatcraft/forge/client/gui/WeaponWorkbenchScreen.java index a3bd76712..ff1a86a9c 100644 --- a/src/main/java/net/splatcraft/forge/client/gui/WeaponWorkbenchScreen.java +++ b/src/main/java/net/splatcraft/forge/client/gui/WeaponWorkbenchScreen.java @@ -430,7 +430,7 @@ protected void renderLabels(PoseStack matrixStack, int mouseX, int mouseY) } protected static Component getDisplayName(ItemStack stack) { - MutableComponent iformattabletextcomponent = (new TextComponent("")).append(stack.getHoverName()); + MutableComponent iformattabletextcomponent = (Component.literal("")).append(stack.getHoverName()); if (stack.hasCustomHoverName()) iformattabletextcomponent.withStyle(ChatFormatting.ITALIC); diff --git a/src/main/java/net/splatcraft/forge/client/gui/stagepad/StageActionsScreen.java b/src/main/java/net/splatcraft/forge/client/gui/stagepad/StageActionsScreen.java index 4f1f0cdfc..01b24ea12 100644 --- a/src/main/java/net/splatcraft/forge/client/gui/stagepad/StageActionsScreen.java +++ b/src/main/java/net/splatcraft/forge/client/gui/stagepad/StageActionsScreen.java @@ -3,6 +3,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; import net.minecraft.core.BlockPos; @@ -55,14 +56,14 @@ public void onStagesUpdate() } @Override - public void handleWidgets(PoseStack poseStack, int mouseX, int mouseY, float partialTicks) { + public void handleWidgets(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { } @Override - public void renderBackground(PoseStack poseStack) + public void renderBackground(GuiGraphics graphics) { - super.renderBackground(poseStack); + super.renderBackground(graphics); RenderSystem.setShaderColor(1, 1, 1, 1); RenderSystem.setShaderTexture(0, TEXTURES); @@ -70,7 +71,9 @@ public void renderBackground(PoseStack poseStack) int x = (width - imageWidth) / 2; int y = (height - imageHeight) / 2; - blit(poseStack, x, y, 0, 0, imageWidth, imageHeight); + graphics.blitNineSliced(); + + graphics.blit(TEXTURES, x, y, 0, 0, imageWidth, imageHeight); } } \ No newline at end of file diff --git a/src/main/java/net/splatcraft/forge/client/gui/stagepad/StageCreationScreen.java b/src/main/java/net/splatcraft/forge/client/gui/stagepad/StageCreationScreen.java index 43feb59ad..24c41d058 100644 --- a/src/main/java/net/splatcraft/forge/client/gui/stagepad/StageCreationScreen.java +++ b/src/main/java/net/splatcraft/forge/client/gui/stagepad/StageCreationScreen.java @@ -78,7 +78,7 @@ public StageCreationScreen(Component label, @Nullable Screen parent, String save { if(canCreate()) { - SplatcraftPacketHandler.sendToServer(new CreateOrEditStagePacket(stageId, new TextComponent(this.stageName.getValue()), corner1, corner2, dimension)); + SplatcraftPacketHandler.sendToServer(new CreateOrEditStagePacket(stageId, Component.literal(this.stageName.getValue()), corner1, corner2, dimension)); buttons.forEach(button -> button.active = false); this.stageName.setFocus(false); diff --git a/src/main/java/net/splatcraft/forge/client/gui/stagepad/StageRulesScreen.java b/src/main/java/net/splatcraft/forge/client/gui/stagepad/StageRulesScreen.java index 397be255d..77b20fa87 100644 --- a/src/main/java/net/splatcraft/forge/client/gui/stagepad/StageRulesScreen.java +++ b/src/main/java/net/splatcraft/forge/client/gui/stagepad/StageRulesScreen.java @@ -169,7 +169,7 @@ public RuleNameLabel(GameRules.Key rule) ArrayList lines = new ArrayList<>(font.split(Component.translatable(rule.getDescriptionId()), 150)); - lines.add(new TextComponent(rule.getId().replace(Splatcraft.MODID + ".", "")).withStyle(ChatFormatting.YELLOW).getVisualOrderText()); + lines.add(Component.literal(rule.getId().replace(Splatcraft.MODID + ".", "")).withStyle(ChatFormatting.YELLOW).getVisualOrderText()); String descriptionKey = rule.getDescriptionId() + ".description"; diff --git a/src/main/java/net/splatcraft/forge/client/gui/stagepad/StageSettingsScreen.java b/src/main/java/net/splatcraft/forge/client/gui/stagepad/StageSettingsScreen.java index 2f39ec19d..fa47c2ed1 100644 --- a/src/main/java/net/splatcraft/forge/client/gui/stagepad/StageSettingsScreen.java +++ b/src/main/java/net/splatcraft/forge/client/gui/stagepad/StageSettingsScreen.java @@ -130,7 +130,7 @@ public void removed() private void saveChanges() { if(!stage.getStageName().toString().equals(stageName.getValue())) - SplatcraftPacketHandler.sendToServer(new CreateOrEditStagePacket(stage.id, new TextComponent(stageName.getValue()), stage.cornerA, stage.cornerB, stage.dimID)); + SplatcraftPacketHandler.sendToServer(new CreateOrEditStagePacket(stage.id, Component.literal(stageName.getValue()), stage.cornerA, stage.cornerB, stage.dimID)); } @Override diff --git a/src/main/java/net/splatcraft/forge/client/handlers/ClientSetupHandler.java b/src/main/java/net/splatcraft/forge/client/handlers/ClientSetupHandler.java index 05b686cde..ad7129608 100644 --- a/src/main/java/net/splatcraft/forge/client/handlers/ClientSetupHandler.java +++ b/src/main/java/net/splatcraft/forge/client/handlers/ClientSetupHandler.java @@ -7,8 +7,6 @@ import net.minecraft.client.color.item.ItemColors; import net.minecraft.client.gui.screens.MenuScreens; import net.minecraft.core.BlockPos; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockAndTintGetter; @@ -16,8 +14,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.ColorHandlerEvent; -import net.minecraftforge.client.event.TextureStitchEvent; +import net.minecraftforge.client.event.RegisterColorHandlersEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.splatcraft.forge.Splatcraft; @@ -26,7 +23,6 @@ import net.splatcraft.forge.client.gui.WeaponWorkbenchScreen; import net.splatcraft.forge.data.SplatcraftTags; import net.splatcraft.forge.data.capabilities.playerinfo.PlayerInfoCapability; -import net.splatcraft.forge.items.SquidBumperItem; import net.splatcraft.forge.registries.SplatcraftBlocks; import net.splatcraft.forge.registries.SplatcraftItems; import net.splatcraft.forge.registries.SplatcraftTileEntities; @@ -38,6 +34,7 @@ public class ClientSetupHandler { + /* @SubscribeEvent public static void onTextureStitch(TextureStitchEvent.Pre event) { @@ -57,6 +54,7 @@ public static void onTextureStitch(TextureStitchEvent.Pre event) while(Minecraft.getInstance().getResourceManager().hasResource(new ResourceLocation(Splatcraft.MODID, "textures/blocks/glitter"+i+".png"))) event.addSprite(new ResourceLocation(Splatcraft.MODID, "blocks/glitter"+(i++))); } + */ public static void bindScreenContainers() { @@ -66,7 +64,8 @@ public static void bindScreenContainers() @SubscribeEvent - public static void initItemColors(ColorHandlerEvent.Item event) { + public static void initItemColors(RegisterColorHandlersEvent.Item event) + { ItemColors colors = event.getItemColors(); SplatcraftItems.inkColoredItems.add(SplatcraftItems.splatfestBand.get()); @@ -77,7 +76,7 @@ public static void initItemColors(ColorHandlerEvent.Item event) { } @SubscribeEvent - public static void initBlockColors(ColorHandlerEvent.Block event) + public static void initBlockColors(RegisterColorHandlersEvent.Block event) { BlockColors colors = event.getBlockColors(); diff --git a/src/main/java/net/splatcraft/forge/client/handlers/GuiOverlayHandler.java b/src/main/java/net/splatcraft/forge/client/handlers/GuiOverlayHandler.java new file mode 100644 index 000000000..5fa45b708 --- /dev/null +++ b/src/main/java/net/splatcraft/forge/client/handlers/GuiOverlayHandler.java @@ -0,0 +1,17 @@ +package net.splatcraft.forge.client.handlers; + +import net.minecraftforge.client.event.RegisterGuiOverlaysEvent; +import net.minecraftforge.client.gui.overlay.VanillaGuiOverlay; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class GuiOverlayHandler +{ + @SubscribeEvent + public static void registerGuiOverlays(RegisterGuiOverlaysEvent event) + { + event.registerAbove(VanillaGuiOverlay.CROSSHAIR.id(), "splatcraft_overlay", RendererHandler::renderGui); + event.registerAbove(VanillaGuiOverlay.HOTBAR.id(), "splatcraft_jump_lure", JumpLureHudHandler::renderGui); + } +} diff --git a/src/main/java/net/splatcraft/forge/client/handlers/JumpLureHudHandler.java b/src/main/java/net/splatcraft/forge/client/handlers/JumpLureHudHandler.java index c3628c5fc..ca3da3810 100644 --- a/src/main/java/net/splatcraft/forge/client/handlers/JumpLureHudHandler.java +++ b/src/main/java/net/splatcraft/forge/client/handlers/JumpLureHudHandler.java @@ -1,12 +1,15 @@ package net.splatcraft.forge.client.handlers; +import java.util.ArrayList; +import java.util.UUID; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.player.LocalPlayer; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.InputEvent; -import net.minecraftforge.client.event.RenderGameOverlayEvent; +import net.minecraftforge.client.gui.overlay.ForgeGui; import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @@ -16,9 +19,6 @@ import net.splatcraft.forge.network.c2s.UseJumpLurePacket; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.UUID; - @OnlyIn(Dist.CLIENT) @Mod.EventBusSubscriber(Dist.CLIENT) public class JumpLureHudHandler @@ -29,21 +29,20 @@ public class JumpLureHudHandler private static final SuperJumpSelectorScreen selectorGui = new SuperJumpSelectorScreen(); - @SubscribeEvent - public static void renderGui(RenderGameOverlayEvent.Pre event) + public static void renderGui(ForgeGui gui, GuiGraphics guiGraphics, float partialTick, int screenWidth, int screenHeight) { LocalPlayer player = Minecraft.getInstance().player; - if(!event.getType().equals(RenderGameOverlayEvent.ElementType.LAYER) || player == null || + if(player == null || !(player.getUseItem().getItem() instanceof JumpLureItem) || targets == null) return; - selectorGui.render(event.getMatrixStack(), event.getPartialTicks(), targets, scrollDelta); + selectorGui.render(guiGraphics, partialTick, targets, scrollDelta); } @SubscribeEvent - public static void onMouseScroll(InputEvent.MouseScrollEvent event) + public static void onMouseScroll(InputEvent.MouseScrollingEvent event) { LocalPlayer player = Minecraft.getInstance().player; if(player == null) diff --git a/src/main/java/net/splatcraft/forge/client/handlers/PlayerMovementHandler.java b/src/main/java/net/splatcraft/forge/client/handlers/PlayerMovementHandler.java index f11262e8a..ba3b886e5 100644 --- a/src/main/java/net/splatcraft/forge/client/handlers/PlayerMovementHandler.java +++ b/src/main/java/net/splatcraft/forge/client/handlers/PlayerMovementHandler.java @@ -1,5 +1,6 @@ package net.splatcraft.forge.client.handlers; +import java.util.UUID; import net.minecraft.client.player.Input; import net.minecraft.client.player.LocalPlayer; import net.minecraft.world.effect.MobEffects; @@ -23,8 +24,6 @@ import net.splatcraft.forge.util.InkBlockUtils; import net.splatcraft.forge.util.PlayerCooldown; -import java.util.UUID; - @Mod.EventBusSubscriber(value = Dist.CLIENT) public class PlayerMovementHandler @@ -79,7 +78,7 @@ else if(useStack.isEmpty()) if (PlayerInfoCapability.isSquid(player)) { - if (InkBlockUtils.canSquidSwim(player) && !speedAttribute.hasModifier(INK_SWIM_SPEED) && player.isOnGround()) + if (InkBlockUtils.canSquidSwim(player) && !speedAttribute.hasModifier(INK_SWIM_SPEED) && player.onGround()) speedAttribute.addTransientModifier(INK_SWIM_SPEED); if (!swimAttribute.hasModifier(SQUID_SWIM_SPEED)) swimAttribute.addTransientModifier(SQUID_SWIM_SPEED); @@ -94,7 +93,7 @@ else if(useStack.isEmpty()) if (!player.getAbilities().flying) { if (speedAttribute.hasModifier(INK_SWIM_SPEED)) - player.moveRelative((float) player.getAttributeValue(SplatcraftAttributes.inkSwimSpeed.get()) * (player.isOnGround() ? 1 : 0.75f), new Vec3(player.xxa, 0.0f, player.zza).normalize()); + player.moveRelative((float) player.getAttributeValue(SplatcraftAttributes.inkSwimSpeed.get()) * (player.onGround() ? 1 : 0.75f), new Vec3(player.xxa, 0.0f, player.zza).normalize()); } } @@ -104,7 +103,7 @@ public static void onInputUpdate(net.minecraftforge.client.event.MovementInputUp { Input input = event.getInput(); - Player player = event.getPlayer(); + Player player = event.getEntity(); float speedMod = !input.shiftKeyDown ? PlayerInfoCapability.isSquid(player) && InkBlockUtils.canSquidHide(player) ? 30f : 2f : 1f; diff --git a/src/main/java/net/splatcraft/forge/client/handlers/RendererHandler.java b/src/main/java/net/splatcraft/forge/client/handlers/RendererHandler.java index d15500ad7..a7409d67a 100644 --- a/src/main/java/net/splatcraft/forge/client/handlers/RendererHandler.java +++ b/src/main/java/net/splatcraft/forge/client/handlers/RendererHandler.java @@ -361,7 +361,7 @@ public static void renderNameplate(RenderNameplateEvent event) public static Component getDisplayName(PlayerInfo info) { - return info.getTabListDisplayName() != null ? info.getTabListDisplayName().copy() : PlayerTeam.formatNameForTeam(info.getTeam(), new TextComponent(info.getProfile().getName())); + return info.getTabListDisplayName() != null ? info.getTabListDisplayName().copy() : PlayerTeam.formatNameForTeam(info.getTeam(), Component.literal(info.getProfile().getName())); } diff --git a/src/main/java/net/splatcraft/forge/client/layer/InkAccessoryLayer.java b/src/main/java/net/splatcraft/forge/client/layer/InkAccessoryLayer.java index bc1b8c721..3588e9df8 100644 --- a/src/main/java/net/splatcraft/forge/client/layer/InkAccessoryLayer.java +++ b/src/main/java/net/splatcraft/forge/client/layer/InkAccessoryLayer.java @@ -15,6 +15,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.registries.ForgeRegistries; import net.splatcraft.forge.data.capabilities.playerinfo.PlayerInfo; import net.splatcraft.forge.data.capabilities.playerinfo.PlayerInfoCapability; import net.splatcraft.forge.util.ColorUtils; @@ -43,11 +44,11 @@ public void render(PoseStack matrixStack, MultiBufferSource iRenderTypeBuffer, i return; boolean isFoil = inkBand.hasFoil(); - ResourceLocation stackLoc = inkBand.getItem().getRegistryName(); + ResourceLocation stackLoc = ForgeRegistries.ITEMS.getKey(inkBand.getItem()); String customModelData = ""; - if(inkBand.getOrCreateTag().contains("CustomModelData") && Minecraft.getInstance().getResourceManager().hasResource(new ResourceLocation(stackLoc.getNamespace(), "textures/models/" + stackLoc.getPath() + "_" + inkBand.getOrCreateTag().getInt("CustomModelData") + ".png"))) + if(inkBand.getOrCreateTag().contains("CustomModelData") && Minecraft.getInstance().getResourceManager().getResource(new ResourceLocation(stackLoc.getNamespace(), "textures/models/" + stackLoc.getPath() + "_" + inkBand.getOrCreateTag().getInt("CustomModelData") + ".png")).isPresent()) { customModelData = "_" + inkBand.getOrCreateTag().getInt("CustomModelData"); } @@ -68,11 +69,11 @@ public void render(PoseStack matrixStack, MultiBufferSource iRenderTypeBuffer, i float b = (color & 255) / 255.0f; - if(Minecraft.getInstance().getResourceManager().hasResource(texture)) + if(Minecraft.getInstance().getResourceManager().getResource(texture).isPresent()) { this.getParentModel().copyPropertiesTo(MODEL); this.render(matrixStack, iRenderTypeBuffer, i, isFoil, MODEL, 1.0F, 1.0F, 1.0F, texture); - if(Minecraft.getInstance().getResourceManager().hasResource(coloredTexture)) + if(Minecraft.getInstance().getResourceManager().getResource(coloredTexture).isPresent()) this.render(matrixStack, iRenderTypeBuffer, i, isFoil, MODEL, r, g, b, coloredTexture); } } diff --git a/src/main/java/net/splatcraft/forge/client/renderer/SquidBumperRenderer.java b/src/main/java/net/splatcraft/forge/client/renderer/SquidBumperRenderer.java index 5bf87369c..7cb88facc 100644 --- a/src/main/java/net/splatcraft/forge/client/renderer/SquidBumperRenderer.java +++ b/src/main/java/net/splatcraft/forge/client/renderer/SquidBumperRenderer.java @@ -44,7 +44,7 @@ protected void renderNameTag(SquidBumperEntity entityIn, Component displayNameIn } else { float health = 20 - entityIn.getInkHealth(); - super.renderNameTag(entityIn, new TextComponent((health >= 20 ? ChatFormatting.DARK_RED : "") + String.format("%.1f", health)), PoseStackIn, bufferIn, packedLightIn); + super.renderNameTag(entityIn, Component.literal((health >= 20 ? ChatFormatting.DARK_RED : "") + String.format("%.1f", health)), PoseStackIn, bufferIn, packedLightIn); } } diff --git a/src/main/java/net/splatcraft/forge/commands/ClearInkCommand.java b/src/main/java/net/splatcraft/forge/commands/ClearInkCommand.java index b80a2615e..2bead9c5e 100644 --- a/src/main/java/net/splatcraft/forge/commands/ClearInkCommand.java +++ b/src/main/java/net/splatcraft/forge/commands/ClearInkCommand.java @@ -44,7 +44,7 @@ private static int execute(CommandSourceStack source, BlockPos from, BlockPos to { RemoteItem.RemoteResult result = InkDisruptorItem.clearInk(source.getLevel(), from, to); - source.sendSuccess(result.getOutput(), true); + source.sendSuccess(result::getOutput, true); return result.getCommandResult(); } } diff --git a/src/main/java/net/splatcraft/forge/commands/InkColorCommand.java b/src/main/java/net/splatcraft/forge/commands/InkColorCommand.java index ec895d41f..67bf19225 100644 --- a/src/main/java/net/splatcraft/forge/commands/InkColorCommand.java +++ b/src/main/java/net/splatcraft/forge/commands/InkColorCommand.java @@ -45,7 +45,7 @@ private static int setColor(CommandSourceStack source, int color) throws Command //TODO server friendly feedback message public static MutableComponent getColorName(int color) { - return new TextComponent("#" + String.format("%06X", color).toUpperCase()).setStyle(Style.EMPTY.withColor(TextColor.fromRgb(color))); + return Component.literal("#" + String.format("%06X", color).toUpperCase()).setStyle(Style.EMPTY.withColor(TextColor.fromRgb(color))); } private static int setColor(CommandSourceStack source, int color, Collection targets) diff --git a/src/main/java/net/splatcraft/forge/commands/ReplaceColorCommand.java b/src/main/java/net/splatcraft/forge/commands/ReplaceColorCommand.java index 906848545..69c243574 100644 --- a/src/main/java/net/splatcraft/forge/commands/ReplaceColorCommand.java +++ b/src/main/java/net/splatcraft/forge/commands/ReplaceColorCommand.java @@ -89,7 +89,7 @@ public static int execute(CommandSourceStack source, BlockPos from, BlockPos to, { RemoteItem.RemoteResult result = ColorChangerItem.replaceColor(source.getLevel(), from, to, color, mode, affectedColor, affectedStage, affectedTeam); - source.sendSuccess(result.getOutput(), true); + source.sendSuccess(result::getOutput, true); return result.getCommandResult(); } } diff --git a/src/main/java/net/splatcraft/forge/commands/ScanTurfCommand.java b/src/main/java/net/splatcraft/forge/commands/ScanTurfCommand.java index d1019781f..cd9473364 100644 --- a/src/main/java/net/splatcraft/forge/commands/ScanTurfCommand.java +++ b/src/main/java/net/splatcraft/forge/commands/ScanTurfCommand.java @@ -79,7 +79,7 @@ private static int execute(CommandSourceStack source, BlockPos from, BlockPos to { RemoteItem.RemoteResult result = TurfScannerItem.scanTurf(source.getLevel(), source.getLevel(), from, to, mode, targets); - source.sendSuccess(result.getOutput(), true); + source.sendSuccess(result::getOutput, true); return result.getCommandResult(); } diff --git a/src/main/java/net/splatcraft/forge/commands/StageCommand.java b/src/main/java/net/splatcraft/forge/commands/StageCommand.java index 870a430b6..b2d06f542 100644 --- a/src/main/java/net/splatcraft/forge/commands/StageCommand.java +++ b/src/main/java/net/splatcraft/forge/commands/StageCommand.java @@ -293,7 +293,7 @@ private static int setTeam(CommandSourceStack source, String stageId, String tea } stage.setTeamColor(teamId, teamColor); - source.sendSuccess(Component.translatable("commands.stage.teams.set.success", affectedBlocks, stageId, new TextComponent(teamId).withStyle(Style.EMPTY.withColor(TextColor.fromRgb(teamColor)))), true); + source.sendSuccess(Component.translatable("commands.stage.teams.set.success", affectedBlocks, stageId, Component.literal(teamId).withStyle(Style.EMPTY.withColor(TextColor.fromRgb(teamColor)))), true); SplatcraftPacketHandler.sendToAll(new UpdateStageListPacket(stages)); @@ -356,7 +356,7 @@ private static int removeTeam(CommandSourceStack source, String stageId, String stage.removeTeam(teamId); - source.sendSuccess(Component.translatable("commands.stage.teams.remove.success", new TextComponent(teamId).withStyle(Style.EMPTY.withColor(TextColor.fromRgb(teamColor))), stageId, affectedBlocks), true); + source.sendSuccess(Component.translatable("commands.stage.teams.remove.success", Component.literal(teamId).withStyle(Style.EMPTY.withColor(TextColor.fromRgb(teamColor))), stageId, affectedBlocks), true); return teamColor; } diff --git a/src/main/java/net/splatcraft/forge/crafting/InkVatColorRecipe.java b/src/main/java/net/splatcraft/forge/crafting/InkVatColorRecipe.java index 7768675e9..659c3fdbc 100644 --- a/src/main/java/net/splatcraft/forge/crafting/InkVatColorRecipe.java +++ b/src/main/java/net/splatcraft/forge/crafting/InkVatColorRecipe.java @@ -17,7 +17,6 @@ import net.minecraft.world.level.Level; import net.minecraftforge.registries.ForgeRegistryEntry; import net.splatcraft.forge.registries.SplatcraftBlocks; -import net.splatcraft.forge.registries.SplatcraftInkColors; import net.splatcraft.forge.util.ColorUtils; import org.jetbrains.annotations.Nullable; diff --git a/src/main/java/net/splatcraft/forge/crafting/WeaponWorkbenchSubtypeRecipe.java b/src/main/java/net/splatcraft/forge/crafting/WeaponWorkbenchSubtypeRecipe.java index 98a76cff5..364f96d42 100644 --- a/src/main/java/net/splatcraft/forge/crafting/WeaponWorkbenchSubtypeRecipe.java +++ b/src/main/java/net/splatcraft/forge/crafting/WeaponWorkbenchSubtypeRecipe.java @@ -81,7 +81,7 @@ public static WeaponWorkbenchSubtypeRecipe fromJson(ResourceLocation recipeId, J if(GsonHelper.isStringValue(json, "name")) displayComponent = Component.translatable(GsonHelper.getAsString(json, "name")); - else displayComponent = json.has("name") ? Component.Serializer.fromJson(json.getAsJsonObject("name")) : new TextComponent("null"); + else displayComponent = json.has("name") ? Component.Serializer.fromJson(json.getAsJsonObject("name")) : Component.literal("null"); ResourceLocation advancement = json.has("advancement") && !GsonHelper.getAsString(json, "advancement").isEmpty() ? new ResourceLocation(GsonHelper.getAsString(json, "advancement")) : null; diff --git a/src/main/java/net/splatcraft/forge/criteriaTriggers/ChangeInkColorTrigger.java b/src/main/java/net/splatcraft/forge/criteriaTriggers/ChangeInkColorTrigger.java index b8913fdfc..988c5ac96 100644 --- a/src/main/java/net/splatcraft/forge/criteriaTriggers/ChangeInkColorTrigger.java +++ b/src/main/java/net/splatcraft/forge/criteriaTriggers/ChangeInkColorTrigger.java @@ -6,11 +6,7 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.GsonHelper; import net.minecraft.util.Mth; -import net.minecraft.world.item.ItemStack; import net.splatcraft.forge.Splatcraft; -import net.splatcraft.forge.commands.InkColorCommand; -import net.splatcraft.forge.commands.arguments.InkColorArgument; -import net.splatcraft.forge.registries.SplatcraftInkColors; import net.splatcraft.forge.util.ColorUtils; import net.splatcraft.forge.util.InkColor; diff --git a/src/main/java/net/splatcraft/forge/criteriaTriggers/FallIntoInkTrigger.java b/src/main/java/net/splatcraft/forge/criteriaTriggers/FallIntoInkTrigger.java index 0e56b633f..18cba7fe5 100644 --- a/src/main/java/net/splatcraft/forge/criteriaTriggers/FallIntoInkTrigger.java +++ b/src/main/java/net/splatcraft/forge/criteriaTriggers/FallIntoInkTrigger.java @@ -5,10 +5,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.GsonHelper; -import net.minecraft.util.Mth; import net.splatcraft.forge.Splatcraft; -import net.splatcraft.forge.registries.SplatcraftInkColors; -import net.splatcraft.forge.util.ColorUtils; import net.splatcraft.forge.util.InkColor; public class FallIntoInkTrigger extends SimpleCriterionTrigger diff --git a/src/main/java/net/splatcraft/forge/criteriaTriggers/ScanTurfTrigger.java b/src/main/java/net/splatcraft/forge/criteriaTriggers/ScanTurfTrigger.java index beb35722e..1ebc370d3 100644 --- a/src/main/java/net/splatcraft/forge/criteriaTriggers/ScanTurfTrigger.java +++ b/src/main/java/net/splatcraft/forge/criteriaTriggers/ScanTurfTrigger.java @@ -5,9 +5,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.GsonHelper; -import net.minecraft.util.Mth; import net.splatcraft.forge.Splatcraft; -import net.splatcraft.forge.registries.SplatcraftInkColors; import net.splatcraft.forge.util.InkColor; public class ScanTurfTrigger extends SimpleCriterionTrigger diff --git a/src/main/java/net/splatcraft/forge/data/SplatcraftTags.java b/src/main/java/net/splatcraft/forge/data/SplatcraftTags.java index 0f050c185..c0e56ac60 100644 --- a/src/main/java/net/splatcraft/forge/data/SplatcraftTags.java +++ b/src/main/java/net/splatcraft/forge/data/SplatcraftTags.java @@ -1,6 +1,6 @@ package net.splatcraft.forge.data; -import net.minecraft.core.Registry; +import java.util.HashMap; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; import net.minecraft.tags.ItemTags; @@ -8,12 +8,9 @@ import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; -import net.minecraftforge.registries.tags.ITag; +import net.minecraftforge.registries.ForgeRegistries; import net.splatcraft.forge.Splatcraft; import net.splatcraft.forge.items.InkTankItem; -import net.splatcraft.forge.util.InkColor; - -import java.util.HashMap; public class SplatcraftTags { @@ -21,7 +18,6 @@ public static void register() { new Items(); new Blocks(); - new InkColors(); new EntityTypes(); } @@ -96,22 +92,8 @@ public static class EntityTypes private static TagKey> createTag(String name) { - return TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation(Splatcraft.MODID, name)); - } - } - - - public static class InkColors - { - public static ITag STARTER_COLORS = createTag("starter_colors"); - - private static ITag createTag(String name) - { - return null; - //return ForgeTagHandler.makeWrapperTag(new ResourceLocation(Splatcraft.MODID, "ink_colors"), new ResourceLocation(Splatcraft.MODID, name)); TODO + return TagKey.create(ForgeRegistries.ENTITY_TYPES.getRegistryKey(), new ResourceLocation(Splatcraft.MODID, name)); } - - } diff --git a/src/main/java/net/splatcraft/forge/data/Stage.java b/src/main/java/net/splatcraft/forge/data/Stage.java index 8fc27f193..ace640a38 100644 --- a/src/main/java/net/splatcraft/forge/data/Stage.java +++ b/src/main/java/net/splatcraft/forge/data/Stage.java @@ -204,7 +204,7 @@ public Stage(CompoundTag nbt, String id) - name = nbt.contains("Name") ? Component.Serializer.fromJson(nbt.getString("Name")) : new TextComponent(id); + name = nbt.contains("Name") ? Component.Serializer.fromJson(nbt.getString("Name")) : Component.literal(id); } diff --git a/src/main/java/net/splatcraft/forge/data/capabilities/saveinfo/SaveInfo.java b/src/main/java/net/splatcraft/forge/data/capabilities/saveinfo/SaveInfo.java index d7fb129d1..4aa74f4d6 100644 --- a/src/main/java/net/splatcraft/forge/data/capabilities/saveinfo/SaveInfo.java +++ b/src/main/java/net/splatcraft/forge/data/capabilities/saveinfo/SaveInfo.java @@ -78,7 +78,7 @@ public boolean createStage(Level level, String stageId, BlockPos corner1, BlockP } public boolean createStage(Level level, String stageId, BlockPos corner1, BlockPos corner2) { - return createStage(level, stageId, corner1, corner2, new TextComponent(stageId)); + return createStage(level, stageId, corner1, corner2, Component.literal(stageId)); } public CompoundTag writeNBT(CompoundTag nbt) diff --git a/src/main/java/net/splatcraft/forge/handlers/ScoreboardHandler.java b/src/main/java/net/splatcraft/forge/handlers/ScoreboardHandler.java index 9d46dcf19..ef934613e 100644 --- a/src/main/java/net/splatcraft/forge/handlers/ScoreboardHandler.java +++ b/src/main/java/net/splatcraft/forge/handlers/ScoreboardHandler.java @@ -1,157 +1,21 @@ package net.splatcraft.forge.handlers; -import com.google.common.collect.Maps; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; import net.minecraft.world.entity.player.Player; import net.minecraft.world.scores.criteria.ObjectiveCriteria; import net.splatcraft.forge.Splatcraft; -import net.splatcraft.forge.util.ColorUtils; -import net.splatcraft.forge.util.InkColor; public class ScoreboardHandler { public static final ObjectiveCriteria COLOR = new ObjectiveCriteria(Splatcraft.MODID + ".inkColor"); public static final ObjectiveCriteria TURF_WAR_SCORE = new ObjectiveCriteria(Splatcraft.MODID + ".turfWarScore"); - protected static final Map COLOR_CRITERIA = Maps.newHashMap(); - public static void updatePlayerScore(ObjectiveCriteria criteria, Player player, int color) { player.getScoreboard().forAllObjectives(criteria, player.getScoreboardName(), p_195397_1_ -> p_195397_1_.setScore(color)); } - public static void createColorCriterion(int color) - { - - - COLOR_CRITERIA.put(color, new CriteriaInkColor[] - { - new CriteriaInkColor("colorKills", color), - new CriteriaInkColor("deathsAsColor", color), - new CriteriaInkColor("killsAsColor", color), - new CriteriaInkColor("winsAsColor", color), - new CriteriaInkColor("lossesAsColor", color), - }); - } - - public static void clearColorCriteria() - { - for (int color : COLOR_CRITERIA.keySet()) - { - for (CriteriaInkColor c : COLOR_CRITERIA.get(color)) - { - c.remove(); - } - - } - COLOR_CRITERIA.clear(); - } - - public static void removeColorCriterion(int color) - { - if (hasColorCriterion(color)) - { - for (CriteriaInkColor c : COLOR_CRITERIA.get(color)) - { - c.remove(); - } - COLOR_CRITERIA.remove(color); - } - } - - public static boolean hasColorCriterion(int color) - { - return COLOR_CRITERIA.containsKey(color); - } - - public static Iterable getCriteriaSuggestions() - { - List suggestions = new ArrayList<>(); - - COLOR_CRITERIA.keySet().forEach(key -> - { - InkColor colorObj = InkColor.getByHex(key); - - if (colorObj != null) - { - suggestions.add(Objects.requireNonNull(colorObj.getRegistryName()).toString()); - } else - { - suggestions.add(ColorUtils.getColorId(key)); - } - }); - - return suggestions; - } - - - public static Set getCriteriaKeySet() - { - return COLOR_CRITERIA.keySet(); - } - - - public static CriteriaInkColor getColorKills(int color) - { - return COLOR_CRITERIA.get(color)[0]; - } - - public static CriteriaInkColor getDeathsAsColor(int color) - { - return COLOR_CRITERIA.get(color)[1]; - } - - public static CriteriaInkColor getKillsAsColor(int color) - { - return COLOR_CRITERIA.get(color)[2]; - } - - public static CriteriaInkColor getColorWins(int color) - { - return COLOR_CRITERIA.get(color)[3]; - } - - public static CriteriaInkColor getColorLosses(int color) - { - return COLOR_CRITERIA.get(color)[4]; - } - - public static CriteriaInkColor[] getAllFromColor(int color) - { - return COLOR_CRITERIA.get(color); - } - public static void register() { } - public static String getColorIdentifier(int color) - { - return InkColor.getByHex(color) == null ? String.format("%06X", color).toLowerCase() : Objects.requireNonNull(InkColor.getByHex(color).getRegistryName()).getPath(); - } - - public static class CriteriaInkColor extends ObjectiveCriteria - { - private final String name; - private final int color; - - public CriteriaInkColor(String name, int color) - { - super((InkColor.getByHex(color) == null ? Splatcraft.MODID : Objects.requireNonNull(InkColor.getByHex(color).getRegistryName()).getNamespace()) - + "." + name + "." + getColorIdentifier(color)); - this.name = (InkColor.getByHex(color) == null ? Splatcraft.MODID : Objects.requireNonNull(InkColor.getByHex(color).getRegistryName()).getNamespace()) - + "." + name + "." + getColorIdentifier(color); - this.color = color; - - } - - public void remove() - { - ObjectiveCriteria.CRITERIA_CACHE.remove(name); - } - } } diff --git a/src/main/java/net/splatcraft/forge/items/BlockItem.java b/src/main/java/net/splatcraft/forge/items/BlockItem.java index f9b826e58..ea623baaf 100644 --- a/src/main/java/net/splatcraft/forge/items/BlockItem.java +++ b/src/main/java/net/splatcraft/forge/items/BlockItem.java @@ -7,7 +7,7 @@ public class BlockItem extends net.minecraft.world.item.BlockItem { public BlockItem(Block block) { - super(block, new Properties().tab(SplatcraftItemGroups.GROUP_GENERAL)); + super(block, new Properties()); } public BlockItem(Block block, Properties properties) diff --git a/src/main/java/net/splatcraft/forge/items/BlueprintItem.java b/src/main/java/net/splatcraft/forge/items/BlueprintItem.java index ed51e7dce..6b9eb438f 100644 --- a/src/main/java/net/splatcraft/forge/items/BlueprintItem.java +++ b/src/main/java/net/splatcraft/forge/items/BlueprintItem.java @@ -65,7 +65,7 @@ public static Predicate instanceOf(Class clazz) public BlueprintItem() { - super(new Properties().stacksTo(16).tab(SplatcraftItemGroups.GROUP_GENERAL)); + super(new Properties().stacksTo(16)); } @OnlyIn(Dist.CLIENT) diff --git a/src/main/java/net/splatcraft/forge/items/ColoredArmorItem.java b/src/main/java/net/splatcraft/forge/items/ColoredArmorItem.java index ee5c23f8b..f3d3596ae 100644 --- a/src/main/java/net/splatcraft/forge/items/ColoredArmorItem.java +++ b/src/main/java/net/splatcraft/forge/items/ColoredArmorItem.java @@ -8,9 +8,9 @@ import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.item.DyeableArmorItem; import net.minecraft.world.item.ItemStack; @@ -20,7 +20,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.splatcraft.forge.blocks.InkwellBlock; import net.splatcraft.forge.data.capabilities.playerinfo.PlayerInfoCapability; -import net.splatcraft.forge.registries.SplatcraftItemGroups; import net.splatcraft.forge.registries.SplatcraftItems; import net.splatcraft.forge.util.ColorUtils; import org.jetbrains.annotations.NotNull; @@ -28,17 +27,17 @@ public class ColoredArmorItem extends DyeableArmorItem implements IColoredItem { - public ColoredArmorItem(ArmorMaterial material, EquipmentSlot slot, Properties properties) + public ColoredArmorItem(ArmorMaterial material, ArmorItem.Type armorType, Properties properties) { - super(material, slot, properties); + super(material, armorType, properties); SplatcraftItems.inkColoredItems.add(this); CauldronInteraction.WATER.put(this, CauldronInteraction.DYED_ITEM); } - public ColoredArmorItem(ArmorMaterial material, EquipmentSlot slot) + public ColoredArmorItem(ArmorMaterial material, ArmorItem.Type armorType) { - this( material, slot, new Properties().tab(SplatcraftItemGroups.GROUP_WEAPONS).stacksTo(1)); + this( material, armorType, new Properties().stacksTo(1)); } @Override diff --git a/src/main/java/net/splatcraft/forge/items/ColoredBlockItem.java b/src/main/java/net/splatcraft/forge/items/ColoredBlockItem.java index 08dc0274b..67981e8b4 100644 --- a/src/main/java/net/splatcraft/forge/items/ColoredBlockItem.java +++ b/src/main/java/net/splatcraft/forge/items/ColoredBlockItem.java @@ -78,12 +78,12 @@ public ColoredBlockItem(Block block, Properties properties, Item clearItem) public ColoredBlockItem(Block block, int stackSize, @Nullable Item clearItem) { - this(block, new Properties().stacksTo(stackSize).tab(SplatcraftItemGroups.GROUP_GENERAL), clearItem); + this(block, new Properties().stacksTo(stackSize), clearItem); } public ColoredBlockItem(Block block, int stackSize) { - this(block, new Properties().stacksTo(stackSize).tab(SplatcraftItemGroups.GROUP_GENERAL), null); + this(block, new Properties().stacksTo(stackSize), null); } public ColoredBlockItem setMatchColor(boolean matchColor) { diff --git a/src/main/java/net/splatcraft/forge/items/FilterItem.java b/src/main/java/net/splatcraft/forge/items/FilterItem.java index 6778251f6..b5195c1e8 100644 --- a/src/main/java/net/splatcraft/forge/items/FilterItem.java +++ b/src/main/java/net/splatcraft/forge/items/FilterItem.java @@ -10,7 +10,6 @@ import net.minecraft.world.item.Rarity; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; -import net.splatcraft.forge.registries.SplatcraftItemGroups; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -22,7 +21,7 @@ public class FilterItem extends Item public FilterItem(Rarity rarity, boolean isGlowing, boolean isOmni) { - super(new Properties().tab(SplatcraftItemGroups.GROUP_GENERAL).stacksTo(1).rarity(rarity)); + super(new Properties().stacksTo(1).rarity(rarity)); this.isGlowing = isGlowing; this.isOmni = isOmni; diff --git a/src/main/java/net/splatcraft/forge/items/InkBandItem.java b/src/main/java/net/splatcraft/forge/items/InkBandItem.java index b7b296550..d154ddd5d 100644 --- a/src/main/java/net/splatcraft/forge/items/InkBandItem.java +++ b/src/main/java/net/splatcraft/forge/items/InkBandItem.java @@ -7,14 +7,13 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; -import net.splatcraft.forge.registries.SplatcraftItemGroups; import org.jetbrains.annotations.Nullable; public class InkBandItem extends Item { public InkBandItem() { - super(new Item.Properties().stacksTo(1).tab(SplatcraftItemGroups.GROUP_GENERAL)); + super(new Item.Properties().stacksTo(1)); } @Override diff --git a/src/main/java/net/splatcraft/forge/items/InkTankItem.java b/src/main/java/net/splatcraft/forge/items/InkTankItem.java index b69d3e93d..e10e40acc 100644 --- a/src/main/java/net/splatcraft/forge/items/InkTankItem.java +++ b/src/main/java/net/splatcraft/forge/items/InkTankItem.java @@ -18,7 +18,7 @@ import net.minecraft.world.level.Level; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.IItemRenderProperties; +import net.minecraftforge.client.extensions.common.IClientItemExtensions; import net.splatcraft.forge.SplatcraftConfig; import net.splatcraft.forge.client.models.inktanks.AbstractInkTankModel; import net.splatcraft.forge.data.SplatcraftTags; @@ -26,7 +26,6 @@ import net.splatcraft.forge.items.weapons.RollerItem; import net.splatcraft.forge.items.weapons.WeaponBaseItem; import net.splatcraft.forge.registries.SplatcraftGameRules; -import net.splatcraft.forge.registries.SplatcraftItemGroups; import net.splatcraft.forge.registries.SplatcraftItems; import net.splatcraft.forge.util.ColorUtils; import net.splatcraft.forge.util.InkBlockUtils; @@ -46,7 +45,7 @@ public class InkTankItem extends ColoredArmorItem { private AbstractInkTankModel model; public InkTankItem(String tagId, float capacity, ArmorMaterial material, Properties properties) { - super(material, EquipmentSlot.CHEST, properties); + super(material, Type.CHESTPLATE, properties); this.capacity = capacity; this.properties = properties; @@ -56,7 +55,7 @@ public InkTankItem(String tagId, float capacity, ArmorMaterial material, Propert } public InkTankItem(String tagId, float capacity, ArmorMaterial material) { - this(tagId, capacity, material, new Properties().tab(SplatcraftItemGroups.GROUP_WEAPONS).stacksTo(1)); + this(tagId, capacity, material, new Properties().stacksTo(1)); } @@ -141,14 +140,16 @@ public void appendHoverText(@NotNull ItemStack stack, @Nullable Level level, @No private static boolean initModels = false; + @OnlyIn(Dist.CLIENT) @Override - public void initializeClient(Consumer consumer) { + public void initializeClient(Consumer consumer) { super.initializeClient(consumer); - consumer.accept(new IItemRenderProperties() { + consumer.accept(new IClientItemExtensions() + { @Nullable @Override - public HumanoidModel getArmorModel(LivingEntity entityLiving, ItemStack itemStack, EquipmentSlot armorSlot, HumanoidModel _default) { + public HumanoidModel getHumanoidArmorModel(LivingEntity entityLiving, ItemStack itemStack, EquipmentSlot armorSlot, HumanoidModel _default) { if (!initModels) //i have NO idea where else to put this { initModels = true; @@ -156,11 +157,11 @@ public HumanoidModel getArmorModel(LivingEntity entityLiving, ItemStack itemS } if (!(itemStack.getItem() instanceof InkTankItem)) { - return IItemRenderProperties.super.getArmorModel(entityLiving, itemStack, armorSlot, _default); + return IClientItemExtensions.super.getHumanoidArmorModel(entityLiving, itemStack, armorSlot, _default); } if (model == null) { - return IItemRenderProperties.super.getArmorModel(entityLiving, itemStack, armorSlot, _default); + return IClientItemExtensions.super.getHumanoidArmorModel(entityLiving, itemStack, armorSlot, _default); } if (!itemStack.isEmpty()) { @@ -188,7 +189,7 @@ public HumanoidModel getArmorModel(LivingEntity entityLiving, ItemStack itemS } } - return IItemRenderProperties.super.getArmorModel(entityLiving, itemStack, armorSlot, _default); + return IClientItemExtensions.super.getHumanoidArmorModel(entityLiving, itemStack, armorSlot, _default); } }); } diff --git a/src/main/java/net/splatcraft/forge/items/InkWaxerItem.java b/src/main/java/net/splatcraft/forge/items/InkWaxerItem.java index c45ca4c29..276f503a7 100644 --- a/src/main/java/net/splatcraft/forge/items/InkWaxerItem.java +++ b/src/main/java/net/splatcraft/forge/items/InkWaxerItem.java @@ -21,7 +21,7 @@ public class InkWaxerItem extends Item { public InkWaxerItem() { - super(new Properties().durability(256).tab(SplatcraftItemGroups.GROUP_GENERAL)); + super(new Properties().durability(256)); } public void onBlockStartBreak(ItemStack itemstack, BlockPos pos, Level level) diff --git a/src/main/java/net/splatcraft/forge/items/JumpLureItem.java b/src/main/java/net/splatcraft/forge/items/JumpLureItem.java index 3fd17c765..3e02588da 100644 --- a/src/main/java/net/splatcraft/forge/items/JumpLureItem.java +++ b/src/main/java/net/splatcraft/forge/items/JumpLureItem.java @@ -46,7 +46,7 @@ public class JumpLureItem extends Item implements IColoredItem { public JumpLureItem() { - super(new Properties().tab(SplatcraftItemGroups.GROUP_GENERAL).stacksTo(1)); + super(new Properties().stacksTo(1)); SplatcraftItems.inkColoredItems.add(this); } @@ -86,13 +86,13 @@ public static void activate(ServerPlayer player, UUID targetUUID, int color) target = new Vec3(spawnPos.getX(), spawnPos.getY() + SuperJumpCommand.blockHeight(spawnPos, player.level()), spawnPos.getZ()); if (!SplatcraftGameRules.getLocalizedRule(player.level(), player.blockPosition(), SplatcraftGameRules.GLOBAL_SUPERJUMPING) && !SuperJumpCommand.canSuperJumpTo(player, target)) { - player.sendMessage(new TextComponent("Spawn Pad outside of stage bounds!"), player.getUUID()); //TODO better feedback + player.sendMessage(Component.literal("Spawn Pad outside of stage bounds!"), player.getUUID()); //TODO better feedback return; } } else { - player.sendMessage(new TextComponent("No valid Spawn Pad was found!"), player.getUUID()); //TODO better feedback + player.sendMessage(Component.literal("No valid Spawn Pad was found!"), player.getUUID()); //TODO better feedback return; } } @@ -103,7 +103,7 @@ public static void activate(ServerPlayer player, UUID targetUUID, int color) if (targetPlayer == null || !hasMatchingLure(targetPlayer, color) || (!SplatcraftGameRules.getLocalizedRule(player.level(), player.blockPosition(), SplatcraftGameRules.GLOBAL_SUPERJUMPING) && !SuperJumpCommand.canSuperJumpTo(player, targetPlayer.position()))) { - player.sendMessage(new TextComponent("A communication error has occurred."), player.getUUID()); //TODO better feedback + player.sendMessage(Component.literal("A communication error has occurred."), player.getUUID()); //TODO better feedback return; } else target = targetPlayer.position(); diff --git a/src/main/java/net/splatcraft/forge/items/PowerEggCanItem.java b/src/main/java/net/splatcraft/forge/items/PowerEggCanItem.java index 120d82162..c5cbf09aa 100644 --- a/src/main/java/net/splatcraft/forge/items/PowerEggCanItem.java +++ b/src/main/java/net/splatcraft/forge/items/PowerEggCanItem.java @@ -17,7 +17,7 @@ public class PowerEggCanItem extends Item { public PowerEggCanItem() { - super(new Properties().stacksTo(16).tab(SplatcraftItemGroups.GROUP_GENERAL)); + super(new Properties().stacksTo(16)); } @Override diff --git a/src/main/java/net/splatcraft/forge/items/SquidBumperItem.java b/src/main/java/net/splatcraft/forge/items/SquidBumperItem.java index be7c73d8f..cde641950 100644 --- a/src/main/java/net/splatcraft/forge/items/SquidBumperItem.java +++ b/src/main/java/net/splatcraft/forge/items/SquidBumperItem.java @@ -43,7 +43,7 @@ public class SquidBumperItem extends Item implements IColoredItem { public SquidBumperItem() { - super(new Properties().stacksTo(16).tab(SplatcraftItemGroups.GROUP_GENERAL)); + super(new Properties().stacksTo(16)); SplatcraftItems.inkColoredItems.add(this); } @@ -59,15 +59,6 @@ public void appendHoverText(ItemStack stack, @Nullable Level level, List items) - { - if (allowdedIn(group)) - { - items.add(ColorUtils.setColorLocked(new ItemStack(this), false)); - items.add(ColorUtils.setInverted(ColorUtils.setColorLocked(new ItemStack(this), false), true)); - } - } @Override public void inventoryTick(ItemStack stack, Level level, Entity entity, int itemSlot, boolean isSelected) @@ -121,7 +112,7 @@ public InteractionResult useOn(UseOnContext context) { if (level instanceof ServerLevel) { - SquidBumperEntity bumper = SplatcraftEntities.SQUID_BUMPER.get().create((ServerLevel) level, stack.getTag(), null, context.getPlayer(), pos, MobSpawnType.SPAWN_EGG, true, true); + SquidBumperEntity bumper = SplatcraftEntities.SQUID_BUMPER.get().create((ServerLevel) level, stack.getTag(), null, pos, MobSpawnType.SPAWN_EGG, true, true); if(bumper != null) { bumper.setColor(ColorUtils.getInkColorOrInverted(stack)); diff --git a/src/main/java/net/splatcraft/forge/items/StagePadItem.java b/src/main/java/net/splatcraft/forge/items/StagePadItem.java index eb5147af2..e1c29153f 100644 --- a/src/main/java/net/splatcraft/forge/items/StagePadItem.java +++ b/src/main/java/net/splatcraft/forge/items/StagePadItem.java @@ -35,7 +35,7 @@ public class StagePadItem extends Item implements IColoredItem { public StagePadItem() { - super(new Properties().tab(SplatcraftItemGroups.GROUP_GENERAL).stacksTo(1)); + super(new Properties().stacksTo(1)); SplatcraftItems.inkColoredItems.add(this); } diff --git a/src/main/java/net/splatcraft/forge/items/remotes/ColorChangerItem.java b/src/main/java/net/splatcraft/forge/items/remotes/ColorChangerItem.java index fcddf8357..58b3885f5 100644 --- a/src/main/java/net/splatcraft/forge/items/remotes/ColorChangerItem.java +++ b/src/main/java/net/splatcraft/forge/items/remotes/ColorChangerItem.java @@ -9,7 +9,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.ComponentUtils; import net.minecraft.network.chat.TextColor; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; @@ -28,7 +27,6 @@ import net.splatcraft.forge.items.IColoredItem; import net.splatcraft.forge.network.SplatcraftPacketHandler; import net.splatcraft.forge.network.s2c.UpdateStageListPacket; -import net.splatcraft.forge.registries.SplatcraftItemGroups; import net.splatcraft.forge.registries.SplatcraftItems; import net.splatcraft.forge.tileentities.IHasTeam; import net.splatcraft.forge.util.ClientUtils; @@ -40,7 +38,7 @@ public class ColorChangerItem extends RemoteItem implements IColoredItem { public ColorChangerItem() { - super(new Properties().tab(SplatcraftItemGroups.GROUP_GENERAL).stacksTo(1).rarity(Rarity.UNCOMMON), 3); + super(new Properties().stacksTo(1).rarity(Rarity.UNCOMMON), 3); SplatcraftItems.inkColoredItems.add(this); } @@ -90,7 +88,7 @@ public void appendHoverText(ItemStack stack, @Nullable Level level, List targets) diff --git a/src/main/java/net/splatcraft/forge/items/weapons/WeaponBaseItem.java b/src/main/java/net/splatcraft/forge/items/weapons/WeaponBaseItem.java index 6a77e349b..8032a167a 100644 --- a/src/main/java/net/splatcraft/forge/items/weapons/WeaponBaseItem.java +++ b/src/main/java/net/splatcraft/forge/items/weapons/WeaponBaseItem.java @@ -1,12 +1,11 @@ package net.splatcraft.forge.items.weapons; +import java.util.HashMap; +import java.util.List; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; -import net.minecraft.core.NonNullList; import net.minecraft.core.cauldron.CauldronInteraction; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; - import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; @@ -21,7 +20,6 @@ import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; @@ -31,31 +29,32 @@ import net.splatcraft.forge.SplatcraftConfig; import net.splatcraft.forge.blocks.InkedBlock; import net.splatcraft.forge.blocks.InkwellBlock; -import net.splatcraft.forge.client.handlers.SplatcraftKeyHandler; import net.splatcraft.forge.data.capabilities.playerinfo.PlayerInfoCapability; import net.splatcraft.forge.handlers.DataHandler; import net.splatcraft.forge.handlers.PlayerPosingHandler; import net.splatcraft.forge.items.IColoredItem; import net.splatcraft.forge.items.InkTankItem; -import net.splatcraft.forge.items.weapons.settings.*; +import net.splatcraft.forge.items.weapons.settings.AbstractWeaponSettings; +import net.splatcraft.forge.items.weapons.settings.BlasterWeaponSettings; +import net.splatcraft.forge.items.weapons.settings.ChargerWeaponSettings; +import net.splatcraft.forge.items.weapons.settings.DualieWeaponSettings; +import net.splatcraft.forge.items.weapons.settings.RollerWeaponSettings; +import net.splatcraft.forge.items.weapons.settings.ShooterWeaponSettings; +import net.splatcraft.forge.items.weapons.settings.SlosherWeaponSettings; +import net.splatcraft.forge.items.weapons.settings.SplatlingWeaponSettings; +import net.splatcraft.forge.items.weapons.settings.SubWeaponSettings; import net.splatcraft.forge.network.SplatcraftPacketHandler; import net.splatcraft.forge.network.s2c.PlayerSetSquidS2CPacket; import net.splatcraft.forge.registries.SplatcraftGameRules; -import net.splatcraft.forge.registries.SplatcraftItemGroups; import net.splatcraft.forge.registries.SplatcraftItems; import net.splatcraft.forge.registries.SplatcraftSounds; import net.splatcraft.forge.tileentities.InkColorTileEntity; import net.splatcraft.forge.util.ClientUtils; import net.splatcraft.forge.util.ColorUtils; import net.splatcraft.forge.util.PlayerCooldown; -import net.splatcraft.forge.util.WeaponTooltip; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - public abstract class WeaponBaseItem> extends Item implements IColoredItem { public static final int USE_DURATION = 72000; @@ -64,7 +63,7 @@ public abstract class WeaponBaseItem> ext public boolean isSecret; public WeaponBaseItem(String settingsId) { - super(new Properties().stacksTo(1).tab(SplatcraftItemGroups.GROUP_WEAPONS)); + super(new Properties().stacksTo(1)); SplatcraftItems.inkColoredItems.add(this); SplatcraftItems.weapons.add(this); this.settingsId = settingsId.contains(":") ? new ResourceLocation(settingsId) : new ResourceLocation(Splatcraft.MODID, settingsId); @@ -202,21 +201,13 @@ public void appendHoverText(@NotNull ItemStack stack, @Nullable Level level, @No tooltip.add(ColorUtils.getFormatedColorName(ColorUtils.getInkColor(stack), true)); } else { - tooltip.add(new TextComponent("")); + tooltip.add(Component.literal("")); } if(!stack.getOrCreateTag().getBoolean("HideTooltip")) getSettings(stack).addStatsToTooltip(tooltip, flag); } - @Override - public void fillItemCategory(@NotNull CreativeModeTab group, @NotNull NonNullList list) - { - if (!isSecret) { - super.fillItemCategory(group, list); - } - } - @Override public void inventoryTick(@NotNull ItemStack stack, @NotNull Level level, @NotNull Entity entity, int itemSlot, boolean isSelected) { super.inventoryTick(stack, level, entity, itemSlot, isSelected); diff --git a/src/main/java/net/splatcraft/forge/items/weapons/settings/AbstractWeaponSettings.java b/src/main/java/net/splatcraft/forge/items/weapons/settings/AbstractWeaponSettings.java index e3e8337e0..77745ed45 100644 --- a/src/main/java/net/splatcraft/forge/items/weapons/settings/AbstractWeaponSettings.java +++ b/src/main/java/net/splatcraft/forge/items/weapons/settings/AbstractWeaponSettings.java @@ -77,7 +77,7 @@ public void castAndDeserialize(Object o) public void serializeToBuffer(FriendlyByteBuf buffer) { - buffer.writeWithCodec(getCodec(), serialize()); + buffer.writeJsonWithCodec(getCodec(), serialize()); } public static float calculateDistanceTravelled(float hAccel, float gravity, float vHeight) diff --git a/src/main/java/net/splatcraft/forge/loot/ChestLootModifier.java b/src/main/java/net/splatcraft/forge/loot/ChestLootModifier.java index 91c52feb8..88c188955 100644 --- a/src/main/java/net/splatcraft/forge/loot/ChestLootModifier.java +++ b/src/main/java/net/splatcraft/forge/loot/ChestLootModifier.java @@ -1,20 +1,18 @@ package net.splatcraft.forge.loot; -import com.google.gson.JsonObject; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.GsonHelper; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; -import net.minecraftforge.common.loot.GlobalLootModifierSerializer; +import net.minecraftforge.common.loot.IGlobalLootModifier; import net.minecraftforge.common.loot.LootModifier; import net.minecraftforge.registries.ForgeRegistries; import org.jetbrains.annotations.NotNull; -import java.util.List; -import java.util.Objects; - public class ChestLootModifier extends LootModifier { protected final Item item; @@ -23,6 +21,14 @@ public class ChestLootModifier extends LootModifier protected final float chance; protected final ResourceLocation parentTable; + public static final Codec CODEC = RecordCodecBuilder.create(inst -> codecStart(inst).and(inst.group( + ForgeRegistries.ITEMS.getCodec().fieldOf("item").forGetter(ChestLootModifier::getItem), + Codec.INT.fieldOf("countMin").forGetter(ChestLootModifier::getCountMin), + Codec.INT.fieldOf("countMax").forGetter(ChestLootModifier::getCountMax), + Codec.FLOAT.fieldOf("chance").forGetter(ChestLootModifier::getChance), + ResourceLocation.CODEC.fieldOf("parent").forGetter(ChestLootModifier::getParentTable) + )).apply(inst, ChestLootModifier::new)); + /** * Constructs a LootModifier. * @@ -38,9 +44,29 @@ protected ChestLootModifier(LootItemCondition[] conditionsIn, Item itemIn, int c this.parentTable = parentTable; } + public Item getItem() { + return item; + } + + public int getCountMin() { + return countMin; + } + + public int getCountMax() { + return countMax; + } + + public float getChance() { + return chance; + } + + public ResourceLocation getParentTable() { + return parentTable; + } + @NotNull @Override - protected List doApply(List generatedLoot, LootContext context) + protected ObjectArrayList doApply(ObjectArrayList generatedLoot, LootContext context) { if (!context.getQueriedLootTableId().equals(parentTable)) { @@ -57,30 +83,8 @@ protected List doApply(List generatedLoot, LootContext con return generatedLoot; } - public static class Serializer extends GlobalLootModifierSerializer - { - @Override - public ChestLootModifier read(ResourceLocation location, JsonObject object, LootItemCondition[] ailootcondition) - { - Item item = ForgeRegistries.ITEMS.getValue(new ResourceLocation(GsonHelper.getAsString(object, "item"))); - int countMin = GsonHelper.getAsInt(object, "countMin"); - int countMax = GsonHelper.getAsInt(object, "countMax"); - float chance = GsonHelper.getAsFloat(object, "chance"); - ResourceLocation partentTable = new ResourceLocation(GsonHelper.getAsString(object, "parent")); - return new ChestLootModifier(ailootcondition, item, countMin, countMax, chance, partentTable); - } - - @Override - public JsonObject write(ChestLootModifier instance) - { - JsonObject result = new JsonObject(); - result.addProperty("item", Objects.requireNonNull(instance.item.getRegistryName()).toString()); - result.addProperty("countMin", instance.countMin); - result.addProperty("countMax", instance.countMax); - result.addProperty("chance", instance.chance); - result.addProperty("parent", instance.parentTable.toString()); - - return result; - } + @Override + public Codec codec() { + return CODEC; } } diff --git a/src/main/java/net/splatcraft/forge/loot/FishingLootModifier.java b/src/main/java/net/splatcraft/forge/loot/FishingLootModifier.java index 36cc9e53c..bd2c4e927 100644 --- a/src/main/java/net/splatcraft/forge/loot/FishingLootModifier.java +++ b/src/main/java/net/splatcraft/forge/loot/FishingLootModifier.java @@ -1,9 +1,10 @@ package net.splatcraft.forge.loot; -import com.google.gson.JsonObject; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import java.util.Objects; import net.minecraft.advancements.critereon.FishingHookPredicate; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.GsonHelper; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.projectile.FishingHook; @@ -13,14 +14,11 @@ import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; -import net.minecraftforge.common.loot.GlobalLootModifierSerializer; +import net.minecraftforge.common.loot.IGlobalLootModifier; import net.minecraftforge.common.loot.LootModifier; import net.minecraftforge.registries.ForgeRegistries; import org.jetbrains.annotations.NotNull; -import java.util.List; -import java.util.Objects; - public class FishingLootModifier extends LootModifier { protected final Item item; @@ -30,6 +28,16 @@ public class FishingLootModifier extends LootModifier protected final int quality; protected final boolean isTreasure; + public static final Codec CODEC = RecordCodecBuilder.create(inst -> codecStart(inst).and( + inst.group( + ForgeRegistries.ITEMS.getCodec().fieldOf("item").forGetter(FishingLootModifier::getItem), + Codec.INT.fieldOf("countMin").forGetter(FishingLootModifier::getCountMin), + Codec.INT.fieldOf("countMax").forGetter(FishingLootModifier::getCountMax), + Codec.FLOAT.fieldOf("chance").forGetter(FishingLootModifier::getChance), + Codec.INT.fieldOf("quality").forGetter(FishingLootModifier::getQuality), + Codec.BOOL.fieldOf("isTreasure").forGetter(FishingLootModifier::isTreasure) + )).apply(inst, FishingLootModifier::new)); + /** * Constructs a LootModifier. * @@ -46,11 +54,36 @@ protected FishingLootModifier(LootItemCondition[] conditionsIn, Item itemIn, int this.isTreasure = isTreasure; } - @NotNull + public Item getItem() { + return item; + } + + public int getCountMin() { + return countMin; + } + + public int getCountMax() { + return countMax; + } + + public float getChance() { + return chance; + } + + public int getQuality() { + return quality; + } + + public boolean isTreasure() { + return isTreasure; + } + + @Override - protected List doApply(List generatedLoot, LootContext context) + protected @NotNull ObjectArrayList doApply(ObjectArrayList generatedLoot, LootContext context) { - if (!(context.getParamOrNull(LootContextParams.THIS_ENTITY) instanceof FishingHook) || isTreasure && !FishingHookPredicate.inOpenWater(true).matches(Objects.requireNonNull(context.getParamOrNull(LootContextParams.THIS_ENTITY)))) + if (!(context.getParamOrNull(LootContextParams.THIS_ENTITY) instanceof FishingHook) || isTreasure && + !FishingHookPredicate.inOpenWater(true).matches(Objects.requireNonNull(context.getParamOrNull(LootContextParams.THIS_ENTITY)), context.getLevel(), context.getParamOrNull(LootContextParams.ORIGIN))) { return generatedLoot; } @@ -82,29 +115,8 @@ protected List doApply(List generatedLoot, LootContext con return generatedLoot; } - public static class Serializer extends GlobalLootModifierSerializer - { - - @Override - public FishingLootModifier read(ResourceLocation location, JsonObject object, LootItemCondition[] ailootcondition) - { - Item item = ForgeRegistries.ITEMS.getValue(new ResourceLocation(GsonHelper.getAsString(object, "item"))); - int countMin = GsonHelper.getAsInt(object, "countMin"); - int countMax = GsonHelper.getAsInt(object, "countMax"); - float chance = GsonHelper.getAsFloat(object, "chance"); - int quality = GsonHelper.getAsInt(object, "quality"); - boolean isTreasure = GsonHelper.isBooleanValue(object, "isTreasure") && GsonHelper.getAsBoolean(object, "isTreasure"); - return new FishingLootModifier(ailootcondition, item, countMin, countMax, chance, quality, isTreasure); - } - - @Override - public JsonObject write(FishingLootModifier instance) - { - JsonObject result = new JsonObject(); - result.addProperty("item", Objects.requireNonNull(instance.item.getRegistryName()).toString()); - result.addProperty("countMin", instance.countMin); - result.addProperty("countMax", instance.countMax); - return result; - } + @Override + public Codec codec() { + return CODEC; } } diff --git a/src/main/java/net/splatcraft/forge/mixin/ItemRendererMixin.java b/src/main/java/net/splatcraft/forge/mixin/ItemRendererMixin.java index 44e256c6a..3d0eb46f8 100644 --- a/src/main/java/net/splatcraft/forge/mixin/ItemRendererMixin.java +++ b/src/main/java/net/splatcraft/forge/mixin/ItemRendererMixin.java @@ -9,7 +9,9 @@ import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.client.resources.model.ModelResourceLocation; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.registries.ForgeRegistries; import net.splatcraft.forge.client.handlers.RendererHandler; import net.splatcraft.forge.registries.SplatcraftItems; import org.spongepowered.asm.mixin.Mixin; @@ -18,11 +20,11 @@ @Mixin(ItemRenderer.class) public class ItemRendererMixin { - @WrapOperation(method = "renderGuiItem(Lnet/minecraft/world/item/ItemStack;IILnet/minecraft/client/resources/model/BakedModel;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/ItemRenderer;render(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/client/renderer/block/model/ItemTransforms$TransformType;ZLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;IILnet/minecraft/client/resources/model/BakedModel;)V")) - public void onRenderGuiItem(ItemRenderer renderer, ItemStack stack, ItemTransforms.TransformType transformType, boolean leftHanded, PoseStack poseStack, MultiBufferSource source, int light, int overlay, BakedModel modelIn, Operation original) + @WrapOperation(method = "renderStatic(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemDisplayContext;ZLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;Lnet/minecraft/world/level/Level;III)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/ItemRenderer;render(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemDisplayContext;ZLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;IILnet/minecraft/client/resources/model/BakedModel;)V")) + public void onRenderGuiItem(ItemRenderer renderer, ItemStack stack, ItemDisplayContext transformType, boolean leftHanded, PoseStack poseStack, MultiBufferSource source, int light, int overlay, BakedModel modelIn, Operation original) { if (stack.getItem().equals(SplatcraftItems.powerEgg.get())) { - BakedModel model = Minecraft.getInstance().getItemRenderer().getItemModelShaper().getModelManager().getModel(new ModelResourceLocation(stack.getItem().getRegistryName() + "#inventory")); + BakedModel model = Minecraft.getInstance().getItemRenderer().getItemModelShaper().getModelManager().getModel(new ModelResourceLocation(ForgeRegistries.ITEMS.getKey(stack.getItem()), "inventory")); RendererHandler.renderItem(stack, transformType, true, poseStack, source, light, overlay, model); } else { original.call(renderer, stack, transformType, leftHanded, poseStack, source, light, overlay, modelIn); diff --git a/src/main/java/net/splatcraft/forge/registries/SplatcraftCommands.java b/src/main/java/net/splatcraft/forge/registries/SplatcraftCommands.java index 82aaea365..48547835b 100644 --- a/src/main/java/net/splatcraft/forge/registries/SplatcraftCommands.java +++ b/src/main/java/net/splatcraft/forge/registries/SplatcraftCommands.java @@ -2,19 +2,33 @@ import com.mojang.brigadier.CommandDispatcher; import net.minecraft.commands.CommandSourceStack; -import net.minecraft.commands.synchronization.ArgumentTypes; -import net.minecraft.commands.synchronization.EmptyArgumentSerializer; +import net.minecraft.commands.synchronization.ArgumentTypeInfo; +import net.minecraft.commands.synchronization.ArgumentTypeInfos; +import net.minecraft.commands.synchronization.SingletonArgumentInfo; import net.minecraftforge.event.RegisterCommandsEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; import net.splatcraft.forge.Splatcraft; -import net.splatcraft.forge.commands.*; -import net.splatcraft.forge.commands.arguments.ColorCriterionArgument; +import net.splatcraft.forge.commands.ClearInkCommand; +import net.splatcraft.forge.commands.InkColorCommand; +import net.splatcraft.forge.commands.ReplaceColorCommand; +import net.splatcraft.forge.commands.ScanTurfCommand; +import net.splatcraft.forge.commands.StageCommand; +import net.splatcraft.forge.commands.SuperJumpCommand; import net.splatcraft.forge.commands.arguments.InkColorArgument; +import static net.splatcraft.forge.Splatcraft.MODID; + @Mod.EventBusSubscriber(modid = Splatcraft.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class SplatcraftCommands { + protected static final DeferredRegister> ARGUMENT_REGISTRY = DeferredRegister.create(ForgeRegistries.COMMAND_ARGUMENT_TYPES, MODID); + + public static final RegistryObject> INK_COLOR_ARGUMENT = ARGUMENT_REGISTRY.register("ink_color", () -> ArgumentTypeInfos.registerByClass(InkColorArgument.class, SingletonArgumentInfo.contextFree(InkColorArgument::inkColor))); + @SubscribeEvent public static void registerCommands(RegisterCommandsEvent event) { @@ -24,7 +38,6 @@ public static void registerCommands(RegisterCommandsEvent event) ScanTurfCommand.register(dispatcher); ClearInkCommand.register(dispatcher); ReplaceColorCommand.register(dispatcher); - ColorScoresCommand.register(dispatcher); StageCommand.register(dispatcher); SuperJumpCommand.register(dispatcher); @@ -32,7 +45,7 @@ public static void registerCommands(RegisterCommandsEvent event) public static void registerArguments() { - ArgumentTypes.register(Splatcraft.MODID + ":ink_color", InkColorArgument.class, new EmptyArgumentSerializer<>(InkColorArgument::inkColor)); - ArgumentTypes.register(Splatcraft.MODID + ":color_criterion", ColorCriterionArgument.class, new EmptyArgumentSerializer<>(ColorCriterionArgument::colorCriterion)); + + //ArgumentTypes.register(Splatcraft.MODID + ":color_criterion", ColorCriterionArgument.class, new EmptyArgumentSerializer<>(ColorCriterionArgument::colorCriterion)); } } diff --git a/src/main/java/net/splatcraft/forge/registries/SplatcraftEntities.java b/src/main/java/net/splatcraft/forge/registries/SplatcraftEntities.java index d46d2fe97..061304774 100644 --- a/src/main/java/net/splatcraft/forge/registries/SplatcraftEntities.java +++ b/src/main/java/net/splatcraft/forge/registries/SplatcraftEntities.java @@ -62,7 +62,7 @@ @Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD) public class SplatcraftEntities { - protected static final DeferredRegister> REGISTRY = DeferredRegister.create(ForgeRegistries.ENTITIES, MODID); + protected static final DeferredRegister> REGISTRY = DeferredRegister.create(ForgeRegistries.ENTITY_TYPES, MODID); public static final RegistryObject> INK_SQUID = create("ink_squid", InkSquidEntity::new, MobCategory.AMBIENT, 0.6f, 0.5f); diff --git a/src/main/java/net/splatcraft/forge/registries/SplatcraftInkColors.java b/src/main/java/net/splatcraft/forge/registries/SplatcraftInkColors.java deleted file mode 100644 index ce0c0a08f..000000000 --- a/src/main/java/net/splatcraft/forge/registries/SplatcraftInkColors.java +++ /dev/null @@ -1,188 +0,0 @@ -package net.splatcraft.forge.registries; - -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.DyeColor; -import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.registries.IForgeRegistry; -import net.minecraftforge.registries.NewRegistryEvent; -import net.minecraftforge.registries.RegistryBuilder; -import net.splatcraft.forge.Splatcraft; -import net.splatcraft.forge.util.ColorUtils; -import net.splatcraft.forge.util.InkColor; - -import java.util.function.Supplier; - -import static net.splatcraft.forge.Splatcraft.MODID; - -@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD) -public class SplatcraftInkColors { - public static Supplier> REGISTRY; - - //Starter Colors - public static final InkColor orange = new InkColor("orange", 0xDF641A); - public static final InkColor blue = new InkColor("blue", 0x26229F); - public static final InkColor pink = new InkColor("pink", 0xC83D79); - public static final InkColor green = new InkColor("green", 0x409D3B); - - //Basic Colors - public static final InkColor lightBlue = new InkColor("light_blue", 0x228cff); - public static final InkColor turquoise = new InkColor("turquoise", 0x048188); - public static final InkColor yellow = new InkColor("yellow", 0xe1a307); - public static final InkColor lilac = new InkColor("lilac", 0x4d24a3); - public static final InkColor lemon = new InkColor("lemon", 0x91b00b); - public static final InkColor plum = new InkColor("plum", 0x830b9c); - - //Pastel Colors - public static final InkColor cyan = new InkColor("cyan", 0x4ACBCB); - public static final InkColor peach = new InkColor("peach", 0xEA8546); - public static final InkColor mint = new InkColor("mint", 0x08B672); - public static final InkColor cherry = new InkColor("cherry", 0xE24F65); - - //Neon Colors - public static final InkColor neonPink = new InkColor("neon_pink", 0xcf0466); - public static final InkColor neonGreen = new InkColor("neon_green", 0x17a80d); - public static final InkColor neonOrange = new InkColor("neon_orange", 0xe85407); - public static final InkColor neonBlue = new InkColor("neon_blue", 0x2e0cb5); - - //Hero Colors - public static final InkColor squid = new InkColor("hero_yellow", 0xD3F526); - public static final InkColor octo = new InkColor("octo_pink", 0xE51B5E); - - //Special Colors - public static final InkColor mojang = new InkColor("mojang", 0xDF242F); - public static final InkColor cobalt = new InkColor("cobalt", 0x005682); - public static final InkColor ice = new InkColor("ice", 0x88ffc1); - public static final InkColor floral = new InkColor("floral", 0xFF9BEE); - public static final InkColor omniGreen = new InkColor("omni_green", 0x93E720); - public static final InkColor mana = new InkColor("mana", 0xF33EF1); - - //Colorblind mode - public static final InkColor colorLockA = new InkColor("color_lock_friendly", 0xDEA801); - public static final InkColor colorLockB = new InkColor("color_lock_hostile", 0x4717A9); - - //Organic Colors - public static final InkColor dyeWhite = new InkColor("dye_white", 0xFAFAFA, DyeColor.WHITE); - public static final InkColor dyeOrange = new InkColor("dye_orange", 16351261, DyeColor.ORANGE); - public static final InkColor dyeMagenta = new InkColor("dye_magenta", 13061821, DyeColor.MAGENTA); - public static final InkColor dyeLightBlue = new InkColor("dye_light_blue", 3847130, DyeColor.LIGHT_BLUE); - public static final InkColor dyeYellow = new InkColor("dye_yellow", 16701501, DyeColor.YELLOW); - public static final InkColor dyeLime = new InkColor("dye_lime", 8439583, DyeColor.LIME); - public static final InkColor dyePink = new InkColor("dye_pink", 15961002, DyeColor.PINK); - public static final InkColor dyeGray = new InkColor("dye_gray", 4673362, DyeColor.GRAY); - public static final InkColor dyeLightGray = new InkColor("dye_light_gray", 10329495, DyeColor.LIGHT_GRAY); - public static final InkColor dyeCyan = new InkColor("dye_cyan", 1481884, DyeColor.CYAN); - public static final InkColor dyePurple = new InkColor("dye_purple", 8991416, DyeColor.PURPLE); - public static final InkColor dyeBlue = new InkColor("dye_blue", 3949738, DyeColor.BLUE); - public static final InkColor dyeBrown = new InkColor("dye_brown", 8606770, DyeColor.BROWN); - public static final InkColor dyeGreen = new InkColor("dye_green", 6192150, DyeColor.GREEN); - public static final InkColor dyeRed = new InkColor("dye_red", 11546150, DyeColor.RED); - public static final InkColor dyeBlack = new InkColor("dye_black", 1908001, DyeColor.BLACK); - - //3.0 - public static final InkColor royalBlue = new InkColor("royal_blue", 0x525CF5); - public static final InkColor mothGreen = new InkColor("moth_green", 0x425113); - public static final InkColor lightGreen = new InkColor("light_green", 0x85E378); - public static final InkColor purple = new InkColor("purple", 0x6C0676); - public static final InkColor mustard = new InkColor("mustard", 0xCE8003); - public static final InkColor lumigreen = new InkColor("lumigreen", 0x60AB43); - public static final InkColor darkBlue = new InkColor("dark_blue", 0x0D195E); - public static final InkColor soda = new InkColor("soda", 0x65B799); - public static final InkColor deepBlue = new InkColor("deep_blue", 0x0D37C3); - public static final InkColor fuchsia = new InkColor("fuchsia", 0xE532D6); - public static final InkColor winterGreen = new InkColor("winter_green", 0x4DE29D); - public static final InkColor pumpkin = new InkColor("pumpkin", 0xDD6900); - public static final InkColor redwood = new InkColor("redwood", 0x5B342E); - - public static final InkColor undyed = new InkColor("default", ColorUtils.DEFAULT); - - - @SubscribeEvent - public static void registerInkColors(final RegistryEvent.Register event) - { - IForgeRegistry registry = event.getRegistry(); - - registry.register(orange); - registry.register(blue); - registry.register(pink); - registry.register(green); - - registry.register(lightBlue); - registry.register(turquoise); - registry.register(yellow); - registry.register(lilac); - registry.register(lemon); - registry.register(plum); - - registry.register(cyan); - registry.register(peach); - registry.register(mint); - registry.register(cherry); - - registry.register(neonPink); - registry.register(neonGreen); - registry.register(neonOrange); - registry.register(neonBlue); - - registry.register(squid); - registry.register(octo); - - registry.register(mojang); - registry.register(cobalt); - registry.register(ice); - registry.register(floral); - registry.register(omniGreen); - registry.register(mana); - - registry.register(dyeWhite); - registry.register(dyeOrange); - registry.register(dyeMagenta); - registry.register(dyeLightBlue); - registry.register(dyeYellow); - registry.register(dyeLime); - registry.register(dyePink); - registry.register(dyeGray); - registry.register(dyeLightGray); - registry.register(dyeCyan); - registry.register(dyePurple); - registry.register(dyeBlue); - registry.register(dyeBrown); - registry.register(dyeGreen); - registry.register(dyeRed); - registry.register(dyeBlack); - - registry.register(lightGreen); - registry.register(purple); - registry.register(royalBlue); - registry.register(mothGreen); - registry.register(mustard); - registry.register(lumigreen); - registry.register(darkBlue); - registry.register(soda); - registry.register(deepBlue); - registry.register(fuchsia); - registry.register(winterGreen); - registry.register(pumpkin); - registry.register(redwood); - - registry.register(undyed); - } - - @SubscribeEvent - public static void registerRegistry(final NewRegistryEvent event) { - REGISTRY = event.create(new RegistryBuilder() - .setName(new ResourceLocation(Splatcraft.MODID, "ink_colors")) - .setType(InkColor.class) - .set(DummyFactory.INSTANCE)); - } - - private static class DummyFactory implements IForgeRegistry.DummyFactory { - private static final DummyFactory INSTANCE = new DummyFactory(); - - @Override - public InkColor createDummy(ResourceLocation key) { - return new InkColor.DummyType().setRegistryName(key); - } - } -} diff --git a/src/main/java/net/splatcraft/forge/registries/SplatcraftItems.java b/src/main/java/net/splatcraft/forge/registries/SplatcraftItems.java index 87fcd6e12..8913ac6fb 100644 --- a/src/main/java/net/splatcraft/forge/registries/SplatcraftItems.java +++ b/src/main/java/net/splatcraft/forge/registries/SplatcraftItems.java @@ -9,9 +9,7 @@ import net.minecraft.client.renderer.item.ItemPropertyFunction; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvents; -import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.entity.ai.attributes.Attribute; -import net.minecraft.world.entity.ai.attributes.RangedAttribute; +import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; @@ -19,12 +17,11 @@ import net.minecraft.world.level.block.DispenserBlock; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.IForgeRegistry; +import net.minecraftforge.registries.MissingMappingsEvent; import net.minecraftforge.registries.RegistryObject; import net.splatcraft.forge.Splatcraft; import net.splatcraft.forge.client.models.inktanks.ArmoredInkTankModel; @@ -33,12 +30,31 @@ import net.splatcraft.forge.client.models.inktanks.InkTankModel; import net.splatcraft.forge.dispenser.PlaceBlockDispenseBehavior; import net.splatcraft.forge.entities.subs.CurlingBombEntity; -import net.splatcraft.forge.items.*; +import net.splatcraft.forge.items.BlockItem; +import net.splatcraft.forge.items.BlueprintItem; +import net.splatcraft.forge.items.ColoredArmorItem; +import net.splatcraft.forge.items.ColoredBlockItem; +import net.splatcraft.forge.items.FilterItem; +import net.splatcraft.forge.items.InkTankItem; +import net.splatcraft.forge.items.InkWaxerItem; +import net.splatcraft.forge.items.JumpLureItem; +import net.splatcraft.forge.items.PowerEggCanItem; +import net.splatcraft.forge.items.SquidBumperItem; +import net.splatcraft.forge.items.StagePadItem; import net.splatcraft.forge.items.remotes.ColorChangerItem; import net.splatcraft.forge.items.remotes.InkDisruptorItem; import net.splatcraft.forge.items.remotes.RemoteItem; import net.splatcraft.forge.items.remotes.TurfScannerItem; -import net.splatcraft.forge.items.weapons.*; +import net.splatcraft.forge.items.weapons.BlasterItem; +import net.splatcraft.forge.items.weapons.ChargerItem; +import net.splatcraft.forge.items.weapons.CurlingSubWeaponItem; +import net.splatcraft.forge.items.weapons.DualieItem; +import net.splatcraft.forge.items.weapons.RollerItem; +import net.splatcraft.forge.items.weapons.ShooterItem; +import net.splatcraft.forge.items.weapons.SlosherItem; +import net.splatcraft.forge.items.weapons.SplatlingItem; +import net.splatcraft.forge.items.weapons.SubWeaponItem; +import net.splatcraft.forge.items.weapons.WeaponBaseItem; import net.splatcraft.forge.util.ColorUtils; import net.splatcraft.forge.util.SplatcraftArmorMaterial; @@ -49,7 +65,7 @@ public class SplatcraftItems { protected static final DeferredRegister REGISTRY = DeferredRegister.create(ForgeRegistries.ITEMS, MODID); - public static final List weapons = new ArrayList<>(); + public static final List weapons = new ArrayList<>(); public static final ArrayList inkColoredItems = new ArrayList<>(); public static final UUID SPEED_MOD_UUID = UUID.fromString("dc65cedb-19d2-4731-a492-ee930c8234df"); @@ -147,27 +163,27 @@ public class SplatcraftItems { public static final RegistryObject curlingBomb = REGISTRY.register("curling_bomb", () -> new CurlingSubWeaponItem(SplatcraftEntities.CURLING_BOMB, "curling_bomb", CurlingBombEntity::onItemUseTick)); //Vanity - public static final RegistryObject inkClothHelmet = REGISTRY.register("ink_cloth_helmet", () -> new ColoredArmorItem(INK_CLOTH, EquipmentSlot.HEAD)); - public static final RegistryObject inkClothChestplate = REGISTRY.register("ink_cloth_chestplate", () -> new ColoredArmorItem(INK_CLOTH, EquipmentSlot.CHEST)); - public static final RegistryObject inkClothLeggings = REGISTRY.register("ink_cloth_leggings", () -> new ColoredArmorItem(INK_CLOTH, EquipmentSlot.LEGS)); - public static final RegistryObject inkClothBoots = REGISTRY.register("ink_cloth_boots", () -> new ColoredArmorItem(INK_CLOTH, EquipmentSlot.FEET)); + public static final RegistryObject inkClothHelmet = REGISTRY.register("ink_cloth_helmet", () -> new ColoredArmorItem(INK_CLOTH, ArmorItem.Type.HELMET)); + public static final RegistryObject inkClothChestplate = REGISTRY.register("ink_cloth_chestplate", () -> new ColoredArmorItem(INK_CLOTH, ArmorItem.Type.CHESTPLATE)); + public static final RegistryObject inkClothLeggings = REGISTRY.register("ink_cloth_leggings", () -> new ColoredArmorItem(INK_CLOTH, ArmorItem.Type.LEGGINGS)); + public static final RegistryObject inkClothBoots = REGISTRY.register("ink_cloth_boots", () -> new ColoredArmorItem(INK_CLOTH, ArmorItem.Type.BOOTS)); //Materials - public static final RegistryObject sardinium = REGISTRY.register("sardinium", () -> new Item(new Item.Properties().tab(SplatcraftItemGroups.GROUP_GENERAL))); + public static final RegistryObject sardinium = REGISTRY.register("sardinium", () -> new Item(new Item.Properties())); public static final RegistryObject sardiniumBlock = REGISTRY.register("sardinium_block", () -> new BlockItem(SplatcraftBlocks.sardiniumBlock.get())); - public static final RegistryObject rawSardinium = REGISTRY.register("raw_sardinium", () -> new Item(new Item.Properties().tab(SplatcraftItemGroups.GROUP_GENERAL))); + public static final RegistryObject rawSardinium = REGISTRY.register("raw_sardinium", () -> new Item(new Item.Properties())); public static final RegistryObject sardiniumOre = REGISTRY.register("sardinium_ore", () -> new BlockItem(SplatcraftBlocks.sardiniumOre.get())); public static final RegistryObject rawSardiniumBlock = REGISTRY.register("raw_sardinium_block", () -> new BlockItem(SplatcraftBlocks.rawSardiniumBlock.get())); public static final RegistryObject coralite = REGISTRY.register("coralite", () -> new ColoredBlockItem(SplatcraftBlocks.coralite.get()).setMatchColor(false).clearsToSelf()); public static final RegistryObject coraliteSlab = REGISTRY.register("coralite_slab", () -> new ColoredBlockItem(SplatcraftBlocks.coraliteSlab.get()).setMatchColor(false).clearsToSelf()); public static final RegistryObject coraliteStairs = REGISTRY.register("coralite_stairs", () -> new ColoredBlockItem(SplatcraftBlocks.coraliteStairs.get()).setMatchColor(false).clearsToSelf()); - public static final RegistryObject powerEgg = REGISTRY.register("power_egg", () -> new Item(new Item.Properties().tab(SplatcraftItemGroups.GROUP_GENERAL))); + public static final RegistryObject powerEgg = REGISTRY.register("power_egg", () -> new Item(new Item.Properties())); public static final RegistryObject powerEggCan = REGISTRY.register("power_egg_can", PowerEggCanItem::new); public static final RegistryObject powerEggBlock = REGISTRY.register("power_egg_block", () -> new BlockItem(SplatcraftBlocks.powerEggBlock.get())); public static final RegistryObject emptyInkwell = REGISTRY.register("empty_inkwell", () -> new BlockItem(SplatcraftBlocks.emptyInkwell.get())); - public static final RegistryObject ammoKnightsScrap = REGISTRY.register("ammo_knights_scrap", () -> new Item(new Item.Properties().tab(SplatcraftItemGroups.GROUP_GENERAL))); + public static final RegistryObject ammoKnightsScrap = REGISTRY.register("ammo_knights_scrap", () -> new Item(new Item.Properties())); public static final RegistryObject blueprint = REGISTRY.register("blueprint", BlueprintItem::new); - public static final RegistryObject kensaPin = REGISTRY.register("toni_kensa_pin", () -> new Item(new Item.Properties().tab(SplatcraftItemGroups.GROUP_GENERAL).rarity(Rarity.UNCOMMON))); + public static final RegistryObject kensaPin = REGISTRY.register("toni_kensa_pin", () -> new Item(new Item.Properties().rarity(Rarity.UNCOMMON))); //Remotes public static final RegistryObject turfScanner = REGISTRY.register("turf_scanner", TurfScannerItem::new); @@ -208,10 +224,10 @@ public class SplatcraftItems { public static final RegistryObject splatSwitch = REGISTRY.register("splat_switch", () -> new BlockItem(SplatcraftBlocks.splatSwitch.get())); //Ink Stained Blocks - public static final RegistryObject inkedWool = REGISTRY.register("ink_stained_wool", () -> new ColoredBlockItem(SplatcraftBlocks.inkedWool.get(), new Item.Properties().tab(SplatcraftItemGroups.GROUP_GENERAL), Items.WHITE_WOOL)); - public static final RegistryObject inkedCarpet = REGISTRY.register("ink_stained_carpet", () -> new ColoredBlockItem(SplatcraftBlocks.inkedCarpet.get(), new Item.Properties().tab(SplatcraftItemGroups.GROUP_GENERAL), Items.WHITE_CARPET)); - public static final RegistryObject inkedGlass = REGISTRY.register("ink_stained_glass", () -> new ColoredBlockItem(SplatcraftBlocks.inkedGlass.get(), new Item.Properties().tab(SplatcraftItemGroups.GROUP_GENERAL), Items.GLASS)); - public static final RegistryObject inkedGlassPane = REGISTRY.register("ink_stained_glass_pane", () -> new ColoredBlockItem(SplatcraftBlocks.inkedGlassPane.get(), new Item.Properties().tab(SplatcraftItemGroups.GROUP_GENERAL), Items.GLASS_PANE)); + public static final RegistryObject inkedWool = REGISTRY.register("ink_stained_wool", () -> new ColoredBlockItem(SplatcraftBlocks.inkedWool.get(), new Item.Properties(), Items.WHITE_WOOL)); + public static final RegistryObject inkedCarpet = REGISTRY.register("ink_stained_carpet", () -> new ColoredBlockItem(SplatcraftBlocks.inkedCarpet.get(), new Item.Properties(), Items.WHITE_CARPET)); + public static final RegistryObject inkedGlass = REGISTRY.register("ink_stained_glass", () -> new ColoredBlockItem(SplatcraftBlocks.inkedGlass.get(), new Item.Properties(), Items.GLASS)); + public static final RegistryObject inkedGlassPane = REGISTRY.register("ink_stained_glass_pane", () -> new ColoredBlockItem(SplatcraftBlocks.inkedGlassPane.get(), new Item.Properties(), Items.GLASS_PANE)); //Barriers public static final RegistryObject allowedColorBarrier = REGISTRY.register("allowed_color_barrier", () -> new ColoredBlockItem(SplatcraftBlocks.allowedColorBarrier.get())); @@ -220,8 +236,8 @@ public class SplatcraftItems { public static final RegistryObject stageVoid = REGISTRY.register("stage_void", () -> new BlockItem(SplatcraftBlocks.stageVoid.get())); //Gear - public static final RegistryObject splatfestBand = REGISTRY.register("splatfest_band", () -> new Item(new Item.Properties().stacksTo(1).tab(SplatcraftItemGroups.GROUP_GENERAL))); - public static final RegistryObject clearBand = REGISTRY.register("clear_ink_band", () -> new Item(new Item.Properties().stacksTo(1).tab(SplatcraftItemGroups.GROUP_GENERAL))); + public static final RegistryObject splatfestBand = REGISTRY.register("splatfest_band", () -> new Item(new Item.Properties().stacksTo(1))); + public static final RegistryObject clearBand = REGISTRY.register("clear_ink_band", () -> new Item(new Item.Properties().stacksTo(1))); public static final RegistryObject waxApplicator = REGISTRY.register("wax_applicator", InkWaxerItem::new); public static final RegistryObject superJumpLure = REGISTRY.register("super_jump_lure", JumpLureItem::new); @@ -368,13 +384,16 @@ public static class Missmaps { put("ink_polisher", waxApplicator); }}; + @SubscribeEvent - public static void onMissingMappings(final RegistryEvent.MissingMappings event) { - for (RegistryEvent.MissingMappings.Mapping item : event.getMappings(Splatcraft.MODID)) { - String key = item.key.getPath(); - if (remaps.containsKey(key)) - item.remap(remaps.get(key).get()); - } + public static void onMissingMappings(final MissingMappingsEvent event) + { + if(event.getKey().equals(ForgeRegistries.Keys.ITEMS)) + for (MissingMappingsEvent.Mapping item : event.getMappings(ForgeRegistries.Keys.ITEMS, Splatcraft.MODID)) { + String key = item.getKey().getPath(); + if (remaps.containsKey(key)) + item.remap(remaps.get(key).get()); + } } } } diff --git a/src/main/java/net/splatcraft/forge/registries/SplatcraftLoot.java b/src/main/java/net/splatcraft/forge/registries/SplatcraftLoot.java index b0292d7a1..c5e8329b0 100644 --- a/src/main/java/net/splatcraft/forge/registries/SplatcraftLoot.java +++ b/src/main/java/net/splatcraft/forge/registries/SplatcraftLoot.java @@ -1,14 +1,12 @@ package net.splatcraft.forge.registries; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; +import com.mojang.serialization.Codec; +import net.minecraft.core.registries.Registries; import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType; -import net.minecraftforge.common.loot.GlobalLootModifierSerializer; -import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.common.loot.IGlobalLootModifier; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.IForgeRegistry; +import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; import net.splatcraft.forge.Splatcraft; import net.splatcraft.forge.loot.BlueprintLootFunction; @@ -20,17 +18,10 @@ @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, modid = Splatcraft.MODID) public class SplatcraftLoot { - protected static final DeferredRegister REGISTRY = DeferredRegister.create(Registry.LOOT_FUNCTION_REGISTRY, MODID); + protected static final DeferredRegister> MODIFIER_REGISTRY = DeferredRegister.create(ForgeRegistries.Keys.GLOBAL_LOOT_MODIFIER_SERIALIZERS, MODID); + protected static final DeferredRegister REGISTRY = DeferredRegister.create(Registries.LOOT_FUNCTION_TYPE, MODID); public static final RegistryObject BLUEPRINT = REGISTRY.register("blueprint_pool", () -> new LootItemFunctionType(new BlueprintLootFunction.Serializer())); - - - @SubscribeEvent - public static void registerGLM(RegistryEvent.Register> event) - { - IForgeRegistry> registry = event.getRegistry(); - - registry.register(new FishingLootModifier.Serializer().setRegistryName(new ResourceLocation(Splatcraft.MODID, "fishing"))); - registry.register(new ChestLootModifier.Serializer().setRegistryName(new ResourceLocation(Splatcraft.MODID, "chest_loot"))); - } + public static final RegistryObject> FISHING_MODIFIER = MODIFIER_REGISTRY.register("fishing", () -> FishingLootModifier.CODEC); + public static final RegistryObject> CHEST_LOOT_MODIFIER = MODIFIER_REGISTRY.register("chest_loot", () -> ChestLootModifier.CODEC); } diff --git a/src/main/java/net/splatcraft/forge/registries/SplatcraftParticleTypes.java b/src/main/java/net/splatcraft/forge/registries/SplatcraftParticleTypes.java index a55cb72f7..56c2ae09b 100644 --- a/src/main/java/net/splatcraft/forge/registries/SplatcraftParticleTypes.java +++ b/src/main/java/net/splatcraft/forge/registries/SplatcraftParticleTypes.java @@ -1,68 +1,62 @@ package net.splatcraft.forge.registries; import com.mojang.serialization.Codec; -import net.minecraft.client.Minecraft; import net.minecraft.core.particles.ParticleType; -import net.minecraftforge.client.event.ParticleFactoryRegisterEvent; -import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.client.event.RegisterParticleProvidersEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.registries.IForgeRegistry; -import net.splatcraft.forge.client.particles.*; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; +import net.splatcraft.forge.client.particles.InkExplosionParticle; +import net.splatcraft.forge.client.particles.InkExplosionParticleData; +import net.splatcraft.forge.client.particles.InkSplashParticle; +import net.splatcraft.forge.client.particles.InkSplashParticleData; +import net.splatcraft.forge.client.particles.InkTerrainParticle; +import net.splatcraft.forge.client.particles.InkTerrainParticleData; +import net.splatcraft.forge.client.particles.SquidSoulParticle; +import net.splatcraft.forge.client.particles.SquidSoulParticleData; + +import static net.splatcraft.forge.Splatcraft.MODID; @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) public class SplatcraftParticleTypes { - public static final ParticleType INK_SPLASH = new ParticleType<>(false, InkSplashParticleData.DESERIALIZER) { + protected static final DeferredRegister> REGISTRY = DeferredRegister.create(ForgeRegistries.PARTICLE_TYPES, MODID); + + public static final RegistryObject> INK_SPLASH = REGISTRY.register("ink_splash", () -> new ParticleType<>(false, InkSplashParticleData.DESERIALIZER) { @Override public Codec codec() { return InkSplashParticleData.CODEC; } - }; - public static final ParticleType INK_EXPLOSION = new ParticleType(false, InkExplosionParticleData.DESERIALIZER) - { - @Override - public Codec codec() - { - return InkExplosionParticleData.CODEC; - } - }; - public static final ParticleType SQUID_SOUL = new ParticleType(false, SquidSoulParticleData.DESERIALIZER) - { - @Override - public Codec codec() - { - return SquidSoulParticleData.CODEC; - } - }; - public static final ParticleType INK_TERRAIN = new ParticleType(false, InkTerrainParticleData.DESERIALIZER) + }); + public static final RegistryObject> INK_EXPLOSION = REGISTRY.register("ink_explosion", () -> new ParticleType<>(false, InkExplosionParticleData.DESERIALIZER) { + @Override + public Codec codec() { + return InkExplosionParticleData.CODEC; + } + }); + public static final RegistryObject> SQUID_SOUL = REGISTRY.register("squid_soul", () -> new ParticleType<>(false, SquidSoulParticleData.DESERIALIZER) { + @Override + public Codec codec() { + return SquidSoulParticleData.CODEC; + } + }); + public static final RegistryObject> INK_TERRAIN = REGISTRY.register("ink_terrain", () -> new ParticleType(false, InkTerrainParticleData.DESERIALIZER) { @Override public Codec codec() { return InkTerrainParticleData.CODEC; } - }; - - @SubscribeEvent - public static void registerFactories(ParticleFactoryRegisterEvent event) - { - Minecraft mc = Minecraft.getInstance(); - mc.particleEngine.register(INK_SPLASH, InkSplashParticle.Factory::new); - mc.particleEngine.register(INK_EXPLOSION, InkExplosionParticle.Factory::new); - mc.particleEngine.register(SQUID_SOUL, SquidSoulParticle.Factory::new); - mc.particleEngine.register(INK_TERRAIN, InkTerrainParticle.Factory::new); - } - + }); @SubscribeEvent - public static void registerParticles(RegistryEvent.Register> event) + public static void registerFactories(RegisterParticleProvidersEvent event) { - IForgeRegistry> registry = event.getRegistry(); - - registry.register(INK_SPLASH.setRegistryName("ink_splash")); - registry.register(INK_EXPLOSION.setRegistryName("ink_explosion")); - registry.register(SQUID_SOUL.setRegistryName("squid_soul")); - registry.register(INK_TERRAIN.setRegistryName("ink_terrain")); + event.registerSpriteSet(INK_SPLASH.get(), InkSplashParticle.Factory::new); + event.registerSpriteSet(INK_EXPLOSION.get(), InkExplosionParticle.Factory::new); + event.registerSpriteSet(SQUID_SOUL.get(), SquidSoulParticle.Factory::new); + event.registerSpriteSet(INK_TERRAIN.get(), InkTerrainParticle.Factory::new); } } diff --git a/src/main/java/net/splatcraft/forge/registries/SplatcraftRegisties.java b/src/main/java/net/splatcraft/forge/registries/SplatcraftRegisties.java index f256e4e35..1138c251a 100644 --- a/src/main/java/net/splatcraft/forge/registries/SplatcraftRegisties.java +++ b/src/main/java/net/splatcraft/forge/registries/SplatcraftRegisties.java @@ -11,9 +11,12 @@ public static void register() SplatcraftEntities.REGISTRY.register(FMLJavaModLoadingContext.get().getModEventBus()); SplatcraftAttributes.REGISTRY.register(FMLJavaModLoadingContext.get().getModEventBus()); SplatcraftItems.REGISTRY.register(FMLJavaModLoadingContext.get().getModEventBus()); + SplatcraftItemGroups.REGISTRY.register(FMLJavaModLoadingContext.get().getModEventBus()); SplatcraftTileEntities.REGISTRY.register(FMLJavaModLoadingContext.get().getModEventBus()); SplatcraftTileEntities.CONTAINER_REGISTRY.register(FMLJavaModLoadingContext.get().getModEventBus()); SplatcraftOreGen.REGISTRY.register(FMLJavaModLoadingContext.get().getModEventBus()); SplatcraftLoot.REGISTRY.register(FMLJavaModLoadingContext.get().getModEventBus()); + SplatcraftParticleTypes.REGISTRY.register(FMLJavaModLoadingContext.get().getModEventBus()); + SplatcraftCommands.ARGUMENT_REGISTRY.register(FMLJavaModLoadingContext.get().getModEventBus()); } } diff --git a/src/main/java/net/splatcraft/forge/tileentities/InkVatTileEntity.java b/src/main/java/net/splatcraft/forge/tileentities/InkVatTileEntity.java index 6f19d85d0..ee38586c5 100644 --- a/src/main/java/net/splatcraft/forge/tileentities/InkVatTileEntity.java +++ b/src/main/java/net/splatcraft/forge/tileentities/InkVatTileEntity.java @@ -123,8 +123,7 @@ public boolean consumeIngredients(int count) public void updateRecipeOutput() { if (hasRecipe()) { - setItem(4, ColorUtils.setColorLocked(ColorUtils.setInkColor(new ItemStack(SplatcraftItems.inkwell.get(), Math.min(SplatcraftItems.inkwell.get().getMaxStackSize(), - Math.min(Math.min(inventory.get(0).getCount(), inventory.get(1).getCount()), inventory.get(2).getCount()))), getColor()), true)); + setItem(4, ColorUtils.setColorLocked(ColorUtils.setInkColor(SplatcraftItems.inkwell.get().getDefaultInstance(), getColor()), true)); } else setItem(4, ItemStack.EMPTY); } diff --git a/src/main/java/net/splatcraft/forge/tileentities/container/InkVatContainer.java b/src/main/java/net/splatcraft/forge/tileentities/container/InkVatContainer.java index 311cf523a..f9f3d0674 100644 --- a/src/main/java/net/splatcraft/forge/tileentities/container/InkVatContainer.java +++ b/src/main/java/net/splatcraft/forge/tileentities/container/InkVatContainer.java @@ -14,6 +14,7 @@ import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.block.entity.BlockEntity; import net.splatcraft.forge.blocks.InkVatBlock; import net.splatcraft.forge.crafting.InkVatColorRecipe; @@ -22,7 +23,6 @@ import net.splatcraft.forge.network.SplatcraftPacketHandler; import net.splatcraft.forge.network.c2s.UpdateBlockColorPacket; import net.splatcraft.forge.registries.SplatcraftBlocks; -import net.splatcraft.forge.registries.SplatcraftInkColors; import net.splatcraft.forge.registries.SplatcraftItems; import net.splatcraft.forge.registries.SplatcraftStats; import net.splatcraft.forge.registries.SplatcraftTileEntities; @@ -39,9 +39,9 @@ public InkVatContainer(final int windowId, final Inventory playerInv, final InkV this.te = te; this.access = ContainerLevelAccess.create(te.getLevel(), te.getBlockPos()); - addSlot(new SlotInput(new ItemStack(Items.INK_SAC), te, 0, 26, 70)); - addSlot(new SlotInput(new ItemStack(SplatcraftItems.powerEgg.get()), te, 1, 46, 70)); - addSlot(new SlotInput(new ItemStack(SplatcraftBlocks.emptyInkwell.get()), te, 2, 92, 82)); + addSlot(new SlotInput(Ingredient.of(Items.INK_SAC), te, 0, 26, 70)); + addSlot(new SlotInput(Ingredient.of(SplatcraftItems.powerEgg.get()), te, 1, 46, 70)); + addSlot(new SlotInput(Ingredient.of(SplatcraftBlocks.emptyInkwell.get()), te, 2, 92, 82)); addSlot(new SlotFilter(te, 3, 36, 89)); addSlot(new SlotOutput(playerInv.player, te, 4, 112, 82)); @@ -103,39 +103,19 @@ public static List sortRecipeList(List list) { public static List getAvailableRecipes(InkVatTileEntity te) { List recipes = Lists.newArrayList(); - if (te.hasOmniFilter()) - { - recipes = getOmniList(); - } else + + for (InkVatColorRecipe recipe : te.getLevel().getRecipeManager().getRecipesFor(SplatcraftRecipeTypes.INK_VAT_COLOR_CRAFTING_TYPE, te, te.getLevel())) { - for (InkVatColorRecipe recipe : te.getLevel().getRecipeManager().getRecipesFor(SplatcraftRecipeTypes.INK_VAT_COLOR_CRAFTING_TYPE, te, te.getLevel())) + if (recipe.matches(te, te.getLevel())) { - if (recipe.matches(te, te.getLevel())) - { - recipes.add(recipe.getOutputColor()); - } + recipes.add(recipe.getOutputColor()); } } - return recipes; - } - public static List getOmniList() - { - List list = Lists.newArrayList(); - list.addAll(InkVatColorRecipe.getOmniList()); - - for (InkColor color : SplatcraftInkColors.REGISTRY.get()) { - int c = color.getColor(); - if (!list.contains(c)) { - list.add(c); - } - } - - return list; + return recipes; } - @Override public boolean clickMenuButton(Player playerIn, int id) { @@ -264,9 +244,9 @@ public ItemStack quickMoveStack(Player playerIn, int index) static class SlotInput extends Slot { - final ItemStack validItem; + final Ingredient validItem; - public SlotInput(ItemStack validItem, Container inventoryIn, int index, int xPosition, int yPosition) + public SlotInput(Ingredient validItem, Container inventoryIn, int index, int xPosition, int yPosition) { super(inventoryIn, index, xPosition, yPosition); this.validItem = validItem; @@ -275,7 +255,7 @@ public SlotInput(ItemStack validItem, Container inventoryIn, int index, int xPos @Override public boolean mayPlace(ItemStack stack) { - return validItem.sameItemStackIgnoreDurability(stack); + return validItem.test(stack); } } diff --git a/src/main/resources/assets/splatcraft/lang/en_us.json b/src/main/resources/assets/splatcraft/lang/en_us.json index d9a6a12f2..5043b3a62 100644 --- a/src/main/resources/assets/splatcraft/lang/en_us.json +++ b/src/main/resources/assets/splatcraft/lang/en_us.json @@ -498,6 +498,7 @@ "ink_color.splatcraft.color_lock_a": "Color Locked Friendly", "ink_color.splatcraft.color_lock_b": "Color Locked Hostile", "ink_color.splatcraft.default": "Undyed", + "death.attack.splatcraft:water": "%s dissolved in water", "death.attack.splatcraft:water.player": "%s dissolved in water whilst trying to escape %s", "death.attack.splatcraft:splat": "%s was splatted",