Horrible quick port of gui handling, tiles still need fixing first tho
This commit is contained in:
parent
db3a6f2c7e
commit
4d32e6e292
3 changed files with 204 additions and 2 deletions
|
@ -24,10 +24,54 @@
|
|||
|
||||
package techreborn.client;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.gui.inventory.GuiContainer;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.TextComponentString;
|
||||
import net.minecraft.world.IInteractionObject;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.ExtensionPoint;
|
||||
import net.minecraftforge.fml.ModLoadingContext;
|
||||
import net.minecraftforge.fml.network.FMLPlayMessages;
|
||||
import net.minecraftforge.fml.network.NetworkHooks;
|
||||
import reborncore.api.tile.IMachineGuiHandler;
|
||||
import reborncore.client.containerBuilder.IContainerProvider;
|
||||
import techreborn.client.container.ContainerDestructoPack;
|
||||
import techreborn.tiles.*;
|
||||
import techreborn.tiles.fusionReactor.TileFusionControlComputer;
|
||||
import techreborn.tiles.generator.*;
|
||||
import techreborn.tiles.generator.advanced.TileDieselGenerator;
|
||||
import techreborn.tiles.generator.advanced.TileGasTurbine;
|
||||
import techreborn.tiles.generator.advanced.TileSemiFluidGenerator;
|
||||
import techreborn.tiles.generator.advanced.TileThermalGenerator;
|
||||
import techreborn.tiles.generator.basic.TileSolidFuelGenerator;
|
||||
import techreborn.tiles.machine.iron.TileIronAlloyFurnace;
|
||||
import techreborn.tiles.machine.iron.TileIronFurnace;
|
||||
import techreborn.tiles.machine.multiblock.*;
|
||||
import techreborn.tiles.machine.tier1.*;
|
||||
import techreborn.tiles.storage.TileAdjustableSU;
|
||||
import techreborn.tiles.storage.TileHighVoltageSU;
|
||||
import techreborn.tiles.storage.TileLowVoltageSU;
|
||||
import techreborn.tiles.storage.TileMediumVoltageSU;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Arrays;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.function.Supplier;
|
||||
import techreborn.client.gui.*;
|
||||
import techreborn.tiles.storage.idsu.TileInterdimensionalSU;
|
||||
import techreborn.tiles.storage.lesu.TileLapotronicSU;
|
||||
|
||||
public enum EGui implements IMachineGuiHandler {
|
||||
|
||||
|
@ -81,10 +125,154 @@ public enum EGui implements IMachineGuiHandler {
|
|||
this.containerBuilder = containerBuilder;
|
||||
}
|
||||
|
||||
static {
|
||||
ModLoadingContext.get().registerExtensionPoint(ExtensionPoint.GUIFACTORY, ()-> EGui::getClientGuiElement);
|
||||
}
|
||||
|
||||
public static GuiContainer getClientGuiElement(FMLPlayMessages.OpenContainer msg) {
|
||||
EGui gui = byID(msg.getId());
|
||||
EntityPlayer player = Minecraft.getInstance().player;
|
||||
BlockPos pos = msg.getAdditionalData().readBlockPos();
|
||||
TileEntity tile = player.world.getTileEntity(pos);
|
||||
|
||||
switch (gui) {
|
||||
case AESU:
|
||||
return new GuiAESU(player, (TileAdjustableSU) tile);
|
||||
case ALLOY_FURNACE:
|
||||
return new GuiAlloyFurnace(player, (TileIronAlloyFurnace) tile);
|
||||
case ALLOY_SMELTER:
|
||||
return new GuiAlloySmelter(player, (TileAlloySmelter) tile);
|
||||
case ASSEMBLING_MACHINE:
|
||||
return new GuiAssemblingMachine(player, (TileAssemblingMachine) tile);
|
||||
case LOW_VOLTAGE_SU:
|
||||
return new GuiBatbox(player, (TileLowVoltageSU) tile);
|
||||
case BLAST_FURNACE:
|
||||
return new GuiBlastFurnace(player, (TileIndustrialBlastFurnace) tile);
|
||||
case CENTRIFUGE:
|
||||
return new GuiCentrifuge(player, (TileIndustrialCentrifuge) tile);
|
||||
case CHARGEBENCH:
|
||||
return new GuiChargeBench(player, (TileChargeOMat) tile);
|
||||
case CHEMICAL_REACTOR:
|
||||
return new GuiChemicalReactor(player, (TileChemicalReactor) tile);
|
||||
case CHUNK_LOADER:
|
||||
return new GuiChunkLoader(player, (TileChunkLoader) tile);
|
||||
case COMPRESSOR:
|
||||
return new GuiCompressor(player, (TileCompressor) tile);
|
||||
case DESTRUCTOPACK:
|
||||
return new GuiDestructoPack(new ContainerDestructoPack(player));
|
||||
case DIESEL_GENERATOR:
|
||||
return new GuiDieselGenerator(player, (TileDieselGenerator) tile);
|
||||
case DIGITAL_CHEST:
|
||||
return new GuiDigitalChest(player, (TileDigitalChest) tile);
|
||||
case ELECTRIC_FURNACE:
|
||||
return new GuiElectricFurnace(player, (TileElectricFurnace) tile);
|
||||
case EXTRACTOR:
|
||||
return new GuiExtractor(player, (TileExtractor) tile);
|
||||
case FUSION_CONTROLLER:
|
||||
return new GuiFusionReactor(player, (TileFusionControlComputer) tile);
|
||||
case GAS_TURBINE:
|
||||
return new GuiGasTurbine(player, (TileGasTurbine) tile);
|
||||
case GENERATOR:
|
||||
return new GuiGenerator(player, (TileSolidFuelGenerator) tile);
|
||||
case GRINDER:
|
||||
return new GuiGrinder(player, (TileGrinder) tile);
|
||||
case IDSU:
|
||||
return new GuiIDSU(player, (TileInterdimensionalSU) tile);
|
||||
case IMPLOSION_COMPRESSOR:
|
||||
return new GuiImplosionCompressor(player, (TileImplosionCompressor) tile);
|
||||
case INDUSTRIAL_ELECTROLYZER:
|
||||
return new GuiIndustrialElectrolyzer(player, (TileIndustrialElectrolyzer) tile);
|
||||
case INDUSTRIAL_GRINDER:
|
||||
return new GuiIndustrialGrinder(player, (TileIndustrialGrinder) tile);
|
||||
case IRON_FURNACE:
|
||||
return new GuiIronFurnace(player, (TileIronFurnace) tile);
|
||||
case LESU:
|
||||
return new GuiLESU(player, (TileLapotronicSU) tile);
|
||||
case MATTER_FABRICATOR:
|
||||
return new GuiMatterFabricator(player, (TileMatterFabricator) tile);
|
||||
case MEDIUM_VOLTAGE_SU:
|
||||
return new GuiMFE(player, (TileMediumVoltageSU) tile);
|
||||
case HIGH_VOLTAGE_SU:
|
||||
return new GuiMFSU(player, (TileHighVoltageSU) tile);
|
||||
case QUANTUM_CHEST:
|
||||
return new GuiQuantumChest(player, (TileQuantumChest) tile);
|
||||
case QUANTUM_TANK:
|
||||
return new GuiQuantumTank(player, (TileQuantumTank) tile);
|
||||
case RECYCLER:
|
||||
return new GuiRecycler(player, (TileRecycler) tile);
|
||||
case ROLLING_MACHINE:
|
||||
return new GuiRollingMachine(player, (TileRollingMachine) tile);
|
||||
case SAWMILL:
|
||||
return new GuiIndustrialSawmill(player, (TileIndustrialSawmill) tile);
|
||||
case SCRAPBOXINATOR:
|
||||
return new GuiScrapboxinator(player, (TileScrapboxinator) tile);
|
||||
case SEMIFLUID_GENERATOR:
|
||||
return new GuiSemifluidGenerator(player, (TileSemiFluidGenerator) tile);
|
||||
case THERMAL_GENERATOR:
|
||||
return new GuiThermalGenerator(player, (TileThermalGenerator) tile);
|
||||
case VACUUM_FREEZER:
|
||||
return new GuiVacuumFreezer(player, (TileVacuumFreezer) tile);
|
||||
case AUTO_CRAFTING_TABLE:
|
||||
return new GuiAutoCrafting(player, (TileAutoCraftingTable) tile);
|
||||
case PLASMA_GENERATOR:
|
||||
return new GuiPlasmaGenerator(player, (TilePlasmaGenerator) tile);
|
||||
case DISTILLATION_TOWER:
|
||||
return new GuiDistillationTower(player, (TileDistillationTower) tile);
|
||||
case FLUID_REPLICATOR:
|
||||
return new GuiFluidReplicator(player, (TileFluidReplicator) tile);
|
||||
default:
|
||||
throw new RuntimeException("No gui found for " + msg.getId());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public static EGui byID(ResourceLocation resourceLocation){
|
||||
return Arrays.stream(values())
|
||||
.filter(eGui -> eGui.name().toLowerCase().equals(resourceLocation.toString()))
|
||||
.findFirst()
|
||||
.orElseThrow(() -> new RuntimeException("Failed to find gui for " + resourceLocation));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void open(EntityPlayer player, BlockPos pos, World world) {
|
||||
if(!world.isRemote){
|
||||
throw new UnsupportedOperationException("fix opening guis");
|
||||
EGui gui = this;
|
||||
NetworkHooks.openGui((EntityPlayerMP) player, new IInteractionObject() {
|
||||
@Override
|
||||
public Container createContainer(InventoryPlayer playerInventory, EntityPlayer playerIn) {
|
||||
TileEntity tileEntity = playerIn.world.getTileEntity(pos);
|
||||
if (tileEntity instanceof IContainerProvider) {
|
||||
return ((IContainerProvider) tileEntity).createContainer(player);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGuiID() {
|
||||
return gui.name().toLowerCase();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ITextComponent getName() {
|
||||
return new TextComponentString(gui.name().toLowerCase());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCustomName() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public ITextComponent getCustomName() {
|
||||
return null;
|
||||
}
|
||||
}, new Consumer<PacketBuffer>() {
|
||||
@Override
|
||||
public void accept(PacketBuffer packetBuffer) {
|
||||
packetBuffer.writeBlockPos(pos);
|
||||
}
|
||||
});
|
||||
//player.openGui(TechReborn.INSTANCE, this.ordinal(), world, pos.getX(), pos.getY(), pos.getZ());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import net.minecraft.block.Block;
|
|||
import net.minecraft.inventory.EntityEquipmentSlot;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.RegistryEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
|
@ -20,6 +21,7 @@ import techreborn.config.ConfigTechReborn;
|
|||
import techreborn.init.TRArmorMaterial;
|
||||
import techreborn.init.TRContent;
|
||||
import techreborn.init.TRContent.*;
|
||||
import techreborn.init.TRTileEntities;
|
||||
import techreborn.init.TRToolTeir;
|
||||
import techreborn.itemblocks.ItemBlockRubberSapling;
|
||||
import techreborn.items.DynamicCell;
|
||||
|
@ -50,6 +52,7 @@ import techreborn.items.tool.vanilla.ItemTRSword;
|
|||
import techreborn.utils.InitUtils;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/**
|
||||
* @author drcrazy
|
||||
|
@ -195,6 +198,11 @@ public class RegistryEventHandler {
|
|||
TechReborn.LOGGER.debug("TechReborns Items Loaded");
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void registerTiles(RegistryEvent.Register<TileEntityType<?>> event) {
|
||||
TRTileEntities.TYPES.forEach(tileEntityType -> event.getRegistry().register(tileEntityType));
|
||||
}
|
||||
|
||||
// @SubscribeEvent(priority = EventPriority.LOW)//LOW is used as we want it to load as late as possible, but before crafttweaker
|
||||
// public static void registerRecipes(RegistryEvent.Register<IRecipe> event) {
|
||||
// //Register ModRecipes
|
||||
|
|
|
@ -31,6 +31,7 @@ import net.minecraft.tileentity.TileEntityType;
|
|||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.datafix.DataFixesManager;
|
||||
import net.minecraft.util.datafix.TypeReferences;
|
||||
import net.minecraft.util.registry.IRegistry;
|
||||
import reborncore.common.tile.TileMachineBase;
|
||||
import techreborn.tiles.*;
|
||||
import techreborn.tiles.cable.TileCable;
|
||||
|
@ -58,6 +59,8 @@ import techreborn.tiles.transformers.TileHVTransformer;
|
|||
import techreborn.tiles.transformers.TileLVTransformer;
|
||||
import techreborn.tiles.transformers.TileMVTransformer;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class TRTileEntities {
|
||||
|
@ -121,8 +124,10 @@ public class TRTileEntities {
|
|||
public static final TileEntityType ALARM = register(TileAlarm.class, "alarm");
|
||||
public static final TileEntityType FLUID_REPLICATOR = register(TileFluidReplicator.class, "fluid_replicator");
|
||||
|
||||
public static List<TileEntityType<?>> TYPES = new ArrayList<>();
|
||||
|
||||
public static <T extends TileEntity> TileEntityType<T> register(Class<T> tClass, String name) {
|
||||
return register(new ResourceLocation("techrebonr", name).toString(), TileEntityType.Builder.create(() -> {
|
||||
return register(new ResourceLocation("techrebon", name).toString(), TileEntityType.Builder.create(() -> {
|
||||
//TODO clean this up
|
||||
try {
|
||||
return tClass.newInstance();
|
||||
|
@ -134,6 +139,7 @@ public class TRTileEntities {
|
|||
|
||||
public static <T extends TileEntity> TileEntityType<T> register(String id, TileEntityType.Builder<T> builder) {
|
||||
TileEntityType<T> tileEntityType = builder.build(null);
|
||||
tileEntityType.setRegistryName(new ResourceLocation(id));
|
||||
return tileEntityType;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue