initial port to 1.19.2 forge (windows only)
This commit is contained in:
parent
523cd9ca52
commit
7fb2170e34
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -1 +1,2 @@
|
|||
public net.minecraft.client.gui.components.EditBox m94216()I # getMaxLength
|
||||
public net.minecraft.client.resources.sounds.SimpleSoundInstance
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
|
|
|
|||
|
|
@ -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": "*"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"pack": {
|
||||
"description": "webdisplays resources",
|
||||
"pack_format": 3
|
||||
"pack_format": 8
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user