Skip to content

Commit

Permalink
loading gui between worlds
Browse files Browse the repository at this point in the history
  • Loading branch information
BlueWeabo committed Jun 21, 2024
1 parent ccf25a9 commit 769bff9
Show file tree
Hide file tree
Showing 18 changed files with 144 additions and 110 deletions.
3 changes: 2 additions & 1 deletion src/main/java/com/blueweabo/mutecore/ClientProxy.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package com.blueweabo.mutecore;

import net.minecraftforge.common.MinecraftForge;

import com.blueweabo.mutecore.api.registry.TextureRegistry;
import com.blueweabo.mutecore.client.MultiTileBlockRenderer;

import cpw.mods.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.common.MinecraftForge;

public class ClientProxy extends CommonProxy {

Expand Down
16 changes: 10 additions & 6 deletions src/main/java/com/blueweabo/mutecore/MuTECore.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,20 +24,24 @@
import dev.dominion.ecs.api.Entity;
import dev.dominion.ecs.api.Results;

@Mod(modid = MuTECore.MODID, version = Tags.VERSION, name = "MuTECore", acceptedMinecraftVersions = "[1.7.10]", dependencies = MuTECore.DEPENDENCIES)
@Mod(
modid = MuTECore.MODID,
version = Tags.VERSION,
name = "MuTECore",
acceptedMinecraftVersions = "[1.7.10]",
dependencies = MuTECore.DEPENDENCIES)
public class MuTECore {

public static final String MODID = "mutecore";
public static final Logger LOG = LogManager.getLogger(MODID);
public static final String DEPENDENCIES = "required-after:gtnhlib@[0.2.7,);" + "required-after:modularui;"
+ "after:appliedenegistics2";
+ "after:appliedenegistics2";
@SidedProxy(clientSide = "com.blueweabo.mutecore.ClientProxy", serverSide = "com.blueweabo.mutecore.CommonProxy")
public static CommonProxy proxy;
public static Dominion ENGINE;
public static boolean ENABLE_TESTS;

public MuTECore() {
}
public MuTECore() {}

@Mod.EventHandler
public void preInit(FMLPreInitializationEvent event) {
Expand All @@ -62,8 +66,8 @@ public void init(FMLInitializationEvent event) {
public void postInit(FMLPostInitializationEvent event) {
proxy.postInit(event);
FMLCommonHandler.instance()
.bus()
.register(new SystemRegistrator());
.bus()
.register(new SystemRegistrator());
}

@Mod.EventHandler
Expand Down
45 changes: 21 additions & 24 deletions src/main/java/com/blueweabo/mutecore/MuTENetwork.java
Original file line number Diff line number Diff line change
@@ -1,42 +1,36 @@
package com.blueweabo.mutecore;

import java.io.IOException;
import java.util.List;

import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.network.NetHandlerPlayClient;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetHandlerPlayServer;
import net.minecraft.network.PacketBuffer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraft.world.chunk.Chunk;

import org.jetbrains.annotations.Nullable;

import com.blueweabo.mutecore.api.block.MultiTileEntityBlock;
import com.blueweabo.mutecore.api.data.Coordinates;
import com.blueweabo.mutecore.api.data.WorldStateValidator;
import com.blueweabo.mutecore.api.gui.ComponentData;
import com.blueweabo.mutecore.api.registry.MultiTileContainer;
import com.blueweabo.mutecore.api.registry.MultiTileEntityRegistry;
import com.blueweabo.mutecore.api.tile.MultiTileEntity;
import com.cleanroommc.modularui.factory.GuiManager;
import com.cleanroommc.modularui.network.IPacket;
import com.cleanroommc.modularui.network.NetworkHandler;

import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.network.internal.FMLProxyPacket;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper;
import cpw.mods.fml.relauncher.Side;
import dev.dominion.ecs.api.Entity;
import dev.dominion.ecs.engine.IntEntity;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageCodec;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.network.NetHandlerPlayClient;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetHandlerPlayServer;
import net.minecraft.network.PacketBuffer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraft.world.chunk.Chunk;

public class MuTENetwork {

Expand Down Expand Up @@ -75,8 +69,8 @@ public static void sentToPlayersInRange(IPacket packet, World world, int x, int
}
Chunk tChunk = world.getChunkFromBlockCoords(x, z);
if (player.getServerForPlayer()
.getPlayerManager()
.isPlayerWatchingChunk(player, tChunk.xPosition, tChunk.zPosition)) {
.getPlayerManager()
.isPlayerWatchingChunk(player, tChunk.xPosition, tChunk.zPosition)) {
sendToPlayer(packet, player);
}
}
Expand Down Expand Up @@ -113,16 +107,19 @@ public void read(PacketBuffer buf) throws IOException {

@Override
public @Nullable IPacket executeClient(NetHandlerPlayClient handler) {
Coordinates coords = new Coordinates(0,0,0);
Coordinates coords = new Coordinates(0, 0, 0);
coords.load(data);
IBlockAccess world = Minecraft.getMinecraft().theWorld;
Block bl = world .getBlock(coords.getX(), coords.getY(), coords.getZ());
Block bl = world.getBlock(coords.getX(), coords.getY(), coords.getZ());
if (!(bl instanceof MultiTileEntityBlock mbl)) return null;
TileEntity te = world.getTileEntity(coords.getX(), coords.getY(), coords.getZ());
if (!(te instanceof MultiTileEntity mute)) return null;
MultiTileEntityRegistry registry = mbl.getRegistry();
MultiTileContainer container = registry.getMultiTileContainer(data.getCompoundTag("idData").getInteger("i"));
MultiTileContainer container = registry.getMultiTileContainer(
data.getCompoundTag("idData")
.getInteger("i"));
Entity entity = container.createNewEntity();
entity.add(coords);
Object[] components = ((IntEntity) entity).getComponentArray();
for (int i = 0; i < components.length; i++) {
if (!(components[i] instanceof WorldStateValidator validator)) continue;
Expand Down
7 changes: 3 additions & 4 deletions src/main/java/com/blueweabo/mutecore/SystemRegistrator.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,12 @@
import com.blueweabo.mutecore.api.data.WorldStateValidator;
import com.blueweabo.mutecore.api.gui.MultiTileEntityGuiFactory;
import com.blueweabo.mutecore.api.registry.EventRegistry;
import com.blueweabo.mutecore.api.registry.PlayerInteractionEvent;
import com.blueweabo.mutecore.api.registry.MultiTileContainer.Id;
import com.blueweabo.mutecore.api.registry.PlayerInteractionEvent;
import com.blueweabo.mutecore.api.utils.PlayerHelper;
import com.cleanroommc.modularui.factory.TileEntityGuiFactory;

import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.TickEvent;
import dev.dominion.ecs.api.Composition;
import dev.dominion.ecs.api.Entity;
import dev.dominion.ecs.api.Results;
import dev.dominion.ecs.api.Scheduler;
Expand Down Expand Up @@ -43,7 +41,8 @@ public static void registerGUISystem() {
* Useful if one needs to generate their own system
*/
public static void registerOtherSystem() {
EventRegistry.registerPlayerInteractionEvent(new PlayerInteractionEvent(0, (p, e) -> PlayerHelper.isRealPlayer(p) ? new GUIEvent(p) : null));
EventRegistry.registerPlayerInteractionEvent(
new PlayerInteractionEvent(0, (p, e) -> PlayerHelper.isRealPlayer(p) ? new GUIEvent(p) : null));
SYSTEMS.schedule(() -> {
Results<Results.With1<GUIEvent>> results = MuTECore.ENGINE.findEntitiesWith(GUIEvent.class);
for (Results.With1<GUIEvent> result : results) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,25 @@
import java.util.ArrayList;
import java.util.List;

import org.jetbrains.annotations.ApiStatus.Internal;

import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.FakePlayer;
import net.minecraftforge.common.util.ForgeDirection;

import org.jetbrains.annotations.ApiStatus.Internal;

import com.blueweabo.mutecore.MuTECore;
import com.blueweabo.mutecore.MuTENetwork;
import com.blueweabo.mutecore.MuTENetwork.MuTEPacket;
import com.blueweabo.mutecore.api.data.Coordinates;
import com.blueweabo.mutecore.api.registry.EventRegistry;
import com.blueweabo.mutecore.api.registry.MultiTileEntityRegistry;
Expand Down Expand Up @@ -73,6 +74,13 @@ public void onNeighborChange(IBlockAccess world, int x, int y, int z, int tileX,
public boolean onBlockActivated(World worldIn, int x, int y, int z, EntityPlayer player, int side, float subX,
float subY, float subZ) {
TileEntity te = worldIn.getTileEntity(x, y, z);
if (player instanceof EntityPlayerMP playermp) {
MuTEPacket packet = new MuTEPacket();
NBTTagCompound nbt = new NBTTagCompound();
te.writeToNBT(nbt);
packet.setComponentData(nbt);
MuTENetwork.sendToPlayer(packet, playermp);
}
if (!(te instanceof MultiTileEntity mute)) return false;
Object eventComponent = null;

Expand All @@ -81,8 +89,10 @@ public boolean onBlockActivated(World worldIn, int x, int y, int z, EntityPlayer
if (eventComponent != null) break;
}
if (eventComponent == null) return false;
if (mute.getEntity().has(eventComponent.getClass())) return false;
mute.getEntity().add(eventComponent);
if (mute.getEntity()
.has(eventComponent.getClass())) return false;
mute.getEntity()
.add(eventComponent);
return true;
}

Expand All @@ -99,7 +109,8 @@ public void onBlockAdded(World worldIn, int x, int y, int z) {
super.onBlockAdded(worldIn, x, y, z);
TileEntity te = worldIn.getTileEntity(x, y, z);
if (!(te instanceof MultiTileEntity mute)) return;
mute.getEntity().add(new Coordinates(x, y, z));
mute.getEntity()
.add(new Coordinates(x, y, z));
}

@Override
Expand Down
4 changes: 3 additions & 1 deletion src/main/java/com/blueweabo/mutecore/api/data/Direction.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ public void save(NBTTagCompound nbt) {

@Override
public void load(NBTTagCompound nbt) {
direction = ForgeDirection.getOrientation(nbt.getCompoundTag("direction").getInteger("i"));
direction = ForgeDirection.getOrientation(
nbt.getCompoundTag("direction")
.getInteger("i"));
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
package com.blueweabo.mutecore.api.gui;

import java.io.Serializable;

import com.cleanroommc.modularui.factory.PosGuiData;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;

import com.cleanroommc.modularui.factory.PosGuiData;

public class ComponentData extends PosGuiData {

private NBTTagCompound componentData;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,18 @@

import javax.annotation.Nonnull;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.PacketBuffer;

import org.jetbrains.annotations.NotNull;

import com.blueweabo.mutecore.MuTECore;
import com.cleanroommc.modularui.api.IGuiHolder;
import com.cleanroommc.modularui.factory.AbstractUIFactory;
import com.cleanroommc.modularui.factory.GuiManager;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.PacketBuffer;

public class MultiTileEntityGuiFactory extends AbstractUIFactory<ComponentData> {

public static MultiTileEntityGuiFactory INSTANCE = new MultiTileEntityGuiFactory();
Expand Down Expand Up @@ -66,5 +66,4 @@ public void writeGuiData(ComponentData guiData, PacketBuffer buffer) {
return Objects.requireNonNull(castGuiHolder(data.getTileEntity()));
}


}
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.blueweabo.mutecore.api.registry;

import org.jetbrains.annotations.ApiStatus.Internal;

import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.util.IIcon;

import org.jetbrains.annotations.ApiStatus.Internal;

@Internal
public class IconContainer {

Expand Down
Loading

0 comments on commit 769bff9

Please sign in to comment.