diff --git a/build.gradle b/build.gradle index ed5d756..afd4384 100644 --- a/build.gradle +++ b/build.gradle @@ -19,9 +19,6 @@ repositories { // for more information about repositories. maven { url "https://maven.shedaniel.me/" } maven { url 'https://jitpack.io' } - maven { - url = "https://maven.parchmentmc.org" - } maven { name = "cursemaven" url = "https://www.cursemaven.com" @@ -37,12 +34,11 @@ dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings loom.layered() { officialMojangMappings() - parchment("org.parchmentmc.data:parchment-1.18.2:2022.05.02@zip") } forge "net.minecraftforge:forge:${project.forge_version}" - modImplementation "com.github.Mysticpasta1:mcef-forge:11826a2d11" - modImplementation "curse.maven:cloth_config_forge-348521:3546623" + modImplementation "com.github.Mysticpasta1:mcef-forge:3797701d8f" + modImplementation "curse.maven:cloth_config_forge-348521:3972423" // Uncomment the following line to enable the deprecated Fabric API modules. // These are included in the Fabric API production distribution and allow you to update your mod to the latest modules at a later more convenient time. diff --git a/gradle.properties b/gradle.properties index a6051dc..84fff80 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,9 +4,9 @@ loom.platform=forge # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.18.2 -yarn_mappings=1.18.2+build.3 -loader_version=0.14.8 +minecraft_version=1.19.2 +yarn_mappings=1.19.2+build.28 +loader_version=0.14.14 # Mod Properties mod_version = 1.0.0 @@ -14,4 +14,4 @@ maven_group = net.montoyo.wd archives_base_name = webdisplays # Dependencies -forge_version=1.18.2-40.1.52 +forge_version=1.19.2-43.2.6 diff --git a/src/main/java/net/montoyo/wd/WebDisplays.java b/src/main/java/net/montoyo/wd/WebDisplays.java index 3e35452..09f3faa 100644 --- a/src/main/java/net/montoyo/wd/WebDisplays.java +++ b/src/main/java/net/montoyo/wd/WebDisplays.java @@ -20,31 +20,26 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraftforge.client.event.ClientChatEvent; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.event.AttachCapabilitiesEvent; -import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.ServerChatEvent; import net.minecraftforge.event.entity.item.ItemTossEvent; import net.minecraftforge.event.entity.player.PlayerEvent; +import net.minecraftforge.event.level.LevelEvent; import net.minecraftforge.event.server.ServerStoppingEvent; -import net.minecraftforge.event.world.WorldEvent; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.network.PacketDistributor; -import net.montoyo.wd.block.WDBlockContainer; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; import net.montoyo.wd.client.ClientProxy; -import net.montoyo.wd.client.gui.controls.*; import net.montoyo.wd.config.ModConfig; import net.montoyo.wd.core.*; import net.montoyo.wd.init.BlockInit; @@ -155,6 +150,8 @@ public class WebDisplays { IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus(); bus.addListener(Messages::registryNetworkPackets); + SOUNDS.register(bus); + onRegisterSounds(); BlockInit.init(bus); ItemInit.init(bus); ItemInit.registerUpgrade(); @@ -191,23 +188,22 @@ public class WebDisplays { } } - @SubscribeEvent - public void onRegisterSounds(RegistryEvent.Register ev) { - soundTyping = registerSound(ev, "keyboardType"); - soundUpgradeAdd = registerSound(ev, "upgradeAdd"); - soundUpgradeDel = registerSound(ev, "upgradeDel"); - soundScreenCfg = registerSound(ev, "screencfgOpen"); - soundServer = registerSound(ev, "server"); - soundIronic = registerSound(ev, "ironic"); + public void onRegisterSounds() { + registerSound("keyboard_type"); + registerSound( "upgrade_add"); + registerSound( "upgrade_del"); + registerSound("screencfg_open"); + registerSound("server"); + registerSound("ironic"); } @SubscribeEvent - public void onWorldLoad(WorldEvent.Load ev) { - if (ev.getWorld() instanceof Level level) { - if (ev.getWorld().isClientSide() || level.dimension() != Level.OVERWORLD) + public void onWorldLoad(LevelEvent.Load ev) { + if (ev.getLevel() instanceof Level level) { + if (ev.getLevel().isClientSide() || level.dimension() != Level.OVERWORLD) return; - File worldDir = Objects.requireNonNull(ev.getWorld().getServer()).getServerDirectory(); + File worldDir = Objects.requireNonNull(ev.getLevel().getServer()).getServerDirectory(); File f = new File(worldDir, "wd_next.txt"); if (f.exists()) { @@ -239,9 +235,9 @@ public class WebDisplays { } @SubscribeEvent - public void onWorldLeave(WorldEvent.Unload ev) throws IOException { - if(ev.getWorld() instanceof Level level) { - if (ev.getWorld().isClientSide() || level.dimension() != Level.OVERWORLD) + public void onWorldLeave(LevelEvent.Unload ev) throws IOException { + if(ev.getLevel() instanceof Level level) { + if (ev.getLevel().isClientSide() || level.dimension() != Level.OVERWORLD) return; Server sw = Server.getInstance(); sw.stopServer(); @@ -249,11 +245,11 @@ public class WebDisplays { } @SubscribeEvent - public void onWorldSave(WorldEvent.Save ev) { - if(ev.getWorld() instanceof Level level) { - if (ev.getWorld().isClientSide() || level.dimension() != Level.OVERWORLD) + public void onWorldSave(LevelEvent.Save ev) { + if(ev.getLevel() instanceof Level level) { + if (ev.getLevel().isClientSide() || level.dimension() != Level.OVERWORLD) return; - File f = new File(Objects.requireNonNull(ev.getWorld().getServer()).getServerDirectory(), "wd_next.txt"); + File f = new File(Objects.requireNonNull(ev.getLevel().getServer()).getServerDirectory(), "wd_next.txt"); try { BufferedWriter bw = new BufferedWriter(new FileWriter(f)); @@ -267,8 +263,8 @@ public class WebDisplays { @SubscribeEvent public void onToss(ItemTossEvent ev) { - if(!ev.getEntityItem().getLevel().isClientSide) { - ItemStack is = ev.getEntityItem().getItem(); + if(!ev.getEntity().getLevel().isClientSide) { + ItemStack is = ev.getEntity().getItem(); if(is.getItem() == ItemInit.itemMinePad.get()) { CompoundTag tag = is.getTag(); @@ -289,11 +285,11 @@ public class WebDisplays { @SubscribeEvent public void onPlayerCraft(PlayerEvent.ItemCraftedEvent ev) { if(doHardRecipe && ev.getCrafting().getItem() == ItemInit.itemCraftComp.get() && (CraftComponent.EXTENSION_CARD.makeItemStack().is(ev.getCrafting().getItem()))) { - if((ev.getPlayer() instanceof ServerPlayer && !hasPlayerAdvancement((ServerPlayer) ev.getPlayer(), ADV_PAD_BREAK)) || PROXY.hasClientPlayerAdvancement(ADV_PAD_BREAK) != HasAdvancement.YES) { + if((ev.getEntity() instanceof ServerPlayer && !hasPlayerAdvancement((ServerPlayer) ev.getEntity(), ADV_PAD_BREAK)) || PROXY.hasClientPlayerAdvancement(ADV_PAD_BREAK) != HasAdvancement.YES) { ev.getCrafting().setDamageValue(CraftComponent.BAD_EXTENSION_CARD.ordinal()); - if(!ev.getPlayer().getLevel().isClientSide) - ev.getPlayer().getLevel().playSound(null, ev.getPlayer().getX(), ev.getPlayer().getY(), ev.getPlayer().getZ(), SoundEvents.ITEM_BREAK, SoundSource.MASTER, 1.0f, 1.0f); + if(!ev.getEntity().getLevel().isClientSide) + ev.getEntity().getLevel().playSound(null, ev.getEntity().getX(), ev.getEntity().getY(), ev.getEntity().getZ(), SoundEvents.ITEM_BREAK, SoundSource.MASTER, 1.0f, 1.0f); } } } @@ -305,16 +301,14 @@ public class WebDisplays { @SubscribeEvent public void onLogIn(PlayerEvent.PlayerLoggedInEvent ev) { - if(!ev.getPlayer().getLevel().isClientSide && ev.getPlayer() instanceof ServerPlayer) { + if(!ev.getEntity().getLevel().isClientSide && ev.getEntity() instanceof ServerPlayer) { IWDDCapability cap = - ev.getPlayer().getCapability(WDDCapability.Provider.cap, null).orElseThrow(RuntimeException::new); + ev.getEntity().getCapability(WDDCapability.Provider.cap, null).orElseThrow(RuntimeException::new); - if(cap == null) - Log.warning("Player %s (%s) has null IWDDCapability!", ev.getPlayer().getName(), ev.getPlayer().getGameProfile().getId().toString()); - else if(cap.isFirstRun()) { - Util.toast(ev.getPlayer(), ChatFormatting.LIGHT_PURPLE, "welcome1"); - Util.toast(ev.getPlayer(), ChatFormatting.LIGHT_PURPLE, "welcome2"); - Util.toast(ev.getPlayer(), ChatFormatting.LIGHT_PURPLE, "welcome3"); + if(cap.isFirstRun()) { + Util.toast(ev.getEntity(), ChatFormatting.LIGHT_PURPLE, "welcome1"); + Util.toast(ev.getEntity(), ChatFormatting.LIGHT_PURPLE, "welcome2"); + Util.toast(ev.getEntity(), ChatFormatting.LIGHT_PURPLE, "welcome3"); cap.clearFirstRun(); } @@ -322,7 +316,7 @@ public class WebDisplays { PacketDistributor.PacketTarget packetDistrutor = PacketDistributor.PLAYER .with( () -> - (ServerPlayer) ev.getPlayer()); + (ServerPlayer) ev.getEntity()); CMessageServerInfo message = new CMessageServerInfo(miniservPort); @@ -332,8 +326,8 @@ public class WebDisplays { @SubscribeEvent public void onLogOut(PlayerEvent.PlayerLoggedOutEvent ev) { - if(!ev.getPlayer().getLevel().isClientSide) - Server.getInstance().getClientManager().revokeClientKey(ev.getPlayer().getGameProfile().getId()); + if(!ev.getEntity().getLevel().isClientSide) + Server.getInstance().getClientManager().revokeClientKey(ev.getEntity().getGameProfile().getId()); } @SubscribeEvent @@ -345,7 +339,7 @@ public class WebDisplays { @SubscribeEvent public void onPlayerClone(PlayerEvent.Clone ev) { IWDDCapability src = ev.getOriginal().getCapability(WDDCapability.Provider.cap, null).orElse(new WDDCapability.Factory().call()); - IWDDCapability dst = ev.getPlayer().getCapability(WDDCapability.Provider.cap, null).orElse(new WDDCapability.Factory().call()); + IWDDCapability dst = ev.getEntity().getCapability(WDDCapability.Provider.cap, null).orElse(new WDDCapability.Factory().call()); if(src == null) { Log.error("src is null"); @@ -362,7 +356,7 @@ public class WebDisplays { @SubscribeEvent public void onServerChat(ServerChatEvent ev) { - String msg = ev.getMessage().trim().replaceAll("\\s+", " ").toLowerCase(); + String msg = ev.getMessage().getString().replaceAll("\\s+", " ").toLowerCase(); StringBuilder sb = new StringBuilder(msg.length()); for(int i = 0; i < msg.length(); i++) { char chr = msg.charAt(i); @@ -396,13 +390,13 @@ public class WebDisplays { return new WebDisplays().lastPadId++; } - private static SoundEvent registerSound(RegistryEvent.Register ev, String resName) { + public static DeferredRegister SOUNDS = DeferredRegister.create(ForgeRegistries.SOUND_EVENTS, "webdisplays"); + + private static void registerSound(String resName) { ResourceLocation resLoc = new ResourceLocation("webdisplays", resName); SoundEvent ret = new SoundEvent(resLoc); - ret.setRegistryName(resLoc); - ev.getRegistry().register(ret); - return ret; + SOUNDS.register(resName, () -> ret); } private static void registerTrigger(Criterion ... criteria) { diff --git a/src/main/java/net/montoyo/wd/block/WDBlock.java b/src/main/java/net/montoyo/wd/block/WDBlock.java index 2013e2e..c51821a 100644 --- a/src/main/java/net/montoyo/wd/block/WDBlock.java +++ b/src/main/java/net/montoyo/wd/block/WDBlock.java @@ -16,16 +16,11 @@ public abstract class WDBlock extends Block { super(properties); } - protected void setName(String name) { - setRegistryName(name); - } - public void makeItemBlock() { if(itemBlock != null) throw new RuntimeException("WDBlock.makeItemBlock() called twice!"); itemBlock = new BlockItem(this, new Item.Properties()); - itemBlock.setRegistryName(getRegistryName()); } public BlockItem getItem() { diff --git a/src/main/java/net/montoyo/wd/client/ClientProxy.java b/src/main/java/net/montoyo/wd/client/ClientProxy.java index dff34dd..6d11fe9 100644 --- a/src/main/java/net/montoyo/wd/client/ClientProxy.java +++ b/src/main/java/net/montoyo/wd/client/ClientProxy.java @@ -6,7 +6,6 @@ package net.montoyo.wd.client; import com.mojang.authlib.GameProfile; import com.mojang.blaze3d.platform.InputConstants; -import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.advancements.Advancement; import net.minecraft.advancements.AdvancementProgress; import net.minecraft.client.Minecraft; @@ -15,19 +14,13 @@ import net.minecraft.client.gui.screens.inventory.ContainerScreen; import net.minecraft.client.multiplayer.ClientAdvancements; import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.blockentity.BlockEntityRenderers; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.ModelBakery; -import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; -import net.minecraft.server.packs.resources.PreparableReloadListener; import net.minecraft.server.packs.resources.ReloadableResourceManager; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.server.packs.resources.ResourceManagerReloadListener; @@ -44,26 +37,19 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.ModelRegistryEvent; +import net.minecraftforge.client.event.ModelEvent; import net.minecraftforge.client.event.RenderHandEvent; -import net.minecraftforge.client.model.IModelLoader; -import net.minecraftforge.client.model.ModelLoaderRegistry; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.TickEvent; -import net.minecraftforge.event.world.WorldEvent; -import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.event.level.LevelEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; -import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.montoyo.mcef.api.*; import net.montoyo.wd.SharedProxy; import net.montoyo.wd.WebDisplays; import net.montoyo.wd.block.BlockScreen; import net.montoyo.wd.client.gui.*; -import net.montoyo.wd.client.gui.controls.*; -import net.montoyo.wd.client.gui.controls.List; import net.montoyo.wd.client.gui.loading.GuiLoader; import net.montoyo.wd.client.renderers.*; import net.montoyo.wd.core.DefaultUpgrade; @@ -109,7 +95,6 @@ public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQuer } private Minecraft mc; - private final ArrayList modelBakers = new ArrayList<>(); private net.montoyo.mcef.api.API mcef; private MinePadRenderer minePadRenderer; private JSQueryDispatcher jsDispatcher; @@ -147,8 +132,8 @@ public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQuer } @SubscribeEvent - public static void onModelRegistryEvent(ModelRegistryEvent event) { - ModelLoaderRegistry.registerLoader(ScreenModelLoader.SCREEN_LOADER, new ScreenModelLoader()); + public static void onModelRegistryEvent(ModelEvent.RegisterGeometryLoaders event) { + event.register(ScreenModelLoader.SCREEN_LOADER.getPath(), new ScreenModelLoader()); registerBlockRenderLayers(RenderType.cutout(), BlockInit.blockKeyBoard.get(), BlockInit.blockKbRight.get()); } @@ -506,28 +491,28 @@ public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQuer // ev.getModelRegistry().put(pair.getResourceLocation(), pair.getModel()); // } - @SubscribeEvent + /* @SubscribeEvent public void onRegisterModels(ModelRegistryEvent ev) { final WebDisplays wd = WebDisplays.INSTANCE; //I hope I'm doing this right because it doesn't seem like it... -// registerItemModel(wd.blockScreen.getItem(), 0, "inventory"); -// ModelLoaderRegistry.setCustomModelResourceLocation(wd.blockPeripheral.getItem(), 0, new ModelResourceLocation("webdisplays:kb_inv", "normal")); -// registerItemModel(wd.blockPeripheral.getItem(), 1, "facing=2,type=ccinterface"); -// registerItemModel(wd.blockPeripheral.getItem(), 2, "facing=2,type=cointerface"); -// registerItemModel(wd.blockPeripheral.getItem(), 3, "facing=0,type=remotectrl"); -// registerItemModel(wd.blockPeripheral.getItem(), 7, "facing=0,type=redstonectrl"); -// registerItemModel(wd.blockPeripheral.getItem(), 11, "facing=0,type=server"); -// registerItemModel(wd.itemScreenCfg, 0, "normal"); -// registerItemModel(wd.itemOwnerThief, 0, "normal"); -// registerItemModel(wd.itemLinker, 0, "normal"); -// registerItemModel(wd.itemMinePad, 0, "normal"); -// registerItemModel(wd.itemMinePad, 1, "normal"); -// registerItemModel(wd.itemLaserPointer, 0, "normal"); -// registerItemMultiModels(wd.itemUpgrade); -// registerItemMultiModels(wd.itemCraftComp); -// registerItemMultiModels(wd.itemAdvIcon); - } + registerItemModel(wd.blockScreen.getItem(), 0, "inventory"); + ModelLoaderRegistry.setCustomModelResourceLocation(wd.blockPeripheral.getItem(), 0, new ModelResourceLocation("webdisplays:kb_inv", "normal")); + registerItemModel(wd.blockPeripheral.getItem(), 1, "facing=2,type=ccinterface"); + registerItemModel(wd.blockPeripheral.getItem(), 2, "facing=2,type=cointerface"); + registerItemModel(wd.blockPeripheral.getItem(), 3, "facing=0,type=remotectrl"); + registerItemModel(wd.blockPeripheral.getItem(), 7, "facing=0,type=redstonectrl"); + registerItemModel(wd.blockPeripheral.getItem(), 11, "facing=0,type=server"); + registerItemModel(wd.itemScreenCfg, 0, "normal"); + registerItemModel(wd.itemOwnerThief, 0, "normal"); + registerItemModel(wd.itemLinker, 0, "normal"); + registerItemModel(wd.itemMinePad, 0, "normal"); + registerItemModel(wd.itemMinePad, 1, "normal"); + registerItemModel(wd.itemLaserPointer, 0, "normal"); + registerItemMultiModels(wd.itemUpgrade); + registerItemMultiModels(wd.itemCraftComp); + registerItemMultiModels(wd.itemAdvIcon); + } */ @SubscribeEvent public void onTick(TickEvent.ClientTickEvent ev) { @@ -677,9 +662,9 @@ public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQuer } @SubscribeEvent - public void onWorldUnload(WorldEvent.Unload ev) { + public void onWorldUnload(LevelEvent.Unload ev) { Log.info("World unloaded; killing screens..."); - if(ev.getWorld() instanceof Level level) { + if(ev.getLevel() instanceof Level level) { ResourceLocation dim = level.dimension().location(); for(int i = screenTracking.size() - 1; i >= 0; i--) { if(screenTracking.get(i).getLevel().dimension().location().equals(dim)) //Could be world == ev.getWorld() diff --git a/src/main/java/net/montoyo/wd/client/ResourceModelPair.java b/src/main/java/net/montoyo/wd/client/ResourceModelPair.java deleted file mode 100644 index d60de23..0000000 --- a/src/main/java/net/montoyo/wd/client/ResourceModelPair.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (C) 2018 BARBOTIN Nicolas - */ - -package net.montoyo.wd.client; - -import net.minecraft.client.resources.model.ModelResourceLocation; -import net.montoyo.wd.client.renderers.IModelBaker; - -public class ResourceModelPair { - - private final ModelResourceLocation resLoc; - private final IModelBaker model; - - public ResourceModelPair(ModelResourceLocation rl, IModelBaker m) { - resLoc = rl; - model = m; - } - - public ModelResourceLocation getResourceLocation() { - return resLoc; - } - - public IModelBaker getModel() { - return model; - } - -} diff --git a/src/main/java/net/montoyo/wd/client/gui/GuiServer.java b/src/main/java/net/montoyo/wd/client/gui/GuiServer.java index d17d256..6dfa99d 100644 --- a/src/main/java/net/montoyo/wd/client/gui/GuiServer.java +++ b/src/main/java/net/montoyo/wd/client/gui/GuiServer.java @@ -16,6 +16,8 @@ import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundSource; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.levelgen.LegacyRandomSource; import net.montoyo.wd.WebDisplays; import net.montoyo.wd.miniserv.Constants; import net.montoyo.wd.miniserv.client.*; @@ -168,7 +170,7 @@ public class GuiServer extends WDScreen { accessTime = 20; } else { if(accessSound == null) { - accessSound = new SimpleSoundInstance( WebDisplays.INSTANCE.soundServer.getLocation(), SoundSource.MASTER, 1.0f, 1.0f, true, 0, SoundInstance.Attenuation.NONE, 0.0f, 0.0f, 0.0f, false); + accessSound = new SimpleSoundInstance( WebDisplays.INSTANCE.soundServer.getLocation(), SoundSource.MASTER, 1.0f, 1.0f, RandomSource.create(),true, 0, SoundInstance.Attenuation.NONE, 0.0f, 0.0f, 0.0f, false); minecraft.getSoundManager().play(accessSound); } diff --git a/src/main/java/net/montoyo/wd/client/gui/GuiSetURL2.java b/src/main/java/net/montoyo/wd/client/gui/GuiSetURL2.java index 9ed668b..70be7d9 100644 --- a/src/main/java/net/montoyo/wd/client/gui/GuiSetURL2.java +++ b/src/main/java/net/montoyo/wd/client/gui/GuiSetURL2.java @@ -27,6 +27,7 @@ import net.montoyo.wd.utilities.BlockSide; import net.montoyo.wd.utilities.Util; import net.montoyo.wd.utilities.Vector3i; +import java.io.IOException; import java.util.Map; @Mod.EventBusSubscriber diff --git a/src/main/java/net/montoyo/wd/client/gui/WDScreen.java b/src/main/java/net/montoyo/wd/client/gui/WDScreen.java index cd1d251..569e1ec 100644 --- a/src/main/java/net/montoyo/wd/client/gui/WDScreen.java +++ b/src/main/java/net/montoyo/wd/client/gui/WDScreen.java @@ -264,7 +264,9 @@ public abstract class WDScreen extends Screen { } public void loadFrom(ResourceLocation resLoc) { - JsonObject root = GuiLoader.getJson(resLoc); + try { + JsonObject root = GuiLoader.getJson(resLoc); + if(root == null) throw new RuntimeException("Could not load GUI file " + resLoc.toString()); @@ -312,6 +314,10 @@ public abstract class WDScreen extends Screen { if(root.has("center") && root.get("center").getAsBoolean()) centerControls(); + + } catch (IOException e) { + e.printStackTrace(); + } } @Override diff --git a/src/main/java/net/montoyo/wd/client/gui/controls/Button.java b/src/main/java/net/montoyo/wd/client/gui/controls/Button.java index 8f3077f..6f2b44f 100644 --- a/src/main/java/net/montoyo/wd/client/gui/controls/Button.java +++ b/src/main/java/net/montoyo/wd/client/gui/controls/Button.java @@ -208,7 +208,7 @@ public class Button extends Control { btn.y = json.getInt("y", 0); btn.setWidth(json.getInt("width", 200)); btn.setHeight(json.getInt("height", 20)); - btn.setMessage(Component.nullToEmpty(tr(json.getString("label", btn.getMessage().getContents())))); + btn.setMessage(Component.nullToEmpty(tr(json.getString("label", btn.getMessage().getContents().toString())))); btn.active = json.getBool("active", btn.active); btn.visible = json.getBool("visible", btn.visible); diff --git a/src/main/java/net/montoyo/wd/client/gui/controls/CheckBox.java b/src/main/java/net/montoyo/wd/client/gui/controls/CheckBox.java index 5fdfb5f..9d7c9f9 100644 --- a/src/main/java/net/montoyo/wd/client/gui/controls/CheckBox.java +++ b/src/main/java/net/montoyo/wd/client/gui/controls/CheckBox.java @@ -8,16 +8,10 @@ import com.google.common.collect.Lists; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.resources.sounds.SimpleSoundInstance; -import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvents; -import net.minecraftforge.event.world.ChunkDataEvent; -import net.minecraftforge.eventbus.api.IEventBus; import net.montoyo.wd.client.gui.loading.JsonOWrapper; -import java.util.stream.Collectors; -import java.util.stream.Stream; - public class CheckBox extends BasicControl { private static final ResourceLocation texUnchecked = new ResourceLocation("webdisplays", "textures/gui/checkbox.png"); diff --git a/src/main/java/net/montoyo/wd/client/gui/controls/List.java b/src/main/java/net/montoyo/wd/client/gui/controls/List.java index dbb230d..8c4c382 100644 --- a/src/main/java/net/montoyo/wd/client/gui/controls/List.java +++ b/src/main/java/net/montoyo/wd/client/gui/controls/List.java @@ -9,7 +9,6 @@ import com.mojang.blaze3d.pipeline.TextureTarget; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; -import net.minecraft.network.chat.TextComponent; import net.montoyo.wd.client.gui.loading.JsonOWrapper; import java.util.ArrayList; diff --git a/src/main/java/net/montoyo/wd/client/gui/loading/GuiLoader.java b/src/main/java/net/montoyo/wd/client/gui/loading/GuiLoader.java index fa9fed6..dc633f0 100644 --- a/src/main/java/net/montoyo/wd/client/gui/loading/GuiLoader.java +++ b/src/main/java/net/montoyo/wd/client/gui/loading/GuiLoader.java @@ -62,24 +62,15 @@ public class GuiLoader { return ret; } - public static JsonObject getJson(ResourceLocation resLoc) { + public static JsonObject getJson(ResourceLocation resLoc) throws IOException { JsonObject ret = RESOURCES.get(resLoc); if(ret == null) { Resource resource; - try { - resource = Minecraft.getInstance().getResourceManager().getResource(resLoc); - } catch(IOException e) { - Log.errorEx("Couldn't load JSON UI from file", e); - throw new RuntimeException(e); - } + resource = Minecraft.getInstance().getResourceManager().getResource(resLoc).get(); JsonParser parser = new JsonParser(); - ret = parser.parse(new InputStreamReader(resource.getInputStream())).getAsJsonObject(); - - try { - resource.close(); - } catch(IOException e) {} + ret = parser.parse(new InputStreamReader(resource.open())).getAsJsonObject(); RESOURCES.put(resLoc, ret); } diff --git a/src/main/java/net/montoyo/wd/client/renderers/IModelBaker.java b/src/main/java/net/montoyo/wd/client/renderers/IModelBaker.java deleted file mode 100644 index 75f54e8..0000000 --- a/src/main/java/net/montoyo/wd/client/renderers/IModelBaker.java +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (C) 2018 BARBOTIN Nicolas - */ - -package net.montoyo.wd.client.renderers; - -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraftforge.client.model.data.IDynamicBakedModel; - -public interface IModelBaker extends IDynamicBakedModel{ - - void loadTextures(TextureAtlas texMap); - -} diff --git a/src/main/java/net/montoyo/wd/client/renderers/LaserPointerRenderer.java b/src/main/java/net/montoyo/wd/client/renderers/LaserPointerRenderer.java index c810fa3..7c4bdb9 100644 --- a/src/main/java/net/montoyo/wd/client/renderers/LaserPointerRenderer.java +++ b/src/main/java/net/montoyo/wd/client/renderers/LaserPointerRenderer.java @@ -24,7 +24,6 @@ public final class LaserPointerRenderer implements IItemRenderer { private static final float PI = (float) Math.PI; private final Tesselator t = Tesselator.getInstance(); private final BufferBuilder bb = t.getBuilder(); - private final VertexBuffer vb = new VertexBuffer(); private final FloatBuffer matrix1 = BufferUtils.createFloatBuffer(16); private final FloatBuffer renderBuffer = BufferUtils.createFloatBuffer(8); diff --git a/src/main/java/net/montoyo/wd/client/renderers/ScreenBaker.java b/src/main/java/net/montoyo/wd/client/renderers/ScreenBaker.java index 7be62a9..388ab5e 100644 --- a/src/main/java/net/montoyo/wd/client/renderers/ScreenBaker.java +++ b/src/main/java/net/montoyo/wd/client/renderers/ScreenBaker.java @@ -8,30 +8,24 @@ import com.google.common.collect.ImmutableList; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.ItemOverrides; import net.minecraft.client.renderer.block.model.ItemTransforms; -import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.BakedModel; import net.minecraft.client.resources.model.ModelState; import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.RandomSource; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.IntegerProperty; -import net.minecraft.world.level.material.Material; -import net.minecraftforge.client.model.data.IDynamicBakedModel; -import net.minecraftforge.client.model.data.IModelData; import net.montoyo.wd.utilities.BlockSide; import net.montoyo.wd.utilities.Vector3f; import net.montoyo.wd.utilities.Vector3i; -import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Random; import java.util.function.Function; -public class ScreenBaker implements IModelBaker { +public class ScreenBaker implements BakedModel { private static final List noQuads = ImmutableList.of(); private final TextureAtlasSprite[] texs = new TextureAtlasSprite[16]; @@ -49,12 +43,6 @@ public class ScreenBaker implements IModelBaker { this.itemTransforms = itemTransforms; } - @Override - public void loadTextures(TextureAtlas texMap) { - for(int i = 0; i < texs.length; i++) - texs[i] = texMap.getSprite(new ResourceLocation("webdisplays", "blocks/screen" + i)); - } - private void putVertex(int[] buf, int pos, Vector3f vpos, TextureAtlasSprite tex, Vector3f uv, Vector3i normal) { buf[pos * 7 + 0] = Float.floatToRawIntBits(vpos.x); buf[pos * 7 + 1] = Float.floatToRawIntBits(vpos.y); @@ -106,9 +94,8 @@ public class ScreenBaker implements IModelBaker { return new BakedQuad(data, 0xFFFFFFFF, blockFacings[side.ordinal()], tex, true); } - @NotNull @Override - public List getQuads(@org.jetbrains.annotations.Nullable BlockState state, @org.jetbrains.annotations.Nullable Direction side, @NotNull Random random, @NotNull IModelData iModelData) { + public List getQuads(@Nullable BlockState state, @Nullable Direction side, RandomSource random) { if(side == null) return noQuads; BlockState bs = state; diff --git a/src/main/java/net/montoyo/wd/client/renderers/ScreenModelLoader.java b/src/main/java/net/montoyo/wd/client/renderers/ScreenModelLoader.java index 5ecec8c..8f611d5 100644 --- a/src/main/java/net/montoyo/wd/client/renderers/ScreenModelLoader.java +++ b/src/main/java/net/montoyo/wd/client/renderers/ScreenModelLoader.java @@ -2,23 +2,23 @@ package net.montoyo.wd.client.renderers; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; import com.mojang.datafixers.util.Pair; import net.minecraft.client.renderer.block.model.ItemOverrides; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.*; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.resources.ResourceManager; import net.minecraftforge.client.ForgeHooksClient; -import net.minecraftforge.client.model.IModelConfiguration; -import net.minecraftforge.client.model.IModelLoader; -import net.minecraftforge.client.model.geometry.IModelGeometry; +import net.minecraftforge.client.model.geometry.IGeometryBakingContext; +import net.minecraftforge.client.model.geometry.IGeometryLoader; +import net.minecraftforge.client.model.geometry.IUnbakedGeometry; import java.util.Collection; import java.util.List; import java.util.Set; import java.util.function.Function; -public class ScreenModelLoader implements IModelLoader { +public class ScreenModelLoader implements IGeometryLoader { public static final ResourceLocation SCREEN_LOADER = new ResourceLocation("webdisplays", "screen_loader"); @@ -27,25 +27,20 @@ public class ScreenModelLoader implements IModelLoader { + public static class ScreenModelGeometry implements IUnbakedGeometry { + @Override - public BakedModel bake(IModelConfiguration owner, ModelBakery modelBakery, Function spriteGetter, ModelState modelState, ItemOverrides itemOverrides, ResourceLocation resourceLocation) { - return new ScreenBaker(modelState, spriteGetter, itemOverrides, owner.getCameraTransforms()); + public BakedModel bake(IGeometryBakingContext iGeometryBakingContext, ModelBakery arg, Function spriteGetter, ModelState modelState, ItemOverrides itemOverrides, ResourceLocation arg4) { + return new ScreenBaker(modelState, spriteGetter, itemOverrides, iGeometryBakingContext.getTransforms()); } - - @Override - public Collection getTextures(IModelConfiguration owner, Function modelGetter, Set> missingTextureErrors) { + public Collection getMaterials(IGeometryBakingContext iGeometryBakingContext, Function function, Set> set) { return List.of(MATERIAL_SIDE); } } diff --git a/src/main/java/net/montoyo/wd/entity/TileEntityScreen.java b/src/main/java/net/montoyo/wd/entity/TileEntityScreen.java index 8eaf9cd..1638b84 100644 --- a/src/main/java/net/montoyo/wd/entity/TileEntityScreen.java +++ b/src/main/java/net/montoyo/wd/entity/TileEntityScreen.java @@ -4,14 +4,11 @@ package net.montoyo.wd.entity; -import com.mojang.blaze3d.platform.InputConstants; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.server.packs.repository.Pack; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; @@ -22,7 +19,6 @@ import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.network.PacketDistributor; import net.montoyo.mcef.api.IBrowser; @@ -43,11 +39,9 @@ import net.montoyo.wd.net.client.CMessageJSResponse; import net.montoyo.wd.net.client.CMessageScreenUpdate; import net.montoyo.wd.net.server.SMessageRequestTEData; import net.montoyo.wd.utilities.*; -import org.lwjgl.glfw.GLFW; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.Collections; import java.util.UUID; @@ -839,8 +833,7 @@ public class TileEntityScreen extends BlockEntity{ } private static String safeName(ItemStack is) { - ResourceLocation rl = is.getItem().getRegistryName(); - return (rl == null) ? "[NO NAME, WTF?!]" : rl.toString(); + return is.getItem().getName(is).getString(); } //If equal is null, no duplicate check is preformed diff --git a/src/main/java/net/montoyo/wd/init/TileInit.java b/src/main/java/net/montoyo/wd/init/TileInit.java index f1e1b56..167d4ae 100644 --- a/src/main/java/net/montoyo/wd/init/TileInit.java +++ b/src/main/java/net/montoyo/wd/init/TileInit.java @@ -14,7 +14,7 @@ import java.util.Locale; public class TileInit { public static final DeferredRegister> TILE_TYPES = DeferredRegister - .create(ForgeRegistries.BLOCK_ENTITIES, "webdisplays"); + .create(ForgeRegistries.BLOCK_ENTITY_TYPES, "webdisplays"); //Register tile entities public static final RegistryObject> SCREEN_BLOCK_ENTITY = TILE_TYPES diff --git a/src/main/java/net/montoyo/wd/item/ItemMulti.java b/src/main/java/net/montoyo/wd/item/ItemMulti.java index a339bd8..47731ea 100644 --- a/src/main/java/net/montoyo/wd/item/ItemMulti.java +++ b/src/main/java/net/montoyo/wd/item/ItemMulti.java @@ -18,7 +18,6 @@ public class ItemMulti extends Item { values = cls.getEnumConstants(); creativeTabItems = new BitSet(values.length); creativeTabItems.set(0, values.length); - setDamage(this.getDefaultInstance(),0); } public Enum[] getEnumValues() { diff --git a/src/main/java/net/montoyo/wd/utilities/Util.java b/src/main/java/net/montoyo/wd/utilities/Util.java index d4b47dc..163d945 100644 --- a/src/main/java/net/montoyo/wd/utilities/Util.java +++ b/src/main/java/net/montoyo/wd/utilities/Util.java @@ -9,8 +9,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Style; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.entity.player.Player; import java.lang.reflect.Field; @@ -136,11 +134,10 @@ public abstract class Util { } public static void toast(Player player, ChatFormatting color, String key, Object... data) { - TextComponent root = new TextComponent("[WebDisplays] "); - root.setStyle(Style.EMPTY.withColor(color)); - root.append(new TranslatableComponent("webdisplays.message." + key, data)); - - player.sendMessage(root, player.getUUID()); + Component root = Component.translatable("[WebDisplays] "). + setStyle(Style.EMPTY.withColor(color)). + append(Component.translatable("webdisplays.message." + key, data)); + player.sendSystemMessage(root); } public static void silentClose(Object obj) { diff --git a/src/main/resources/META-INF/accessstransformer.cfg b/src/main/resources/META-INF/accessstransformer.cfg index 331e764..fa74a6b 100644 --- a/src/main/resources/META-INF/accessstransformer.cfg +++ b/src/main/resources/META-INF/accessstransformer.cfg @@ -1 +1,2 @@ public net.minecraft.client.gui.components.EditBox m94216()I # getMaxLength +public net.minecraft.client.resources.sounds.SimpleSoundInstance diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 6c8e679..567ee36 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -1,8 +1,8 @@ modLoader="javafml" #mandatory -loaderVersion="[40,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions. +loaderVersion="[43,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions. -license="BSD-3-Clause" +license="Public Domain" issueTrackerURL="" #optional @@ -28,14 +28,14 @@ description=''' [[dependencies.webdisplays]] #optional modId="forge" #mandatory mandatory=true #mandatory -versionRange="[40,)" #mandatory +versionRange="[43,)" #mandatory ordering="NONE" side="BOTH" [[dependencies.webdisplays]] modId="minecraft" mandatory=true -versionRange="[1.18.2,1.19)" +versionRange="[1.19.2,1.19.3)" ordering="NONE" side="BOTH" diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 6baf9e0..229cda3 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -4,7 +4,7 @@ "version": "${version}", "name": "Web Displays", - "description": "Web Displays for 1.18.2 fabric", + "description": "Web Displays for 1.19.2 fabric", "authors": [ "Montoyo, Waterpicker, Mysticpasta1" ], @@ -28,10 +28,7 @@ "depends": { "fabricloader": ">=0.14.8", "fabric": "*", - "minecraft": "~1.18.2", + "minecraft": "~1.19.2", "java": ">=17" - }, - "suggests": { - "another-mod": "*" } } diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta index 2262fdd..78e8fd6 100644 --- a/src/main/resources/pack.mcmeta +++ b/src/main/resources/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { "description": "webdisplays resources", - "pack_format": 3 + "pack_format": 8 } }