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.
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.

View File

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

View File

@ -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<SoundEvent> 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<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);
SoundEvent ret = new SoundEvent(resLoc);
ret.setRegistryName(resLoc);
ev.getRegistry().register(ret);
return ret;
SOUNDS.register(resName, () -> ret);
}
private static void registerTrigger(Criterion ... criteria) {

View File

@ -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() {

View File

@ -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<ResourceModelPair> 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()

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

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.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<BakedQuad> 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<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)
return noQuads;
BlockState bs = state;

View File

@ -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<ScreenModelLoader.ScreenModelGeometry> {
public class ScreenModelLoader implements IGeometryLoader<ScreenModelLoader.ScreenModelGeometry> {
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);
@Override
public void onResourceManagerReload(ResourceManager resourceManager) {
}
@Override
public ScreenModelGeometry read(JsonDeserializationContext deserializationContext, JsonObject modelContents) {
public ScreenModelGeometry read(JsonObject jsonObject, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
return new ScreenModelGeometry();
}
public static class ScreenModelGeometry implements IModelGeometry<ScreenModelGeometry> {
public static class ScreenModelGeometry implements IUnbakedGeometry<ScreenModelGeometry> {
@Override
public BakedModel bake(IModelConfiguration owner, ModelBakery modelBakery, Function<net.minecraft.client.resources.model.Material, TextureAtlasSprite> spriteGetter, ModelState modelState, ItemOverrides itemOverrides, ResourceLocation resourceLocation) {
return new ScreenBaker(modelState, spriteGetter, itemOverrides, owner.getCameraTransforms());
public BakedModel bake(IGeometryBakingContext iGeometryBakingContext, ModelBakery arg, Function<Material, TextureAtlasSprite> spriteGetter, ModelState modelState, ItemOverrides itemOverrides, ResourceLocation arg4) {
return new ScreenBaker(modelState, spriteGetter, itemOverrides, iGeometryBakingContext.getTransforms());
}
@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);
}
}

View File

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

View File

@ -14,7 +14,7 @@ import java.util.Locale;
public class TileInit {
public static final DeferredRegister<BlockEntityType<?>> TILE_TYPES = DeferredRegister
.create(ForgeRegistries.BLOCK_ENTITIES, "webdisplays");
.create(ForgeRegistries.BLOCK_ENTITY_TYPES, "webdisplays");
//Register tile entities
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();
creativeTabItems = new BitSet(values.length);
creativeTabItems.set(0, values.length);
setDamage(this.getDefaultInstance(),0);
}
public Enum[] getEnumValues() {

View File

@ -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) {

View File

@ -1 +1,2 @@
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
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"

View File

@ -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": "*"
}
}

View File

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