Merge pull request #3 from GiantLuigi4/master
slight tweaks to networking code
This commit is contained in:
commit
b588e975bc
|
|
@ -75,7 +75,7 @@ dependencies {
|
|||
minecraft 'net.minecraftforge:forge:1.19.2-43.2.6'
|
||||
annotationProcessor 'org.spongepowered:mixin:0.8.5:processor'
|
||||
|
||||
implementation fg.deobf("com.github.Mysticpasta1:mcef-forge:107b3b848a")
|
||||
implementation fg.deobf("com.github.Mysticpasta1:mcef-forge:b8387adfc4")
|
||||
implementation fg.deobf("curse.maven:cloth_config_forge-348521:3972423")
|
||||
implementation fg.deobf("curse.maven:SU-370704:4410614")
|
||||
implementation fg.deobf("curse.maven:spark-361579:4381167")
|
||||
|
|
|
|||
|
|
@ -10,7 +10,9 @@ import net.minecraft.resources.ResourceKey;
|
|||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraftforge.network.NetworkEvent;
|
||||
import net.minecraftforge.server.ServerLifecycleHooks;
|
||||
import net.montoyo.wd.core.HasAdvancement;
|
||||
import net.montoyo.wd.core.JSServerRequest;
|
||||
|
|
@ -30,9 +32,15 @@ public class SharedProxy {
|
|||
public void postInit() {
|
||||
}
|
||||
|
||||
@Deprecated(forRemoval = true)
|
||||
public Level getWorld(ResourceKey<Level> dim) {
|
||||
return getServer().getLevel(dim);
|
||||
}
|
||||
|
||||
public BlockGetter getWorld(NetworkEvent.Context context) {
|
||||
if (context.getSender() != null) return context.getSender().level;
|
||||
return null;
|
||||
}
|
||||
|
||||
public void enqueue(Runnable r) {
|
||||
ServerLifecycleHooks.getCurrentServer().addTickable(r);
|
||||
|
|
@ -105,5 +113,4 @@ public class SharedProxy {
|
|||
public boolean isShiftDown() {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,9 @@ 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.ModLoadingContext;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||
import net.minecraftforge.fml.loading.FMLEnvironment;
|
||||
import net.minecraftforge.network.PacketDistributor;
|
||||
|
|
@ -168,10 +170,9 @@ public class WebDisplays {
|
|||
TileInit.init(bus);
|
||||
|
||||
PROXY.preInit();
|
||||
|
||||
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
|
||||
|
||||
//Other things
|
||||
PROXY.init();
|
||||
|
||||
|
|
|
|||
|
|
@ -149,13 +149,6 @@ public class BlockKeyboardLeft extends BlockPeripheral {
|
|||
Messages.INSTANCE.send(PacketDistributor.NEAR.with(() -> point(world, pos)), new CMessageCloseGui(pos));
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public void playerDestroy(Level world, Player player, BlockPos pos, BlockState state, @Nullable BlockEntity blockEntity, ItemStack tool) {
|
||||
// if(!world.isClientSide) {
|
||||
// remove(state, world, pos, false, false);
|
||||
// }
|
||||
// }
|
||||
|
||||
@Override
|
||||
public void onRemove(BlockState arg, Level arg2, BlockPos arg3, BlockState arg4, boolean bl) {
|
||||
if(!arg2.isClientSide) {
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ import net.minecraft.world.entity.player.Player;
|
|||
import net.minecraft.world.inventory.Slot;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.ClipContext;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
|
|
@ -46,6 +47,7 @@ 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.network.NetworkEvent;
|
||||
import net.montoyo.mcef.api.*;
|
||||
import net.montoyo.wd.SharedProxy;
|
||||
import net.montoyo.wd.WebDisplays;
|
||||
|
|
@ -788,5 +790,9 @@ public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQuer
|
|||
Log.warning("ClientAdvancementManager.advancementToProgress field could not be found");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BlockGetter getWorld(NetworkEvent.Context context) {
|
||||
return Minecraft.getInstance().level;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ public class CMessageAddScreen {
|
|||
|
||||
public void handle(Supplier<NetworkEvent.Context> contextSupplier) {
|
||||
contextSupplier.get().enqueueWork(() -> {
|
||||
BlockEntity te = WebDisplays.PROXY.getWorld(Level.OVERWORLD).getBlockEntity(pos.toBlock());
|
||||
BlockEntity te = WebDisplays.PROXY.getWorld(contextSupplier.get()).getBlockEntity(pos.toBlock());
|
||||
if (!(te instanceof TileEntityScreen)) {
|
||||
if (clear)
|
||||
Log.error("CMessageAddScreen: Can't add screen to invalid tile entity at %s", pos.toString());
|
||||
|
|
|
|||
|
|
@ -6,11 +6,14 @@ package net.montoyo.wd.net.client;
|
|||
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraftforge.network.NetworkEvent;
|
||||
import net.montoyo.wd.WebDisplays;
|
||||
import net.montoyo.wd.block.BlockScreen;
|
||||
import net.montoyo.wd.entity.TileEntityScreen;
|
||||
import net.montoyo.wd.init.BlockInit;
|
||||
import net.montoyo.wd.utilities.*;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
|
@ -233,32 +236,39 @@ public class CMessageScreenUpdate {
|
|||
|
||||
public void handle(Supplier<NetworkEvent.Context> contextSupplier) {
|
||||
contextSupplier.get().enqueueWork(() -> {
|
||||
BlockEntity te = WebDisplays.PROXY.getWorld(Level.OVERWORLD).getBlockEntity(pos.toBlock());
|
||||
if(!(te instanceof TileEntityScreen)) {
|
||||
Log.error("CMessageScreenUpdate: TileEntity at %s is not a screen!", pos.toString());
|
||||
return;
|
||||
}
|
||||
|
||||
TileEntityScreen tes = (TileEntityScreen) te;
|
||||
|
||||
switch (action) {
|
||||
case UPDATE_URL -> tes.setScreenURL(side, string);
|
||||
case UPDATE_MOUSE -> tes.handleMouseEvent(side, mouseEvent, vec2i);
|
||||
case UPDATE_DELETE -> tes.removeScreen(side);
|
||||
case UPDATE_RESOLUTION -> tes.setResolution(side, vec2i);
|
||||
case UPDATE_TYPE -> tes.type(side, string, null);
|
||||
case UPDATE_RUN_JS -> tes.evalJS(side, string);
|
||||
case UPDATE_UPGRADES -> tes.updateUpgrades(side, upgrades);
|
||||
case UPDATE_JS_REDSTONE -> tes.updateJSRedstone(side, vec2i, redstoneLevel);
|
||||
case UPDATE_OWNER -> {
|
||||
TileEntityScreen.Screen scr = tes.getScreen(side);
|
||||
if (scr != null)
|
||||
scr.owner = owner;
|
||||
}
|
||||
case UPDATE_ROTATION -> tes.setRotation(side, rotation);
|
||||
case UPDATE_AUTO_VOL -> tes.setAutoVolume(side, autoVolume);
|
||||
default -> Log.warning("Caught invalid CMessageScreenUpdate with action ID %d", action);
|
||||
BlockGetter level = WebDisplays.PROXY.getWorld(contextSupplier.get());
|
||||
if (level instanceof Level level1)
|
||||
// ensure that the TE exists
|
||||
level1.setBlock(
|
||||
pos.toBlock(),
|
||||
level.getBlockState(pos.toBlock()).setValue(BlockScreen.hasTE, true),11
|
||||
);
|
||||
BlockEntity te = level.getBlockEntity(pos.toBlock());
|
||||
if(!(te instanceof TileEntityScreen)) {
|
||||
Log.error("CMessageScreenUpdate: TileEntity at %s is not a screen!", pos.toString());
|
||||
return;
|
||||
}
|
||||
|
||||
TileEntityScreen tes = (TileEntityScreen) te;
|
||||
|
||||
switch (action) {
|
||||
case UPDATE_URL -> tes.setScreenURL(side, string);
|
||||
case UPDATE_MOUSE -> tes.handleMouseEvent(side, mouseEvent, vec2i);
|
||||
case UPDATE_DELETE -> tes.removeScreen(side);
|
||||
case UPDATE_RESOLUTION -> tes.setResolution(side, vec2i);
|
||||
case UPDATE_TYPE -> tes.type(side, string, null);
|
||||
case UPDATE_RUN_JS -> tes.evalJS(side, string);
|
||||
case UPDATE_UPGRADES -> tes.updateUpgrades(side, upgrades);
|
||||
case UPDATE_JS_REDSTONE -> tes.updateJSRedstone(side, vec2i, redstoneLevel);
|
||||
case UPDATE_OWNER -> {
|
||||
TileEntityScreen.Screen scr = tes.getScreen(side);
|
||||
if (scr != null)
|
||||
scr.owner = owner;
|
||||
}
|
||||
case UPDATE_ROTATION -> tes.setRotation(side, rotation);
|
||||
case UPDATE_AUTO_VOL -> tes.setAutoVolume(side, autoVolume);
|
||||
default -> Log.warning("Caught invalid CMessageScreenUpdate with action ID %d", action);
|
||||
}
|
||||
});
|
||||
|
||||
contextSupplier.get().setPacketHandled(true);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user