From f3f67e76e51fcbd5cc942e5296663dfd5f2ad069 Mon Sep 17 00:00:00 2001 From: Mysticpasta1 Date: Tue, 21 Jun 2022 07:04:17 -0500 Subject: [PATCH] Fixed Some Stuff --- build.gradle | 8 +- src/main/java/net/montoyo/wd/SharedProxy.java | 10 +- src/main/java/net/montoyo/wd/WebDisplays.java | 164 +----------------- .../montoyo/wd/client/JSQueryDispatcher.java | 12 +- .../montoyo/wd/client/ResourceModelPair.java | 1 + .../montoyo/wd/client/StaticStateMapper.java | 1 + .../java/net/montoyo/wd/config/WDConfig.java | 103 +++++++++++ .../net/montoyo/wd/core/DefaultUpgrade.java | 13 +- .../java/net/montoyo/wd/core/IUpgrade.java | 8 +- .../java/net/montoyo/wd/item/ItemMulti.java | 1 + .../java/net/montoyo/wd/item/ItemUpgrade.java | 43 ++--- src/main/java/net/montoyo/wd/item/WDItem.java | 8 +- .../montoyo/wd/miniserv/client/Client.java | 2 +- .../java/net/montoyo/wd/utilities/AABB.java | 8 +- .../net/montoyo/wd/utilities/Multiblock.java | 11 +- .../montoyo/wd/utilities/NameUUIDPair.java | 10 +- .../montoyo/wd/utilities/ScreenIterator.java | 2 +- .../java/net/montoyo/wd/utilities/Util.java | 43 ++--- .../net/montoyo/wd/utilities/Vector3i.java | 4 +- 19 files changed, 205 insertions(+), 247 deletions(-) create mode 100644 src/main/java/net/montoyo/wd/config/WDConfig.java diff --git a/build.gradle b/build.gradle index 596e70f..0a589b6 100644 --- a/build.gradle +++ b/build.gradle @@ -18,12 +18,18 @@ repositories { // for more information about repositories. maven { url "https://maven.shedaniel.me/" } maven { url 'https://jitpack.io' } + maven { + url = "https://maven.parchmentmc.org" + } } dependencies { // To change the versions see the gradle.properties file minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" + mappings loom.layered() { + officialMojangMappings() + parchment("org.parchmentmc.data:parchment-1.18.2:2022.05.02@zip") + } modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" // Fabric API. This is technically optional, but you probably want it anyway. diff --git a/src/main/java/net/montoyo/wd/SharedProxy.java b/src/main/java/net/montoyo/wd/SharedProxy.java index 1200cc5..932d8ef 100644 --- a/src/main/java/net/montoyo/wd/SharedProxy.java +++ b/src/main/java/net/montoyo/wd/SharedProxy.java @@ -5,12 +5,10 @@ package net.montoyo.wd; import com.mojang.authlib.GameProfile; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.common.DimensionManager; -import net.minecraftforge.fml.server.FMLServerHandler; +import net.minecraft.world.level.Level; import net.montoyo.wd.utilities.Log; import net.montoyo.wd.core.HasAdvancement; import net.montoyo.wd.core.JSServerRequest; @@ -33,7 +31,7 @@ public class SharedProxy { public void postInit() { } - public World getWorld(int dim) { + public Level getWorld(int dim) { if(dim == CURRENT_DIMENSION) throw new RuntimeException("Current dimension not available server side..."); diff --git a/src/main/java/net/montoyo/wd/WebDisplays.java b/src/main/java/net/montoyo/wd/WebDisplays.java index 4aae24a..0a9272e 100644 --- a/src/main/java/net/montoyo/wd/WebDisplays.java +++ b/src/main/java/net/montoyo/wd/WebDisplays.java @@ -5,40 +5,10 @@ package net.montoyo.wd; import com.google.gson.Gson; -import net.minecraft.advancements.Advancement; -import net.minecraft.advancements.CriteriaTriggers; -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.init.SoundEvents; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; +import net.fabricmc.api.ModInitializer; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.text.TextFormatting; -import net.minecraftforge.client.event.ClientChatEvent; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.capabilities.CapabilityManager; -import net.minecraftforge.common.config.Configuration; -import net.minecraftforge.common.config.Property; -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.world.WorldEvent; -import net.minecraftforge.fml.common.Loader; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.SidedProxy; -import net.minecraftforge.fml.common.event.*; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import net.minecraftforge.fml.common.gameevent.PlayerEvent; -import net.minecraftforge.fml.common.network.NetworkRegistry; -import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper; -import net.minecraftforge.fml.common.registry.GameRegistry; +import net.minecraft.sounds.SoundEvent; import net.montoyo.wd.block.BlockKeyboardRight; import net.montoyo.wd.block.BlockPeripheral; import net.montoyo.wd.block.BlockScreen; @@ -46,8 +16,8 @@ import net.montoyo.wd.core.*; import net.montoyo.wd.entity.TileEntityScreen; import net.montoyo.wd.item.*; import net.montoyo.wd.miniserv.server.Server; -import net.montoyo.wd.net.client.CMessageServerInfo; import net.montoyo.wd.net.Messages; +import net.montoyo.wd.net.client.CMessageServerInfo; import net.montoyo.wd.utilities.Log; import net.montoyo.wd.utilities.Util; @@ -57,18 +27,14 @@ import java.net.URL; import java.util.Arrays; import java.util.UUID; -@Mod(modid = "webdisplays", version = WebDisplays.MOD_VERSION, dependencies = "required-after:mcef@[1.0,2.0);after:opencomputers;after:computercraft;") -public class WebDisplays { +public class WebDisplays implements ModInitializer { - public static final String MOD_VERSION = "1.1"; + public static final String MOD_VERSION = "1.0.0"; - @Mod.Instance(owner = "webdisplays") public static WebDisplays INSTANCE; - @SidedProxy(serverSide = "net.montoyo.wd.SharedProxy", clientSide = "net.montoyo.wd.client.ClientProxy") public static SharedProxy PROXY; - public static SimpleNetworkWrapper NET_HANDLER; public static WDCreativeTab CREATIVE_TAB; public static final ResourceLocation ADV_PAD_BREAK = new ResourceLocation("webdisplays", "webdisplays/pad_break"); public static final String BLACKLIST_URL = "mod://webdisplays/blacklisted.html"; @@ -104,109 +70,8 @@ public class WebDisplays { public Criterion criterionLinkPeripheral; public Criterion criterionKeyboardCat; - //Config - public static final double PAD_RATIO = 59.0 / 30.0; - public String homePage; - public double padResX; - public double padResY; - private int lastPadId = 0; - public boolean doHardRecipe; - private boolean hasOC; - private boolean hasCC; - private String[] blacklist; - public boolean disableOwnershipThief; - public double unloadDistance2; - public double loadDistance2; - public int maxResX; - public int maxResY; - public int maxScreenX; - public int maxScreenY; - public int miniservPort; - public long miniservQuota; - public boolean enableSoundDistance; - public float ytVolume; - public float avDist100; - public float avDist0; - - @Mod.EventHandler - public void onPreInit(FMLPreInitializationEvent ev) { - //Load config - Configuration cfg = new Configuration(ev.getSuggestedConfigurationFile()); - cfg.load(); - - //CAT: Main - Property blacklist = cfg.get("main", "blacklist", new String[0]); - Property padHeight = cfg.get("main", "padHeight", 480); - Property hardRecipe = cfg.get("main", "hardRecipes", true); - Property homePage = cfg.get("main", "homepage", "mod://webdisplays/main.html"); - Property disableOT = cfg.get("main", "disableOwnershipThief", false); - Property maxResX = cfg.get("main", "maxResolutionX", 1920); - Property maxResY = cfg.get("main", "maxResolutionY", 1080); - Property miniservPort = cfg.get("main", "miniservPort", 25566); - Property miniservQuota = cfg.get("main", "miniservQuota", 1024); //It's stored as a string anyway - Property maxScreenX = cfg.get("main", "maxScreenSizeX", 16); - Property maxScreenY = cfg.get("main", "maxScreenSizeY", 16); - - //CAT: Client options - Property loadDistance = cfg.get("client", "loadDistance", 30.0); - Property unloadDistance = cfg.get("client", "unloadDistance", 32.0); - - //CAT: Auto volume config (client-side) - Property enableAutoVol = cfg.get("clientAutoVolume", "enableAutoVolume", true); - Property ytVolume = cfg.get("clientAutoVolume", "ytVolume", 100.0); - Property dist100 = cfg.get("clientAutoVolume", "dist100", 10.0); - Property dist0 = cfg.get("clientAutoVolume", "dist0", 30.0); - - - //Comments & shit - blacklist.setComment("An array of domain names you don't want to load."); - padHeight.setComment("The minePad Y resolution in pixels. padWidth = padHeight * " + PAD_RATIO); - hardRecipe.setComment("If true, breaking the minePad is required to craft upgrades."); - homePage.setComment("The URL that will be loaded each time you create a screen"); - disableOT.setComment("If true, the ownership thief item will be disabled"); - loadDistance.setComment("All screens outside this range will be unloaded"); - unloadDistance.setComment("All unloaded screens inside this range will be loaded"); - maxResX.setComment("Maximum horizontal screen resolution, in pixels"); - maxResY.setComment("Maximum vertical screen resolution, in pixels"); - miniservPort.setComment("The port used by miniserv. 0 to disable."); - miniservPort.setMaxValue(Short.MAX_VALUE); - miniservQuota.setComment("The amount of data that can be uploaded to miniserv, in KiB (so 1024 = 1 MiO)"); - maxScreenX.setComment("Maximum screen width, in blocks. Resolution will be clamped by maxResolutionX."); - maxScreenY.setComment("Maximum screen height, in blocks. Resolution will be clamped by maxResolutionY."); - enableAutoVol.setComment("If true, the volume of YouTube videos will change depending on how far you are"); - ytVolume.setComment("Volume for YouTube videos. This will have no effect if enableSoundDistance is set to false"); - ytVolume.setMinValue(0.0); - ytVolume.setMaxValue(100.0); - dist100.setComment("Distance after which the sound starts dropping (in blocks)"); - dist100.setMinValue(0.0); - dist0.setComment("Distance after which you can't hear anything (in blocks)"); - dist0.setMinValue(0.0); - - if(unloadDistance.getDouble() < loadDistance.getDouble() + 2.0) - unloadDistance.set(loadDistance.getDouble() + 2.0); - - if(dist0.getDouble() < dist100.getDouble() + 0.1) - dist0.set(dist100.getDouble() + 0.1); - - cfg.save(); - - this.blacklist = blacklist.getStringList(); - doHardRecipe = hardRecipe.getBoolean(); - this.homePage = homePage.getString(); - disableOwnershipThief = disableOT.getBoolean(); - unloadDistance2 = unloadDistance.getDouble() * unloadDistance.getDouble(); - loadDistance2 = loadDistance.getDouble() * loadDistance.getDouble(); - this.maxResX = maxResX.getInt(); - this.maxResY = maxResY.getInt(); - this.miniservPort = miniservPort.getInt(); - this.miniservQuota = miniservQuota.getLong() * 1024L; - this.maxScreenX = maxScreenX.getInt(); - this.maxScreenY = maxScreenY.getInt(); - enableSoundDistance = enableAutoVol.getBoolean(); - this.ytVolume = (float) ytVolume.getDouble(); - avDist100 = (float) dist100.getDouble(); - avDist0 = (float) dist0.getDouble(); - + @Override + public void onInitialize() { CREATIVE_TAB = new WDCreativeTab(); //Criterions @@ -242,29 +107,16 @@ public class WebDisplays { itemAdvIcon.setUnlocalizedName("webdisplays.advicon"); itemAdvIcon.setRegistryName("advicon"); - PROXY.preInit(); - MinecraftForge.EVENT_BUS.register(this); - } - - @Mod.EventHandler - public void onInit(FMLInitializationEvent ev) { - //Register tile entities GameRegistry.registerTileEntity(TileEntityScreen.class, new ResourceLocation("webdisplays", "screen")); for(DefaultPeripheral dp: DefaultPeripheral.values()) { if(dp.getTEClass() != null) GameRegistry.registerTileEntity(dp.getTEClass(), new ResourceLocation("webdisplays", dp.getName())); } - //Other things CapabilityManager.INSTANCE.register(IWDDCapability.class, new WDDCapability.Storage(), new WDDCapability.Factory()); - PROXY.init(); NET_HANDLER = NetworkRegistry.INSTANCE.newSimpleChannel("webdisplays"); Messages.registerAll(NET_HANDLER); - } - @Mod.EventHandler - public void onPostInit(FMLPostInitializationEvent ev) { - PROXY.postInit(); hasOC = Loader.isModLoaded("opencomputers"); hasCC = Loader.isModLoaded("computercraft"); diff --git a/src/main/java/net/montoyo/wd/client/JSQueryDispatcher.java b/src/main/java/net/montoyo/wd/client/JSQueryDispatcher.java index ba67596..ae49f50 100644 --- a/src/main/java/net/montoyo/wd/client/JSQueryDispatcher.java +++ b/src/main/java/net/montoyo/wd/client/JSQueryDispatcher.java @@ -4,12 +4,12 @@ package net.montoyo.wd.client; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; +import net.minecraft.core.BlockPos; import net.minecraft.util.EnumFacing; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; +import net.minecraft.world.item.ItemStack; import net.montoyo.mcef.api.IBrowser; import net.montoyo.mcef.api.IJSQueryCallback; import net.montoyo.wd.WebDisplays; @@ -24,7 +24,7 @@ import net.montoyo.wd.utilities.*; import java.util.*; -@SideOnly(Side.CLIENT) +@Environment(EnvType.CLIENT) public final class JSQueryDispatcher { private static final class QueryData { @@ -86,7 +86,7 @@ public final class JSQueryDispatcher { private final ClientProxy.ScreenSidePair lookupResult = new ClientProxy.ScreenSidePair(); private final HashMap handlers = new HashMap<>(); private final ArrayList serverQueries = new ArrayList<>(); - private final Minecraft mc = Minecraft.getMinecraft(); + private final Minecraft mc = Minecraft.getInstance(); public JSQueryDispatcher(ClientProxy proxy) { this.proxy = proxy; diff --git a/src/main/java/net/montoyo/wd/client/ResourceModelPair.java b/src/main/java/net/montoyo/wd/client/ResourceModelPair.java index c1f6664..b44129c 100644 --- a/src/main/java/net/montoyo/wd/client/ResourceModelPair.java +++ b/src/main/java/net/montoyo/wd/client/ResourceModelPair.java @@ -5,6 +5,7 @@ package net.montoyo.wd.client; import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.client.resources.model.ModelResourceLocation; import net.montoyo.wd.client.renderers.IModelBaker; public class ResourceModelPair { diff --git a/src/main/java/net/montoyo/wd/client/StaticStateMapper.java b/src/main/java/net/montoyo/wd/client/StaticStateMapper.java index ad5f825..bcbd72b 100644 --- a/src/main/java/net/montoyo/wd/client/StaticStateMapper.java +++ b/src/main/java/net/montoyo/wd/client/StaticStateMapper.java @@ -7,6 +7,7 @@ package net.montoyo.wd.client; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.block.statemap.StateMapperBase; +import net.minecraft.client.resources.model.ModelResourceLocation; import javax.annotation.Nonnull; diff --git a/src/main/java/net/montoyo/wd/config/WDConfig.java b/src/main/java/net/montoyo/wd/config/WDConfig.java new file mode 100644 index 0000000..14f1717 --- /dev/null +++ b/src/main/java/net/montoyo/wd/config/WDConfig.java @@ -0,0 +1,103 @@ +package net.montoyo.wd.config; + +public class WDConfig { + //Config + public static final double PAD_RATIO = 59.0 / 30.0; + public String homePage; + public double padResX; + public double padResY; + private int lastPadId = 0; + public boolean doHardRecipe; + private boolean hasOC; + private boolean hasCC; + private String[] blacklist; + public boolean disableOwnershipThief; + public double unloadDistance2; + public double loadDistance2; + public int maxResX; + public int maxResY; + public int maxScreenX; + public int maxScreenY; + public int miniservPort; + public long miniservQuota; + public boolean enableSoundDistance; + public float ytVolume; + public float avDist100; + public float avDist0; + //Load config + Configuration cfg = new Configuration(ev.getSuggestedConfigurationFile()); + cfg.load(); + + //CAT: Main + Property blacklist = cfg.get("main", "blacklist", new String[0]); + Property padHeight = cfg.get("main", "padHeight", 480); + Property hardRecipe = cfg.get("main", "hardRecipes", true); + Property homePage = cfg.get("main", "homepage", "mod://webdisplays/main.html"); + Property disableOT = cfg.get("main", "disableOwnershipThief", false); + Property maxResX = cfg.get("main", "maxResolutionX", 1920); + Property maxResY = cfg.get("main", "maxResolutionY", 1080); + Property miniservPort = cfg.get("main", "miniservPort", 25566); + Property miniservQuota = cfg.get("main", "miniservQuota", 1024); //It's stored as a string anyway + Property maxScreenX = cfg.get("main", "maxScreenSizeX", 16); + Property maxScreenY = cfg.get("main", "maxScreenSizeY", 16); + + //CAT: Client options + Property loadDistance = cfg.get("client", "loadDistance", 30.0); + Property unloadDistance = cfg.get("client", "unloadDistance", 32.0); + + //CAT: Auto volume config (client-side) + Property enableAutoVol = cfg.get("clientAutoVolume", "enableAutoVolume", true); + Property ytVolume = cfg.get("clientAutoVolume", "ytVolume", 100.0); + Property dist100 = cfg.get("clientAutoVolume", "dist100", 10.0); + Property dist0 = cfg.get("clientAutoVolume", "dist0", 30.0); + + + //Comments & shit + blacklist.setComment("An array of domain names you don't want to load."); + padHeight.setComment("The minePad Y resolution in pixels. padWidth = padHeight * " + PAD_RATIO); + hardRecipe.setComment("If true, breaking the minePad is required to craft upgrades."); + homePage.setComment("The URL that will be loaded each time you create a screen"); + disableOT.setComment("If true, the ownership thief item will be disabled"); + loadDistance.setComment("All screens outside this range will be unloaded"); + unloadDistance.setComment("All unloaded screens inside this range will be loaded"); + maxResX.setComment("Maximum horizontal screen resolution, in pixels"); + maxResY.setComment("Maximum vertical screen resolution, in pixels"); + miniservPort.setComment("The port used by miniserv. 0 to disable."); + miniservPort.setMaxValue(Short.MAX_VALUE); + miniservQuota.setComment("The amount of data that can be uploaded to miniserv, in KiB (so 1024 = 1 MiO)"); + maxScreenX.setComment("Maximum screen width, in blocks. Resolution will be clamped by maxResolutionX."); + maxScreenY.setComment("Maximum screen height, in blocks. Resolution will be clamped by maxResolutionY."); + enableAutoVol.setComment("If true, the volume of YouTube videos will change depending on how far you are"); + ytVolume.setComment("Volume for YouTube videos. This will have no effect if enableSoundDistance is set to false"); + ytVolume.setMinValue(0.0); + ytVolume.setMaxValue(100.0); + dist100.setComment("Distance after which the sound starts dropping (in blocks)"); + dist100.setMinValue(0.0); + dist0.setComment("Distance after which you can't hear anything (in blocks)"); + dist0.setMinValue(0.0); + + if(unloadDistance.getDouble() < loadDistance.getDouble() + 2.0) + unloadDistance.set(loadDistance.getDouble() + 2.0); + + if(dist0.getDouble() < dist100.getDouble() + 0.1) + dist0.set(dist100.getDouble() + 0.1); + + cfg.save(); + + this.blacklist = blacklist.getStringList(); + doHardRecipe = hardRecipe.getBoolean(); + this.homePage = homePage.getString(); + disableOwnershipThief = disableOT.getBoolean(); + unloadDistance2 = unloadDistance.getDouble() * unloadDistance.getDouble(); + loadDistance2 = loadDistance.getDouble() * loadDistance.getDouble(); + this.maxResX = maxResX.getInt(); + this.maxResY = maxResY.getInt(); + this.miniservPort = miniservPort.getInt(); + this.miniservQuota = miniservQuota.getLong() * 1024L; + this.maxScreenX = maxScreenX.getInt(); + this.maxScreenY = maxScreenY.getInt(); + enableSoundDistance = enableAutoVol.getBoolean(); + this.ytVolume = (float) ytVolume.getDouble(); + avDist100 = (float) dist100.getDouble(); + avDist0 = (float) dist0.getDouble(); +} diff --git a/src/main/java/net/montoyo/wd/core/DefaultUpgrade.java b/src/main/java/net/montoyo/wd/core/DefaultUpgrade.java index e2e8f9d..76d81ea 100644 --- a/src/main/java/net/montoyo/wd/core/DefaultUpgrade.java +++ b/src/main/java/net/montoyo/wd/core/DefaultUpgrade.java @@ -4,9 +4,11 @@ package net.montoyo.wd.core; -import net.minecraft.item.ItemStack; +import net.minecraft.world.item.ItemStack; import net.montoyo.wd.WebDisplays; +import java.util.Arrays; + public enum DefaultUpgrade { LASER_MOUSE("lasermouse", "Laser_Sensor"), @@ -28,12 +30,11 @@ public enum DefaultUpgrade { } public boolean matches(ItemStack is) { - return is.getItem() == WebDisplays.INSTANCE.itemUpgrade && is.getMetadata() == ordinal(); + return is.getItem() == WebDisplays.INSTANCE.itemUpgrade; } - public static String getWikiName(int meta) { + /*public static String getWikiName(ItemStack itemStack) { DefaultUpgrade[] values = values(); - return (meta >= 0 && meta < values.length) ? values[meta].wikiName : null; - } - + return !itemStack.isEmpty() ? values.wikiName : null; + }*/ } diff --git a/src/main/java/net/montoyo/wd/core/IUpgrade.java b/src/main/java/net/montoyo/wd/core/IUpgrade.java index 858c6ce..f2b8523 100644 --- a/src/main/java/net/montoyo/wd/core/IUpgrade.java +++ b/src/main/java/net/montoyo/wd/core/IUpgrade.java @@ -4,8 +4,8 @@ package net.montoyo.wd.core; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.montoyo.wd.entity.TileEntityScreen; import net.montoyo.wd.utilities.BlockSide; @@ -14,8 +14,8 @@ import javax.annotation.Nullable; public interface IUpgrade { - void onInstall(@Nonnull TileEntityScreen tes, @Nonnull BlockSide screenSide, @Nullable EntityPlayer player, @Nonnull ItemStack is); - boolean onRemove(@Nonnull TileEntityScreen tes, @Nonnull BlockSide screenSide, @Nullable EntityPlayer player, @Nonnull ItemStack is); //Return true to prevent dropping + void onInstall(@Nonnull TileEntityScreen tes, @Nonnull BlockSide screenSide, @Nullable Player player, @Nonnull ItemStack is); + boolean onRemove(@Nonnull TileEntityScreen tes, @Nonnull BlockSide screenSide, @Nullable Player player, @Nonnull ItemStack is); //Return true to prevent dropping boolean isSameUpgrade(@Nonnull ItemStack myStack, @Nonnull ItemStack otherStack); //myStack.getItem() is an instance of this class String getJSName(@Nonnull ItemStack is); //modname:upgradename diff --git a/src/main/java/net/montoyo/wd/item/ItemMulti.java b/src/main/java/net/montoyo/wd/item/ItemMulti.java index 54eb8b7..adc7470 100644 --- a/src/main/java/net/montoyo/wd/item/ItemMulti.java +++ b/src/main/java/net/montoyo/wd/item/ItemMulti.java @@ -8,6 +8,7 @@ import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; +import net.minecraft.world.item.Item; import javax.annotation.Nonnull; import java.util.BitSet; diff --git a/src/main/java/net/montoyo/wd/item/ItemUpgrade.java b/src/main/java/net/montoyo/wd/item/ItemUpgrade.java index a724031..a3839ef 100644 --- a/src/main/java/net/montoyo/wd/item/ItemUpgrade.java +++ b/src/main/java/net/montoyo/wd/item/ItemUpgrade.java @@ -4,12 +4,14 @@ package net.montoyo.wd.item; -import com.mojang.realmsclient.gui.ChatFormatting; -import net.minecraft.client.resources.I18n; -import net.minecraft.client.util.ITooltipFlag; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; +import net.minecraft.ChatFormatting; +import net.minecraft.client.resources.language.I18n; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.AirItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; import net.montoyo.wd.WebDisplays; import net.montoyo.wd.core.DefaultUpgrade; import net.montoyo.wd.core.IUpgrade; @@ -20,7 +22,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.List; -public class ItemUpgrade extends ItemMulti implements IUpgrade, WDItem { +public class ItemUpgrade extends ItemMulti implements IUpgrade { public ItemUpgrade() { super(DefaultUpgrade.class); @@ -30,12 +32,12 @@ public class ItemUpgrade extends ItemMulti implements IUpgrade, WDItem { } @Override - public void onInstall(@Nonnull TileEntityScreen tes, @Nonnull BlockSide screenSide, @Nullable EntityPlayer player, @Nonnull ItemStack is) { + public void onInstall(@Nonnull TileEntityScreen tes, @Nonnull BlockSide screenSide, @Nullable Player player, @Nonnull ItemStack is) { } @Override - public boolean onRemove(@Nonnull TileEntityScreen tes, @Nonnull BlockSide screenSide, @Nullable EntityPlayer player, @Nonnull ItemStack is) { - if(is.getMetadata() == DefaultUpgrade.LASER_MOUSE.ordinal()) + public boolean onRemove(@Nonnull TileEntityScreen tes, @Nonnull BlockSide screenSide, @Nullable Player player, @Nonnull ItemStack is) { + if(DefaultUpgrade.LASER_MOUSE.matches(is)) tes.clearLaserUser(screenSide); return false; @@ -43,30 +45,21 @@ public class ItemUpgrade extends ItemMulti implements IUpgrade, WDItem { @Override public boolean isSameUpgrade(@Nonnull ItemStack myStack, @Nonnull ItemStack otherStack) { - return otherStack.getItem() == this && otherStack.getMetadata() == myStack.getMetadata(); - } - - @Override - public void addInformation(ItemStack is, @Nullable World world, List tt, ITooltipFlag ttFlags) { - tt.add("" + ChatFormatting.ITALIC + I18n.format("item.webdisplays.upgrade.name")); - WDItem.addInformation(tt); + return otherStack.getItem() == this && otherStack.getTag() == myStack.getTag(); } @Override public String getJSName(@Nonnull ItemStack is) { - int meta = is.getMetadata(); - DefaultUpgrade[] upgrades = DefaultUpgrade.values(); - - if(meta < 0 || meta >= upgrades.length) + if(is.isEmpty()) return "webdisplays:wtf"; else - return "webdisplays:" + upgrades[meta]; + return "webdisplays:" + is; } - @Nullable + /*@Nullable @Override public String getWikiName(@Nonnull ItemStack is) { - return DefaultUpgrade.getWikiName(is.getMetadata()); - } + return DefaultUpgrade.getWikiName(is.getItem().getName(is).toString()); + }*/ } diff --git a/src/main/java/net/montoyo/wd/item/WDItem.java b/src/main/java/net/montoyo/wd/item/WDItem.java index 6112374..283e39e 100644 --- a/src/main/java/net/montoyo/wd/item/WDItem.java +++ b/src/main/java/net/montoyo/wd/item/WDItem.java @@ -4,9 +4,9 @@ package net.montoyo.wd.item; -import com.mojang.realmsclient.gui.ChatFormatting; -import net.minecraft.client.resources.I18n; -import net.minecraft.item.ItemStack; +import net.minecraft.ChatFormatting; +import net.minecraft.client.resources.language.I18n; +import net.minecraft.world.item.ItemStack; import net.montoyo.wd.WebDisplays; import javax.annotation.Nonnull; @@ -20,7 +20,7 @@ public interface WDItem { static void addInformation(@Nullable List tt) { if(tt != null && WebDisplays.PROXY.isShiftDown()) - tt.add("" + ChatFormatting.GRAY + I18n.format("item.webdisplays.wiki")); + tt.add("" + ChatFormatting.GRAY + I18n.get("item.webdisplays.wiki")); } } diff --git a/src/main/java/net/montoyo/wd/miniserv/client/Client.java b/src/main/java/net/montoyo/wd/miniserv/client/Client.java index 66faf08..05c5452 100644 --- a/src/main/java/net/montoyo/wd/miniserv/client/Client.java +++ b/src/main/java/net/montoyo/wd/miniserv/client/Client.java @@ -43,7 +43,7 @@ public class Client extends AbstractClient implements Runnable { private volatile boolean connected; private final ByteBuffer readBuffer = ByteBuffer.allocateDirect(8192); private volatile Thread thread; - private final UUID clientUUID = Minecraft.getMinecraft().player.getGameProfile().getId(); + private final UUID clientUUID = Minecraft.getInstance().player.getGameProfile().getId(); private final ArrayDeque tasks = new ArrayDeque<>(); private ClientTask currentTask; private volatile boolean authenticated; diff --git a/src/main/java/net/montoyo/wd/utilities/AABB.java b/src/main/java/net/montoyo/wd/utilities/AABB.java index cd55f02..b417da4 100644 --- a/src/main/java/net/montoyo/wd/utilities/AABB.java +++ b/src/main/java/net/montoyo/wd/utilities/AABB.java @@ -4,8 +4,6 @@ package net.montoyo.wd.utilities; -import net.minecraft.util.math.AxisAlignedBB; - public final class AABB { public final Vector3i start; @@ -33,7 +31,7 @@ public final class AABB { end.z = Math.max(a.z, b.z); } - public AABB(AxisAlignedBB bb) { + public AABB(net.minecraft.world.phys.AABB bb) { start = new Vector3i(); end = new Vector3i(); @@ -70,8 +68,8 @@ public final class AABB { return this; } - public AxisAlignedBB toMc() { - return new AxisAlignedBB((double) start.x, (double) start.y, (double) start.z, (double) end.x, (double) end.y, (double) end.z); + public net.minecraft.world.phys.AABB toMc() { + return new net.minecraft.world.phys.AABB(start.x, start.y, start.z, end.x, end.y, end.z); } } diff --git a/src/main/java/net/montoyo/wd/utilities/Multiblock.java b/src/main/java/net/montoyo/wd/utilities/Multiblock.java index 78ad46e..2c9f950 100644 --- a/src/main/java/net/montoyo/wd/utilities/Multiblock.java +++ b/src/main/java/net/montoyo/wd/utilities/Multiblock.java @@ -4,8 +4,9 @@ package net.montoyo.wd.utilities; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockAccess; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.ticks.WorldGenTickAccess; import net.montoyo.wd.WebDisplays; public abstract class Multiblock { @@ -39,7 +40,7 @@ public abstract class Multiblock { public static final BlockOverride NULL_OVERRIDE = new BlockOverride(null, OverrideAction.NONE); //Modifies pos - public static void findOrigin(IBlockAccess world, Vector3i pos, BlockSide side, BlockOverride override) + public static void findOrigin(LevelAccessor world, Vector3i pos, BlockSide side, BlockOverride override) { if(override == null) override = NULL_OVERRIDE; @@ -64,7 +65,7 @@ public abstract class Multiblock { } //Origin stays constant - public static Vector2i measure(IBlockAccess world, Vector3i origin, BlockSide side) + public static Vector2i measure(LevelAccessor world, Vector3i origin, BlockSide side) { Vector2i ret = new Vector2i(); Vector3i pos = origin.clone(); @@ -93,7 +94,7 @@ public abstract class Multiblock { //Origin and size stays constant. //Returns null if structure is okay, otherwise the erroring block pos. - public static Vector3i check(IBlockAccess world, Vector3i origin, Vector2i size, BlockSide side) + public static Vector3i check(LevelAccessor world, Vector3i origin, Vector2i size, BlockSide side) { Vector3i pos = origin.clone(); BlockPos.MutableBlockPos bp = new BlockPos.MutableBlockPos(); diff --git a/src/main/java/net/montoyo/wd/utilities/NameUUIDPair.java b/src/main/java/net/montoyo/wd/utilities/NameUUIDPair.java index 5f2aada..0533841 100644 --- a/src/main/java/net/montoyo/wd/utilities/NameUUIDPair.java +++ b/src/main/java/net/montoyo/wd/utilities/NameUUIDPair.java @@ -6,7 +6,7 @@ package net.montoyo.wd.utilities; import com.mojang.authlib.GameProfile; import io.netty.buffer.ByteBuf; -import net.minecraftforge.fml.common.network.ByteBufUtils; +import net.minecraft.network.FriendlyByteBuf; import java.util.UUID; @@ -30,8 +30,8 @@ public final class NameUUIDPair { uuid = profile.getId(); } - public NameUUIDPair(ByteBuf bb) { - name = ByteBufUtils.readUTF8String(bb); + public NameUUIDPair(FriendlyByteBuf bb) { + name = bb.readUtf(); long msb = bb.readLong(); long lsb = bb.readLong(); @@ -63,8 +63,8 @@ public final class NameUUIDPair { return name.isEmpty() && uuid.getMostSignificantBits() == 0L && uuid.getLeastSignificantBits() == 0L; } - public void writeTo(ByteBuf bb) { - ByteBufUtils.writeUTF8String(bb, name); + public void writeTo(FriendlyByteBuf bb) { + bb.writeUtf(name); bb.writeLong(uuid.getMostSignificantBits()); bb.writeLong(uuid.getLeastSignificantBits()); } diff --git a/src/main/java/net/montoyo/wd/utilities/ScreenIterator.java b/src/main/java/net/montoyo/wd/utilities/ScreenIterator.java index c4bcc59..698209c 100644 --- a/src/main/java/net/montoyo/wd/utilities/ScreenIterator.java +++ b/src/main/java/net/montoyo/wd/utilities/ScreenIterator.java @@ -4,7 +4,7 @@ package net.montoyo.wd.utilities; -import net.minecraft.util.math.BlockPos; +import net.minecraft.core.BlockPos; import java.util.Iterator; diff --git a/src/main/java/net/montoyo/wd/utilities/Util.java b/src/main/java/net/montoyo/wd/utilities/Util.java index 2fe34cd..7f3ca06 100644 --- a/src/main/java/net/montoyo/wd/utilities/Util.java +++ b/src/main/java/net/montoyo/wd/utilities/Util.java @@ -5,11 +5,15 @@ package net.montoyo.wd.utilities; import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.text.*; -import net.minecraftforge.fml.common.network.ByteBufUtils; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.chat.FormattedText; +import net.minecraft.network.chat.NbtComponent; +import net.minecraft.network.chat.Style; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.world.entity.player.Player; +import java.awt.*; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.Arrays; @@ -18,7 +22,7 @@ import java.util.UUID; public abstract class Util { - public static void serialize(ByteBuf bb, Object f) { + public static void serialize(FriendlyByteBuf bb, Object f) { Class cls = f.getClass(); if(cls == Integer.class || cls == Integer.TYPE) @@ -30,7 +34,7 @@ public abstract class Util { else if(cls == Boolean.class || cls == Boolean.TYPE) bb.writeBoolean((Boolean) f); else if(cls == String.class) - ByteBufUtils.writeUTF8String(bb, (String) f); + bb.writeUtf((String) f); else if(cls == NameUUIDPair.class) ((NameUUIDPair) f).writeTo(bb); else if(cls.isEnum()) @@ -57,7 +61,7 @@ public abstract class Util { throw new RuntimeException(String.format("Cannot transmit class %s over network!", cls.getName())); } - public static Object unserialize(ByteBuf bb, Class cls) { + public static Object unserialize(FriendlyByteBuf bb, Class cls) { if(cls == Integer.class || cls == Integer.TYPE) return bb.readInt(); else if(cls == Float.class || cls == Float.TYPE) @@ -67,7 +71,7 @@ public abstract class Util { else if(cls == Boolean.class || cls == Boolean.TYPE) return bb.readBoolean(); else if(cls == String.class) - return ByteBufUtils.readUTF8String(bb); + return bb.readUtf(); else if(cls == NameUUIDPair.class) return new NameUUIDPair(bb); else if(cls.isEnum()) @@ -128,16 +132,15 @@ public abstract class Util { return idx ^ (idx >> 16); } - public static void toast(EntityPlayer player, String key, Object... data) { - toast(player, TextFormatting.RED, key, data); + public static void toast(Player player, String key, Object... data) { + toast(player, Style.EMPTY.withColor(0xff0000), key, data); } - public static void toast(EntityPlayer player, TextFormatting color, String key, Object... data) { - ITextComponent root = new TextComponentString("[WebDisplays] "); - root.setStyle((new Style()).setColor(color)); - root.appendSibling(new TextComponentTranslation("webdisplays.message." + key, data)); + public static void toast(Player player, Style color, String key, Object... data) { + NbtComponent root = (NbtComponent) FormattedText.of("[WebDisplays] ", color); + root.append(new TranslatableComponent("webdisplays.message." + key, data)); - player.sendMessage(root); + player.sendMessage(root, player.getUUID()); } public static void silentClose(Object obj) { @@ -175,17 +178,17 @@ public abstract class Util { return j.toString(); } - public static NBTTagCompound writeOwnerToNBT(NBTTagCompound tag, NameUUIDPair owner) { + public static CompoundTag writeOwnerToNBT(CompoundTag tag, NameUUIDPair owner) { if(owner != null) { - tag.setLong("OwnerMSB", owner.uuid.getMostSignificantBits()); - tag.setLong("OwnerLSB", owner.uuid.getLeastSignificantBits()); - tag.setString("OwnerName", owner.name); + tag.putLong("OwnerMSB", owner.uuid.getMostSignificantBits()); + tag.putLong("OwnerLSB", owner.uuid.getLeastSignificantBits()); + tag.putString("OwnerName", owner.name); } return tag; } - public static NameUUIDPair readOwnerFromNBT(NBTTagCompound tag) { + public static NameUUIDPair readOwnerFromNBT(CompoundTag tag) { long msb = tag.getLong("OwnerMSB"); long lsb = tag.getLong("OwnerLSB"); String str = tag.getString("OwnerName"); diff --git a/src/main/java/net/montoyo/wd/utilities/Vector3i.java b/src/main/java/net/montoyo/wd/utilities/Vector3i.java index 07bf127..d9823b7 100644 --- a/src/main/java/net/montoyo/wd/utilities/Vector3i.java +++ b/src/main/java/net/montoyo/wd/utilities/Vector3i.java @@ -5,7 +5,7 @@ package net.montoyo.wd.utilities; import io.netty.buffer.ByteBuf; -import net.minecraft.util.math.BlockPos; +import net.minecraft.core.BlockPos; public final class Vector3i { @@ -215,7 +215,7 @@ public final class Vector3i { } public void toBlock(BlockPos.MutableBlockPos bp) { - bp.setPos(x, y, z); + bp.set(x, y, z); } public int getChunkLocalPos()