slight tweaks to networking code
This commit is contained in:
parent
e5c3731236
commit
bc7de9a7b6
|
|
@ -10,7 +10,9 @@ 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.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraft.world.level.BlockGetter;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraftforge.network.NetworkEvent;
|
||||||
import net.minecraftforge.server.ServerLifecycleHooks;
|
import net.minecraftforge.server.ServerLifecycleHooks;
|
||||||
import net.montoyo.wd.core.HasAdvancement;
|
import net.montoyo.wd.core.HasAdvancement;
|
||||||
import net.montoyo.wd.core.JSServerRequest;
|
import net.montoyo.wd.core.JSServerRequest;
|
||||||
|
|
@ -30,10 +32,16 @@ public class SharedProxy {
|
||||||
public void postInit() {
|
public void postInit() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated(forRemoval = true)
|
||||||
public Level getWorld(ResourceKey<Level> dim) {
|
public Level getWorld(ResourceKey<Level> dim) {
|
||||||
return getServer().getLevel(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) {
|
public void enqueue(Runnable r) {
|
||||||
ServerLifecycleHooks.getCurrentServer().addTickable(r);
|
ServerLifecycleHooks.getCurrentServer().addTickable(r);
|
||||||
}
|
}
|
||||||
|
|
@ -105,5 +113,4 @@ public class SharedProxy {
|
||||||
public boolean isShiftDown() {
|
public boolean isShiftDown() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,9 @@ 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.ModLoadingContext;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
||||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||||
import net.minecraftforge.fml.loading.FMLEnvironment;
|
import net.minecraftforge.fml.loading.FMLEnvironment;
|
||||||
import net.minecraftforge.network.PacketDistributor;
|
import net.minecraftforge.network.PacketDistributor;
|
||||||
|
|
@ -169,6 +171,11 @@ public class WebDisplays {
|
||||||
|
|
||||||
PROXY.preInit();
|
PROXY.preInit();
|
||||||
|
|
||||||
|
if (FMLEnvironment.dist.isClient()) {
|
||||||
|
ClientProxy proxy = (ClientProxy) PROXY;
|
||||||
|
FMLJavaModLoadingContext.get().getModEventBus().addListener(proxy::onClientSetup);
|
||||||
|
}
|
||||||
|
|
||||||
MinecraftForge.EVENT_BUS.register(this);
|
MinecraftForge.EVENT_BUS.register(this);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -149,13 +149,6 @@ public class BlockKeyboardLeft extends BlockPeripheral {
|
||||||
Messages.INSTANCE.send(PacketDistributor.NEAR.with(() -> point(world, pos)), new CMessageCloseGui(pos));
|
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
|
@Override
|
||||||
public void onRemove(BlockState arg, Level arg2, BlockPos arg3, BlockState arg4, boolean bl) {
|
public void onRemove(BlockState arg, Level arg2, BlockPos arg3, BlockState arg4, boolean bl) {
|
||||||
if(!arg2.isClientSide) {
|
if(!arg2.isClientSide) {
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.inventory.Slot;
|
import net.minecraft.world.inventory.Slot;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.level.BlockGetter;
|
||||||
import net.minecraft.world.level.ClipContext;
|
import net.minecraft.world.level.ClipContext;
|
||||||
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;
|
||||||
|
|
@ -46,6 +47,7 @@ import net.minecraftforge.event.level.LevelEvent;
|
||||||
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.network.NetworkEvent;
|
||||||
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;
|
||||||
|
|
@ -127,7 +129,6 @@ public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQuer
|
||||||
private int minePadTickCounter = 0;
|
private int minePadTickCounter = 0;
|
||||||
|
|
||||||
/**************************************** INHERITED METHODS ****************************************/
|
/**************************************** INHERITED METHODS ****************************************/
|
||||||
@SubscribeEvent
|
|
||||||
public static void onClientSetup(FMLClientSetupEvent event) {
|
public static void onClientSetup(FMLClientSetupEvent event) {
|
||||||
BlockEntityRenderers.register(TileInit.SCREEN_BLOCK_ENTITY.get(), new ScreenRenderer.ScreenRendererProvider());
|
BlockEntityRenderers.register(TileInit.SCREEN_BLOCK_ENTITY.get(), new ScreenRenderer.ScreenRendererProvider());
|
||||||
}
|
}
|
||||||
|
|
@ -789,4 +790,8 @@ public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQuer
|
||||||
return null;
|
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) {
|
public void handle(Supplier<NetworkEvent.Context> contextSupplier) {
|
||||||
contextSupplier.get().enqueueWork(() -> {
|
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 (!(te instanceof TileEntityScreen)) {
|
||||||
if (clear)
|
if (clear)
|
||||||
Log.error("CMessageAddScreen: Can't add screen to invalid tile entity at %s", pos.toString());
|
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.network.FriendlyByteBuf;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.level.BlockGetter;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import net.minecraftforge.network.NetworkEvent;
|
import net.minecraftforge.network.NetworkEvent;
|
||||||
import net.montoyo.wd.WebDisplays;
|
import net.montoyo.wd.WebDisplays;
|
||||||
|
import net.montoyo.wd.block.BlockScreen;
|
||||||
import net.montoyo.wd.entity.TileEntityScreen;
|
import net.montoyo.wd.entity.TileEntityScreen;
|
||||||
|
import net.montoyo.wd.init.BlockInit;
|
||||||
import net.montoyo.wd.utilities.*;
|
import net.montoyo.wd.utilities.*;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
@ -233,32 +236,39 @@ public class CMessageScreenUpdate {
|
||||||
|
|
||||||
public void handle(Supplier<NetworkEvent.Context> contextSupplier) {
|
public void handle(Supplier<NetworkEvent.Context> contextSupplier) {
|
||||||
contextSupplier.get().enqueueWork(() -> {
|
contextSupplier.get().enqueueWork(() -> {
|
||||||
BlockEntity te = WebDisplays.PROXY.getWorld(Level.OVERWORLD).getBlockEntity(pos.toBlock());
|
BlockGetter level = WebDisplays.PROXY.getWorld(contextSupplier.get());
|
||||||
if(!(te instanceof TileEntityScreen)) {
|
if (level instanceof Level level1)
|
||||||
Log.error("CMessageScreenUpdate: TileEntity at %s is not a screen!", pos.toString());
|
// ensure that the TE exists
|
||||||
return;
|
level1.setBlock(
|
||||||
}
|
pos.toBlock(),
|
||||||
|
level.getBlockState(pos.toBlock()).setValue(BlockScreen.hasTE, true),11
|
||||||
TileEntityScreen tes = (TileEntityScreen) te;
|
);
|
||||||
|
BlockEntity te = level.getBlockEntity(pos.toBlock());
|
||||||
switch (action) {
|
if(!(te instanceof TileEntityScreen)) {
|
||||||
case UPDATE_URL -> tes.setScreenURL(side, string);
|
Log.error("CMessageScreenUpdate: TileEntity at %s is not a screen!", pos.toString());
|
||||||
case UPDATE_MOUSE -> tes.handleMouseEvent(side, mouseEvent, vec2i);
|
return;
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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);
|
contextSupplier.get().setPacketHandled(true);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user