initial port to 1.19.2 forge (windows only)

This commit is contained in:
Mysticpasta1 2023-03-02 04:42:06 -06:00
parent 523cd9ca52
commit 7fb2170e34
25 changed files with 118 additions and 230 deletions

View File

@ -19,9 +19,6 @@ repositories {
// for more information about repositories. // for more information about repositories.
maven { url "https://maven.shedaniel.me/" } maven { url "https://maven.shedaniel.me/" }
maven { url 'https://jitpack.io' } maven { url 'https://jitpack.io' }
maven {
url = "https://maven.parchmentmc.org"
}
maven { maven {
name = "cursemaven" name = "cursemaven"
url = "https://www.cursemaven.com" url = "https://www.cursemaven.com"
@ -37,12 +34,11 @@ dependencies {
minecraft "com.mojang:minecraft:${project.minecraft_version}" minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings loom.layered() { mappings loom.layered() {
officialMojangMappings() officialMojangMappings()
parchment("org.parchmentmc.data:parchment-1.18.2:2022.05.02@zip")
} }
forge "net.minecraftforge:forge:${project.forge_version}" forge "net.minecraftforge:forge:${project.forge_version}"
modImplementation "com.github.Mysticpasta1:mcef-forge:11826a2d11" modImplementation "com.github.Mysticpasta1:mcef-forge:3797701d8f"
modImplementation "curse.maven:cloth_config_forge-348521:3546623" modImplementation "curse.maven:cloth_config_forge-348521:3972423"
// Uncomment the following line to enable the deprecated Fabric API modules. // 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. // 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.

View File

@ -4,9 +4,9 @@ loom.platform=forge
# Fabric Properties # Fabric Properties
# check these on https://fabricmc.net/develop # check these on https://fabricmc.net/develop
minecraft_version=1.18.2 minecraft_version=1.19.2
yarn_mappings=1.18.2+build.3 yarn_mappings=1.19.2+build.28
loader_version=0.14.8 loader_version=0.14.14
# Mod Properties # Mod Properties
mod_version = 1.0.0 mod_version = 1.0.0
@ -14,4 +14,4 @@ maven_group = net.montoyo.wd
archives_base_name = webdisplays archives_base_name = webdisplays
# Dependencies # Dependencies
forge_version=1.18.2-40.1.52 forge_version=1.19.2-43.2.6

View File

@ -20,31 +20,26 @@ import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player; 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.item.ItemStack;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraftforge.client.event.ClientChatEvent; import net.minecraftforge.client.event.ClientChatEvent;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.event.AttachCapabilitiesEvent; import net.minecraftforge.event.AttachCapabilitiesEvent;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.event.ServerChatEvent; import net.minecraftforge.event.ServerChatEvent;
import net.minecraftforge.event.entity.item.ItemTossEvent; import net.minecraftforge.event.entity.item.ItemTossEvent;
import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.event.level.LevelEvent;
import net.minecraftforge.event.server.ServerStoppingEvent; import net.minecraftforge.event.server.ServerStoppingEvent;
import net.minecraftforge.event.world.WorldEvent;
import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.network.PacketDistributor; 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.ClientProxy;
import net.montoyo.wd.client.gui.controls.*;
import net.montoyo.wd.config.ModConfig; import net.montoyo.wd.config.ModConfig;
import net.montoyo.wd.core.*; import net.montoyo.wd.core.*;
import net.montoyo.wd.init.BlockInit; import net.montoyo.wd.init.BlockInit;
@ -155,6 +150,8 @@ public class WebDisplays {
IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus(); IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
bus.addListener(Messages::registryNetworkPackets); bus.addListener(Messages::registryNetworkPackets);
SOUNDS.register(bus);
onRegisterSounds();
BlockInit.init(bus); BlockInit.init(bus);
ItemInit.init(bus); ItemInit.init(bus);
ItemInit.registerUpgrade(); ItemInit.registerUpgrade();
@ -191,23 +188,22 @@ public class WebDisplays {
} }
} }
@SubscribeEvent public void onRegisterSounds() {
public void onRegisterSounds(RegistryEvent.Register<SoundEvent> ev) { registerSound("keyboard_type");
soundTyping = registerSound(ev, "keyboardType"); registerSound( "upgrade_add");
soundUpgradeAdd = registerSound(ev, "upgradeAdd"); registerSound( "upgrade_del");
soundUpgradeDel = registerSound(ev, "upgradeDel"); registerSound("screencfg_open");
soundScreenCfg = registerSound(ev, "screencfgOpen"); registerSound("server");
soundServer = registerSound(ev, "server"); registerSound("ironic");
soundIronic = registerSound(ev, "ironic");
} }
@SubscribeEvent @SubscribeEvent
public void onWorldLoad(WorldEvent.Load ev) { public void onWorldLoad(LevelEvent.Load ev) {
if (ev.getWorld() instanceof Level level) { if (ev.getLevel() instanceof Level level) {
if (ev.getWorld().isClientSide() || level.dimension() != Level.OVERWORLD) if (ev.getLevel().isClientSide() || level.dimension() != Level.OVERWORLD)
return; 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"); File f = new File(worldDir, "wd_next.txt");
if (f.exists()) { if (f.exists()) {
@ -239,9 +235,9 @@ public class WebDisplays {
} }
@SubscribeEvent @SubscribeEvent
public void onWorldLeave(WorldEvent.Unload ev) throws IOException { public void onWorldLeave(LevelEvent.Unload ev) throws IOException {
if(ev.getWorld() instanceof Level level) { if(ev.getLevel() instanceof Level level) {
if (ev.getWorld().isClientSide() || level.dimension() != Level.OVERWORLD) if (ev.getLevel().isClientSide() || level.dimension() != Level.OVERWORLD)
return; return;
Server sw = Server.getInstance(); Server sw = Server.getInstance();
sw.stopServer(); sw.stopServer();
@ -249,11 +245,11 @@ public class WebDisplays {
} }
@SubscribeEvent @SubscribeEvent
public void onWorldSave(WorldEvent.Save ev) { public void onWorldSave(LevelEvent.Save ev) {
if(ev.getWorld() instanceof Level level) { if(ev.getLevel() instanceof Level level) {
if (ev.getWorld().isClientSide() || level.dimension() != Level.OVERWORLD) if (ev.getLevel().isClientSide() || level.dimension() != Level.OVERWORLD)
return; 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 { try {
BufferedWriter bw = new BufferedWriter(new FileWriter(f)); BufferedWriter bw = new BufferedWriter(new FileWriter(f));
@ -267,8 +263,8 @@ public class WebDisplays {
@SubscribeEvent @SubscribeEvent
public void onToss(ItemTossEvent ev) { public void onToss(ItemTossEvent ev) {
if(!ev.getEntityItem().getLevel().isClientSide) { if(!ev.getEntity().getLevel().isClientSide) {
ItemStack is = ev.getEntityItem().getItem(); ItemStack is = ev.getEntity().getItem();
if(is.getItem() == ItemInit.itemMinePad.get()) { if(is.getItem() == ItemInit.itemMinePad.get()) {
CompoundTag tag = is.getTag(); CompoundTag tag = is.getTag();
@ -289,11 +285,11 @@ public class WebDisplays {
@SubscribeEvent @SubscribeEvent
public void onPlayerCraft(PlayerEvent.ItemCraftedEvent ev) { public void onPlayerCraft(PlayerEvent.ItemCraftedEvent ev) {
if(doHardRecipe && ev.getCrafting().getItem() == ItemInit.itemCraftComp.get() && (CraftComponent.EXTENSION_CARD.makeItemStack().is(ev.getCrafting().getItem()))) { 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()); ev.getCrafting().setDamageValue(CraftComponent.BAD_EXTENSION_CARD.ordinal());
if(!ev.getPlayer().getLevel().isClientSide) if(!ev.getEntity().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); 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 @SubscribeEvent
public void onLogIn(PlayerEvent.PlayerLoggedInEvent ev) { 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 = 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) if(cap.isFirstRun()) {
Log.warning("Player %s (%s) has null IWDDCapability!", ev.getPlayer().getName(), ev.getPlayer().getGameProfile().getId().toString()); Util.toast(ev.getEntity(), ChatFormatting.LIGHT_PURPLE, "welcome1");
else if(cap.isFirstRun()) { Util.toast(ev.getEntity(), ChatFormatting.LIGHT_PURPLE, "welcome2");
Util.toast(ev.getPlayer(), ChatFormatting.LIGHT_PURPLE, "welcome1"); Util.toast(ev.getEntity(), ChatFormatting.LIGHT_PURPLE, "welcome3");
Util.toast(ev.getPlayer(), ChatFormatting.LIGHT_PURPLE, "welcome2");
Util.toast(ev.getPlayer(), ChatFormatting.LIGHT_PURPLE, "welcome3");
cap.clearFirstRun(); cap.clearFirstRun();
} }
@ -322,7 +316,7 @@ public class WebDisplays {
PacketDistributor.PacketTarget packetDistrutor = PacketDistributor.PLAYER PacketDistributor.PacketTarget packetDistrutor = PacketDistributor.PLAYER
.with( .with(
() -> () ->
(ServerPlayer) ev.getPlayer()); (ServerPlayer) ev.getEntity());
CMessageServerInfo message = new CMessageServerInfo(miniservPort); CMessageServerInfo message = new CMessageServerInfo(miniservPort);
@ -332,8 +326,8 @@ public class WebDisplays {
@SubscribeEvent @SubscribeEvent
public void onLogOut(PlayerEvent.PlayerLoggedOutEvent ev) { public void onLogOut(PlayerEvent.PlayerLoggedOutEvent ev) {
if(!ev.getPlayer().getLevel().isClientSide) if(!ev.getEntity().getLevel().isClientSide)
Server.getInstance().getClientManager().revokeClientKey(ev.getPlayer().getGameProfile().getId()); Server.getInstance().getClientManager().revokeClientKey(ev.getEntity().getGameProfile().getId());
} }
@SubscribeEvent @SubscribeEvent
@ -345,7 +339,7 @@ public class WebDisplays {
@SubscribeEvent @SubscribeEvent
public void onPlayerClone(PlayerEvent.Clone ev) { public void onPlayerClone(PlayerEvent.Clone ev) {
IWDDCapability src = ev.getOriginal().getCapability(WDDCapability.Provider.cap, null).orElse(new WDDCapability.Factory().call()); 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) { if(src == null) {
Log.error("src is null"); Log.error("src is null");
@ -362,7 +356,7 @@ public class WebDisplays {
@SubscribeEvent @SubscribeEvent
public void onServerChat(ServerChatEvent ev) { 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()); StringBuilder sb = new StringBuilder(msg.length());
for(int i = 0; i < msg.length(); i++) { for(int i = 0; i < msg.length(); i++) {
char chr = msg.charAt(i); char chr = msg.charAt(i);
@ -396,13 +390,13 @@ public class WebDisplays {
return new WebDisplays().lastPadId++; return new WebDisplays().lastPadId++;
} }
private static SoundEvent registerSound(RegistryEvent.Register<SoundEvent> ev, String resName) { public static DeferredRegister<SoundEvent> SOUNDS = DeferredRegister.create(ForgeRegistries.SOUND_EVENTS, "webdisplays");
private static void registerSound(String resName) {
ResourceLocation resLoc = new ResourceLocation("webdisplays", resName); ResourceLocation resLoc = new ResourceLocation("webdisplays", resName);
SoundEvent ret = new SoundEvent(resLoc); SoundEvent ret = new SoundEvent(resLoc);
ret.setRegistryName(resLoc);
ev.getRegistry().register(ret); SOUNDS.register(resName, () -> ret);
return ret;
} }
private static void registerTrigger(Criterion ... criteria) { private static void registerTrigger(Criterion ... criteria) {

View File

@ -16,16 +16,11 @@ public abstract class WDBlock extends Block {
super(properties); super(properties);
} }
protected void setName(String name) {
setRegistryName(name);
}
public void makeItemBlock() { public void makeItemBlock() {
if(itemBlock != null) if(itemBlock != null)
throw new RuntimeException("WDBlock.makeItemBlock() called twice!"); throw new RuntimeException("WDBlock.makeItemBlock() called twice!");
itemBlock = new BlockItem(this, new Item.Properties()); itemBlock = new BlockItem(this, new Item.Properties());
itemBlock.setRegistryName(getRegistryName());
} }
public BlockItem getItem() { public BlockItem getItem() {

View File

@ -6,7 +6,6 @@ package net.montoyo.wd.client;
import com.mojang.authlib.GameProfile; import com.mojang.authlib.GameProfile;
import com.mojang.blaze3d.platform.InputConstants; import com.mojang.blaze3d.platform.InputConstants;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.advancements.Advancement; import net.minecraft.advancements.Advancement;
import net.minecraft.advancements.AdvancementProgress; import net.minecraft.advancements.AdvancementProgress;
import net.minecraft.client.Minecraft; 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.multiplayer.ClientAdvancements;
import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.ItemBlockRenderTypes;
import net.minecraft.client.renderer.RenderType; 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.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.BlockPos;
import net.minecraft.core.NonNullList; import net.minecraft.core.NonNullList;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer; 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.ReloadableResourceManager;
import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.server.packs.resources.ResourceManager;
import net.minecraft.server.packs.resources.ResourceManagerReloadListener; 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.HitResult;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import net.minecraftforge.api.distmarker.Dist; 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.event.RenderHandEvent;
import net.minecraftforge.client.model.IModelLoader;
import net.minecraftforge.client.model.ModelLoaderRegistry;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.TickEvent; import net.minecraftforge.event.TickEvent;
import net.minecraftforge.event.world.WorldEvent; import net.minecraftforge.event.level.LevelEvent;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; 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.mcef.api.*;
import net.montoyo.wd.SharedProxy; import net.montoyo.wd.SharedProxy;
import net.montoyo.wd.WebDisplays; import net.montoyo.wd.WebDisplays;
import net.montoyo.wd.block.BlockScreen; import net.montoyo.wd.block.BlockScreen;
import net.montoyo.wd.client.gui.*; 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.gui.loading.GuiLoader;
import net.montoyo.wd.client.renderers.*; import net.montoyo.wd.client.renderers.*;
import net.montoyo.wd.core.DefaultUpgrade; import net.montoyo.wd.core.DefaultUpgrade;
@ -109,7 +95,6 @@ public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQuer
} }
private Minecraft mc; private Minecraft mc;
private final ArrayList<ResourceModelPair> modelBakers = new ArrayList<>();
private net.montoyo.mcef.api.API mcef; private net.montoyo.mcef.api.API mcef;
private MinePadRenderer minePadRenderer; private MinePadRenderer minePadRenderer;
private JSQueryDispatcher jsDispatcher; private JSQueryDispatcher jsDispatcher;
@ -147,8 +132,8 @@ public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQuer
} }
@SubscribeEvent @SubscribeEvent
public static void onModelRegistryEvent(ModelRegistryEvent event) { public static void onModelRegistryEvent(ModelEvent.RegisterGeometryLoaders event) {
ModelLoaderRegistry.registerLoader(ScreenModelLoader.SCREEN_LOADER, new ScreenModelLoader()); event.register(ScreenModelLoader.SCREEN_LOADER.getPath(), new ScreenModelLoader());
registerBlockRenderLayers(RenderType.cutout(), BlockInit.blockKeyBoard.get(), BlockInit.blockKbRight.get()); 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()); // ev.getModelRegistry().put(pair.getResourceLocation(), pair.getModel());
// } // }
@SubscribeEvent /* @SubscribeEvent
public void onRegisterModels(ModelRegistryEvent ev) { public void onRegisterModels(ModelRegistryEvent ev) {
final WebDisplays wd = WebDisplays.INSTANCE; final WebDisplays wd = WebDisplays.INSTANCE;
//I hope I'm doing this right because it doesn't seem like it... //I hope I'm doing this right because it doesn't seem like it...
// registerItemModel(wd.blockScreen.getItem(), 0, "inventory"); registerItemModel(wd.blockScreen.getItem(), 0, "inventory");
// ModelLoaderRegistry.setCustomModelResourceLocation(wd.blockPeripheral.getItem(), 0, new ModelResourceLocation("webdisplays:kb_inv", "normal")); 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(), 1, "facing=2,type=ccinterface");
// registerItemModel(wd.blockPeripheral.getItem(), 2, "facing=2,type=cointerface"); registerItemModel(wd.blockPeripheral.getItem(), 2, "facing=2,type=cointerface");
// registerItemModel(wd.blockPeripheral.getItem(), 3, "facing=0,type=remotectrl"); registerItemModel(wd.blockPeripheral.getItem(), 3, "facing=0,type=remotectrl");
// registerItemModel(wd.blockPeripheral.getItem(), 7, "facing=0,type=redstonectrl"); registerItemModel(wd.blockPeripheral.getItem(), 7, "facing=0,type=redstonectrl");
// registerItemModel(wd.blockPeripheral.getItem(), 11, "facing=0,type=server"); registerItemModel(wd.blockPeripheral.getItem(), 11, "facing=0,type=server");
// registerItemModel(wd.itemScreenCfg, 0, "normal"); registerItemModel(wd.itemScreenCfg, 0, "normal");
// registerItemModel(wd.itemOwnerThief, 0, "normal"); registerItemModel(wd.itemOwnerThief, 0, "normal");
// registerItemModel(wd.itemLinker, 0, "normal"); registerItemModel(wd.itemLinker, 0, "normal");
// registerItemModel(wd.itemMinePad, 0, "normal"); registerItemModel(wd.itemMinePad, 0, "normal");
// registerItemModel(wd.itemMinePad, 1, "normal"); registerItemModel(wd.itemMinePad, 1, "normal");
// registerItemModel(wd.itemLaserPointer, 0, "normal"); registerItemModel(wd.itemLaserPointer, 0, "normal");
// registerItemMultiModels(wd.itemUpgrade); registerItemMultiModels(wd.itemUpgrade);
// registerItemMultiModels(wd.itemCraftComp); registerItemMultiModels(wd.itemCraftComp);
// registerItemMultiModels(wd.itemAdvIcon); registerItemMultiModels(wd.itemAdvIcon);
} } */
@SubscribeEvent @SubscribeEvent
public void onTick(TickEvent.ClientTickEvent ev) { public void onTick(TickEvent.ClientTickEvent ev) {
@ -677,9 +662,9 @@ public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQuer
} }
@SubscribeEvent @SubscribeEvent
public void onWorldUnload(WorldEvent.Unload ev) { public void onWorldUnload(LevelEvent.Unload ev) {
Log.info("World unloaded; killing screens..."); Log.info("World unloaded; killing screens...");
if(ev.getWorld() instanceof Level level) { if(ev.getLevel() instanceof Level level) {
ResourceLocation dim = level.dimension().location(); ResourceLocation dim = level.dimension().location();
for(int i = screenTracking.size() - 1; i >= 0; i--) { for(int i = screenTracking.size() - 1; i >= 0; i--) {
if(screenTracking.get(i).getLevel().dimension().location().equals(dim)) //Could be world == ev.getWorld() if(screenTracking.get(i).getLevel().dimension().location().equals(dim)) //Could be world == ev.getWorld()

View File

@ -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;
}
}

View File

@ -16,6 +16,8 @@ import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundSource; 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.WebDisplays;
import net.montoyo.wd.miniserv.Constants; import net.montoyo.wd.miniserv.Constants;
import net.montoyo.wd.miniserv.client.*; import net.montoyo.wd.miniserv.client.*;
@ -168,7 +170,7 @@ public class GuiServer extends WDScreen {
accessTime = 20; accessTime = 20;
} else { } else {
if(accessSound == null) { 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); minecraft.getSoundManager().play(accessSound);
} }

View File

@ -27,6 +27,7 @@ import net.montoyo.wd.utilities.BlockSide;
import net.montoyo.wd.utilities.Util; import net.montoyo.wd.utilities.Util;
import net.montoyo.wd.utilities.Vector3i; import net.montoyo.wd.utilities.Vector3i;
import java.io.IOException;
import java.util.Map; import java.util.Map;
@Mod.EventBusSubscriber @Mod.EventBusSubscriber

View File

@ -264,7 +264,9 @@ public abstract class WDScreen extends Screen {
} }
public void loadFrom(ResourceLocation resLoc) { public void loadFrom(ResourceLocation resLoc) {
JsonObject root = GuiLoader.getJson(resLoc); try {
JsonObject root = GuiLoader.getJson(resLoc);
if(root == null) if(root == null)
throw new RuntimeException("Could not load GUI file " + resLoc.toString()); 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()) if(root.has("center") && root.get("center").getAsBoolean())
centerControls(); centerControls();
} catch (IOException e) {
e.printStackTrace();
}
} }
@Override @Override

View File

@ -208,7 +208,7 @@ public class Button extends Control {
btn.y = json.getInt("y", 0); btn.y = json.getInt("y", 0);
btn.setWidth(json.getInt("width", 200)); btn.setWidth(json.getInt("width", 200));
btn.setHeight(json.getInt("height", 20)); 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.active = json.getBool("active", btn.active);
btn.visible = json.getBool("visible", btn.visible); btn.visible = json.getBool("visible", btn.visible);

View File

@ -8,16 +8,10 @@ import com.google.common.collect.Lists;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.client.resources.sounds.SimpleSoundInstance;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvents; 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 net.montoyo.wd.client.gui.loading.JsonOWrapper;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class CheckBox extends BasicControl { public class CheckBox extends BasicControl {
private static final ResourceLocation texUnchecked = new ResourceLocation("webdisplays", "textures/gui/checkbox.png"); private static final ResourceLocation texUnchecked = new ResourceLocation("webdisplays", "textures/gui/checkbox.png");

View File

@ -9,7 +9,6 @@ import com.mojang.blaze3d.pipeline.TextureTarget;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.network.chat.TextComponent;
import net.montoyo.wd.client.gui.loading.JsonOWrapper; import net.montoyo.wd.client.gui.loading.JsonOWrapper;
import java.util.ArrayList; import java.util.ArrayList;

View File

@ -62,24 +62,15 @@ public class GuiLoader {
return ret; return ret;
} }
public static JsonObject getJson(ResourceLocation resLoc) { public static JsonObject getJson(ResourceLocation resLoc) throws IOException {
JsonObject ret = RESOURCES.get(resLoc); JsonObject ret = RESOURCES.get(resLoc);
if(ret == null) { if(ret == null) {
Resource resource; Resource resource;
try { resource = Minecraft.getInstance().getResourceManager().getResource(resLoc).get();
resource = Minecraft.getInstance().getResourceManager().getResource(resLoc);
} catch(IOException e) {
Log.errorEx("Couldn't load JSON UI from file", e);
throw new RuntimeException(e);
}
JsonParser parser = new JsonParser(); JsonParser parser = new JsonParser();
ret = parser.parse(new InputStreamReader(resource.getInputStream())).getAsJsonObject(); ret = parser.parse(new InputStreamReader(resource.open())).getAsJsonObject();
try {
resource.close();
} catch(IOException e) {}
RESOURCES.put(resLoc, ret); RESOURCES.put(resLoc, ret);
} }

View File

@ -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);
}

View File

@ -24,7 +24,6 @@ public final class LaserPointerRenderer implements IItemRenderer {
private static final float PI = (float) Math.PI; private static final float PI = (float) Math.PI;
private final Tesselator t = Tesselator.getInstance(); private final Tesselator t = Tesselator.getInstance();
private final BufferBuilder bb = t.getBuilder(); private final BufferBuilder bb = t.getBuilder();
private final VertexBuffer vb = new VertexBuffer();
private final FloatBuffer matrix1 = BufferUtils.createFloatBuffer(16); private final FloatBuffer matrix1 = BufferUtils.createFloatBuffer(16);
private final FloatBuffer renderBuffer = BufferUtils.createFloatBuffer(8); private final FloatBuffer renderBuffer = BufferUtils.createFloatBuffer(8);

View File

@ -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.BakedQuad;
import net.minecraft.client.renderer.block.model.ItemOverrides; import net.minecraft.client.renderer.block.model.ItemOverrides;
import net.minecraft.client.renderer.block.model.ItemTransforms; 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.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.client.resources.model.ModelState; import net.minecraft.client.resources.model.ModelState;
import net.minecraft.core.Direction; 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.BlockState;
import net.minecraft.world.level.block.state.properties.IntegerProperty; 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.BlockSide;
import net.montoyo.wd.utilities.Vector3f; import net.montoyo.wd.utilities.Vector3f;
import net.montoyo.wd.utilities.Vector3i; import net.montoyo.wd.utilities.Vector3i;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Random;
import java.util.function.Function; import java.util.function.Function;
public class ScreenBaker implements IModelBaker { public class ScreenBaker implements BakedModel {
private static final List<BakedQuad> noQuads = ImmutableList.of(); private static final List<BakedQuad> noQuads = ImmutableList.of();
private final TextureAtlasSprite[] texs = new TextureAtlasSprite[16]; private final TextureAtlasSprite[] texs = new TextureAtlasSprite[16];
@ -49,12 +43,6 @@ public class ScreenBaker implements IModelBaker {
this.itemTransforms = itemTransforms; 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) { 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 + 0] = Float.floatToRawIntBits(vpos.x);
buf[pos * 7 + 1] = Float.floatToRawIntBits(vpos.y); 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); return new BakedQuad(data, 0xFFFFFFFF, blockFacings[side.ordinal()], tex, true);
} }
@NotNull
@Override @Override
public List<BakedQuad> getQuads(@org.jetbrains.annotations.Nullable BlockState state, @org.jetbrains.annotations.Nullable Direction side, @NotNull Random random, @NotNull IModelData iModelData) { public List<BakedQuad> getQuads(@Nullable BlockState state, @Nullable Direction side, RandomSource random) {
if(side == null) if(side == null)
return noQuads; return noQuads;
BlockState bs = state; BlockState bs = state;

View File

@ -2,23 +2,23 @@ package net.montoyo.wd.client.renderers;
import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.mojang.datafixers.util.Pair; import com.mojang.datafixers.util.Pair;
import net.minecraft.client.renderer.block.model.ItemOverrides; import net.minecraft.client.renderer.block.model.ItemOverrides;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.model.*; import net.minecraft.client.resources.model.*;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.packs.resources.ResourceManager;
import net.minecraftforge.client.ForgeHooksClient; import net.minecraftforge.client.ForgeHooksClient;
import net.minecraftforge.client.model.IModelConfiguration; import net.minecraftforge.client.model.geometry.IGeometryBakingContext;
import net.minecraftforge.client.model.IModelLoader; import net.minecraftforge.client.model.geometry.IGeometryLoader;
import net.minecraftforge.client.model.geometry.IModelGeometry; import net.minecraftforge.client.model.geometry.IUnbakedGeometry;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.function.Function; import java.util.function.Function;
public class ScreenModelLoader implements IModelLoader<ScreenModelLoader.ScreenModelGeometry> { public class ScreenModelLoader implements IGeometryLoader<ScreenModelLoader.ScreenModelGeometry> {
public static final ResourceLocation SCREEN_LOADER = new ResourceLocation("webdisplays", "screen_loader"); public static final ResourceLocation SCREEN_LOADER = new ResourceLocation("webdisplays", "screen_loader");
@ -27,25 +27,20 @@ public class ScreenModelLoader implements IModelLoader<ScreenModelLoader.ScreenM
public static final Material MATERIAL_SIDE = ForgeHooksClient.getBlockMaterial(SCREEN_SIDE); public static final Material MATERIAL_SIDE = ForgeHooksClient.getBlockMaterial(SCREEN_SIDE);
@Override @Override
public void onResourceManagerReload(ResourceManager resourceManager) { public ScreenModelGeometry read(JsonObject jsonObject, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
}
@Override
public ScreenModelGeometry read(JsonDeserializationContext deserializationContext, JsonObject modelContents) {
return new ScreenModelGeometry(); return new ScreenModelGeometry();
} }
public static class ScreenModelGeometry implements IModelGeometry<ScreenModelGeometry> { public static class ScreenModelGeometry implements IUnbakedGeometry<ScreenModelGeometry> {
@Override @Override
public BakedModel bake(IModelConfiguration owner, ModelBakery modelBakery, Function<net.minecraft.client.resources.model.Material, TextureAtlasSprite> spriteGetter, ModelState modelState, ItemOverrides itemOverrides, ResourceLocation resourceLocation) { public BakedModel bake(IGeometryBakingContext iGeometryBakingContext, ModelBakery arg, Function<Material, TextureAtlasSprite> spriteGetter, ModelState modelState, ItemOverrides itemOverrides, ResourceLocation arg4) {
return new ScreenBaker(modelState, spriteGetter, itemOverrides, owner.getCameraTransforms()); return new ScreenBaker(modelState, spriteGetter, itemOverrides, iGeometryBakingContext.getTransforms());
} }
@Override @Override
public Collection<net.minecraft.client.resources.model.Material> getTextures(IModelConfiguration owner, Function<ResourceLocation, UnbakedModel> modelGetter, Set<Pair<String, String>> missingTextureErrors) { public Collection<Material> getMaterials(IGeometryBakingContext iGeometryBakingContext, Function<ResourceLocation, UnbakedModel> function, Set<Pair<String, String>> set) {
return List.of(MATERIAL_SIDE); return List.of(MATERIAL_SIDE);
} }
} }

View File

@ -4,14 +4,11 @@
package net.montoyo.wd.entity; package net.montoyo.wd.entity;
import com.mojang.blaze3d.platform.InputConstants;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag; import net.minecraft.nbt.ListTag;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.server.packs.repository.Pack;
import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
import net.minecraft.world.InteractionHand; 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.Level;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity; 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.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.network.PacketDistributor; import net.minecraftforge.network.PacketDistributor;
import net.montoyo.mcef.api.IBrowser; 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.client.CMessageScreenUpdate;
import net.montoyo.wd.net.server.SMessageRequestTEData; import net.montoyo.wd.net.server.SMessageRequestTEData;
import net.montoyo.wd.utilities.*; import net.montoyo.wd.utilities.*;
import org.lwjgl.glfw.GLFW;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.awt.event.KeyEvent;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.UUID; import java.util.UUID;
@ -839,8 +833,7 @@ public class TileEntityScreen extends BlockEntity{
} }
private static String safeName(ItemStack is) { private static String safeName(ItemStack is) {
ResourceLocation rl = is.getItem().getRegistryName(); return is.getItem().getName(is).getString();
return (rl == null) ? "[NO NAME, WTF?!]" : rl.toString();
} }
//If equal is null, no duplicate check is preformed //If equal is null, no duplicate check is preformed

View File

@ -14,7 +14,7 @@ import java.util.Locale;
public class TileInit { public class TileInit {
public static final DeferredRegister<BlockEntityType<?>> TILE_TYPES = DeferredRegister public static final DeferredRegister<BlockEntityType<?>> TILE_TYPES = DeferredRegister
.create(ForgeRegistries.BLOCK_ENTITIES, "webdisplays"); .create(ForgeRegistries.BLOCK_ENTITY_TYPES, "webdisplays");
//Register tile entities //Register tile entities
public static final RegistryObject<BlockEntityType<TileEntityScreen>> SCREEN_BLOCK_ENTITY = TILE_TYPES public static final RegistryObject<BlockEntityType<TileEntityScreen>> SCREEN_BLOCK_ENTITY = TILE_TYPES

View File

@ -18,7 +18,6 @@ public class ItemMulti extends Item {
values = cls.getEnumConstants(); values = cls.getEnumConstants();
creativeTabItems = new BitSet(values.length); creativeTabItems = new BitSet(values.length);
creativeTabItems.set(0, values.length); creativeTabItems.set(0, values.length);
setDamage(this.getDefaultInstance(),0);
} }
public Enum[] getEnumValues() { public Enum[] getEnumValues() {

View File

@ -9,8 +9,6 @@ import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.Style; 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 net.minecraft.world.entity.player.Player;
import java.lang.reflect.Field; 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) { public static void toast(Player player, ChatFormatting color, String key, Object... data) {
TextComponent root = new TextComponent("[WebDisplays] "); Component root = Component.translatable("[WebDisplays] ").
root.setStyle(Style.EMPTY.withColor(color)); setStyle(Style.EMPTY.withColor(color)).
root.append(new TranslatableComponent("webdisplays.message." + key, data)); append(Component.translatable("webdisplays.message." + key, data));
player.sendSystemMessage(root);
player.sendMessage(root, player.getUUID());
} }
public static void silentClose(Object obj) { public static void silentClose(Object obj) {

View File

@ -1 +1,2 @@
public net.minecraft.client.gui.components.EditBox m94216()I # getMaxLength public net.minecraft.client.gui.components.EditBox m94216()I # getMaxLength
public net.minecraft.client.resources.sounds.SimpleSoundInstance

View File

@ -1,8 +1,8 @@
modLoader="javafml" #mandatory 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 issueTrackerURL="" #optional
@ -28,14 +28,14 @@ description='''
[[dependencies.webdisplays]] #optional [[dependencies.webdisplays]] #optional
modId="forge" #mandatory modId="forge" #mandatory
mandatory=true #mandatory mandatory=true #mandatory
versionRange="[40,)" #mandatory versionRange="[43,)" #mandatory
ordering="NONE" ordering="NONE"
side="BOTH" side="BOTH"
[[dependencies.webdisplays]] [[dependencies.webdisplays]]
modId="minecraft" modId="minecraft"
mandatory=true mandatory=true
versionRange="[1.18.2,1.19)" versionRange="[1.19.2,1.19.3)"
ordering="NONE" ordering="NONE"
side="BOTH" side="BOTH"

View File

@ -4,7 +4,7 @@
"version": "${version}", "version": "${version}",
"name": "Web Displays", "name": "Web Displays",
"description": "Web Displays for 1.18.2 fabric", "description": "Web Displays for 1.19.2 fabric",
"authors": [ "authors": [
"Montoyo, Waterpicker, Mysticpasta1" "Montoyo, Waterpicker, Mysticpasta1"
], ],
@ -28,10 +28,7 @@
"depends": { "depends": {
"fabricloader": ">=0.14.8", "fabricloader": ">=0.14.8",
"fabric": "*", "fabric": "*",
"minecraft": "~1.18.2", "minecraft": "~1.19.2",
"java": ">=17" "java": ">=17"
},
"suggests": {
"another-mod": "*"
} }
} }

View File

@ -1,6 +1,6 @@
{ {
"pack": { "pack": {
"description": "webdisplays resources", "description": "webdisplays resources",
"pack_format": 3 "pack_format": 8
} }
} }