20w15a
This commit is contained in:
parent
0bf6159801
commit
55f9a5df52
33 changed files with 195 additions and 360 deletions
|
@ -1,177 +0,0 @@
|
|||
/*
|
||||
* This file is part of TechReborn, licensed under the MIT License (MIT).
|
||||
*
|
||||
* Copyright (c) 2020 TechReborn
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package techreborn.client;
|
||||
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.fabricmc.fabric.api.client.screen.ScreenProviderRegistry;
|
||||
import net.fabricmc.fabric.api.container.ContainerProviderRegistry;
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
import net.minecraft.client.gui.screen.ingame.HandledScreen;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import reborncore.RebornCore;
|
||||
import reborncore.client.screen.BuiltScreenHandlerProvider;
|
||||
import techreborn.blockentity.data.DataDrivenBEProvider;
|
||||
import techreborn.blockentity.data.DataDrivenGui;
|
||||
import techreborn.blockentity.generator.PlasmaGeneratorBlockEntity;
|
||||
import techreborn.blockentity.generator.SolarPanelBlockEntity;
|
||||
import techreborn.blockentity.generator.advanced.DieselGeneratorBlockEntity;
|
||||
import techreborn.blockentity.generator.advanced.GasTurbineBlockEntity;
|
||||
import techreborn.blockentity.generator.advanced.SemiFluidGeneratorBlockEntity;
|
||||
import techreborn.blockentity.generator.advanced.ThermalGeneratorBlockEntity;
|
||||
import techreborn.blockentity.generator.basic.SolidFuelGeneratorBlockEntity;
|
||||
import techreborn.blockentity.machine.iron.IronAlloyFurnaceBlockEntity;
|
||||
import techreborn.blockentity.machine.iron.IronFurnaceBlockEntity;
|
||||
import techreborn.blockentity.machine.misc.ChargeOMatBlockEntity;
|
||||
import techreborn.blockentity.machine.multiblock.*;
|
||||
import techreborn.blockentity.machine.tier1.*;
|
||||
import techreborn.blockentity.machine.tier3.ChunkLoaderBlockEntity;
|
||||
import techreborn.blockentity.machine.tier3.IndustrialCentrifugeBlockEntity;
|
||||
import techreborn.blockentity.machine.tier3.MatterFabricatorBlockEntity;
|
||||
import techreborn.blockentity.storage.energy.AdjustableSUBlockEntity;
|
||||
import techreborn.blockentity.storage.energy.HighVoltageSUBlockEntity;
|
||||
import techreborn.blockentity.storage.energy.LowVoltageSUBlockEntity;
|
||||
import techreborn.blockentity.storage.energy.MediumVoltageSUBlockEntity;
|
||||
import techreborn.blockentity.storage.energy.idsu.InterdimensionalSUBlockEntity;
|
||||
import techreborn.blockentity.storage.energy.lesu.LapotronicSUBlockEntity;
|
||||
import techreborn.blockentity.storage.fluid.TankUnitBaseBlockEntity;
|
||||
import techreborn.blockentity.storage.item.StorageUnitBaseBlockEntity;
|
||||
import techreborn.client.gui.*;
|
||||
|
||||
public class GuiHandler {
|
||||
|
||||
public static void register() {
|
||||
|
||||
EGui.stream().forEach(gui -> ContainerProviderRegistry.INSTANCE.registerFactory(gui.getID(), (syncID, identifier, playerEntity, packetByteBuf) -> {
|
||||
final BlockEntity blockEntity = playerEntity.world.getBlockEntity(packetByteBuf.readBlockPos());
|
||||
return ((BuiltScreenHandlerProvider) blockEntity).createScreenHandler(syncID, playerEntity);
|
||||
}));
|
||||
|
||||
RebornCore.clientOnly(() -> () -> EGui.stream().forEach(gui -> ScreenProviderRegistry.INSTANCE.registerFactory(gui.getID(), (syncID, identifier, playerEntity, packetByteBuf) -> getClientGuiElement(EGui.byID(identifier), playerEntity, packetByteBuf.readBlockPos(), syncID))));
|
||||
}
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
private static HandledScreen<?> getClientGuiElement(final EGui gui, final PlayerEntity player, BlockPos pos, int syncID) {
|
||||
final BlockEntity blockEntity = player.world.getBlockEntity(pos);
|
||||
|
||||
if (blockEntity instanceof DataDrivenBEProvider.DataDrivenBlockEntity) {
|
||||
return new DataDrivenGui(syncID, player, (DataDrivenBEProvider.DataDrivenBlockEntity) blockEntity);
|
||||
}
|
||||
|
||||
switch (gui) {
|
||||
case AESU:
|
||||
return new GuiAESU(syncID, player, (AdjustableSUBlockEntity) blockEntity);
|
||||
case ALLOY_FURNACE:
|
||||
return new GuiAlloyFurnace(syncID, player, (IronAlloyFurnaceBlockEntity) blockEntity);
|
||||
case ALLOY_SMELTER:
|
||||
return new GuiAlloySmelter(syncID, player, (AlloySmelterBlockEntity) blockEntity);
|
||||
case ASSEMBLING_MACHINE:
|
||||
return new GuiAssemblingMachine(syncID, player, (AssemblingMachineBlockEntity) blockEntity);
|
||||
case LOW_VOLTAGE_SU:
|
||||
return new GuiBatbox(syncID, player, (LowVoltageSUBlockEntity) blockEntity);
|
||||
case BLAST_FURNACE:
|
||||
return new GuiBlastFurnace(syncID, player, (IndustrialBlastFurnaceBlockEntity) blockEntity);
|
||||
case CENTRIFUGE:
|
||||
return new GuiCentrifuge(syncID, player, (IndustrialCentrifugeBlockEntity) blockEntity);
|
||||
case CHARGEBENCH:
|
||||
return new GuiChargeBench(syncID, player, (ChargeOMatBlockEntity) blockEntity);
|
||||
case CHEMICAL_REACTOR:
|
||||
return new GuiChemicalReactor(syncID, player, (ChemicalReactorBlockEntity) blockEntity);
|
||||
case CHUNK_LOADER:
|
||||
return new GuiChunkLoader(syncID, player, (ChunkLoaderBlockEntity) blockEntity);
|
||||
case COMPRESSOR:
|
||||
return new GuiCompressor(syncID, player, (CompressorBlockEntity) blockEntity);
|
||||
case DIESEL_GENERATOR:
|
||||
return new GuiDieselGenerator(syncID, player, (DieselGeneratorBlockEntity) blockEntity);
|
||||
case ELECTRIC_FURNACE:
|
||||
return new GuiElectricFurnace(syncID, player, (ElectricFurnaceBlockEntity) blockEntity);
|
||||
case EXTRACTOR:
|
||||
return new GuiExtractor(syncID, player, (ExtractorBlockEntity) blockEntity);
|
||||
case FUSION_CONTROLLER:
|
||||
return new GuiFusionReactor(syncID, player, (FusionControlComputerBlockEntity) blockEntity);
|
||||
case GAS_TURBINE:
|
||||
return new GuiGasTurbine(syncID, player, (GasTurbineBlockEntity) blockEntity);
|
||||
case GENERATOR:
|
||||
return new GuiGenerator(syncID, player, (SolidFuelGeneratorBlockEntity) blockEntity);
|
||||
case IDSU:
|
||||
return new GuiIDSU(syncID, player, (InterdimensionalSUBlockEntity) blockEntity);
|
||||
case IMPLOSION_COMPRESSOR:
|
||||
return new GuiImplosionCompressor(syncID, player, (ImplosionCompressorBlockEntity) blockEntity);
|
||||
case INDUSTRIAL_ELECTROLYZER:
|
||||
return new GuiIndustrialElectrolyzer(syncID, player, (IndustrialElectrolyzerBlockEntity) blockEntity);
|
||||
case INDUSTRIAL_GRINDER:
|
||||
return new GuiIndustrialGrinder(syncID, player, (IndustrialGrinderBlockEntity) blockEntity);
|
||||
case IRON_FURNACE:
|
||||
return new GuiIronFurnace(syncID, player, (IronFurnaceBlockEntity) blockEntity);
|
||||
case LESU:
|
||||
return new GuiLESU(syncID, player, (LapotronicSUBlockEntity) blockEntity);
|
||||
case MATTER_FABRICATOR:
|
||||
return new GuiMatterFabricator(syncID, player, (MatterFabricatorBlockEntity) blockEntity);
|
||||
case MEDIUM_VOLTAGE_SU:
|
||||
return new GuiMFE(syncID, player, (MediumVoltageSUBlockEntity) blockEntity);
|
||||
case HIGH_VOLTAGE_SU:
|
||||
return new GuiMFSU(syncID, player, (HighVoltageSUBlockEntity) blockEntity);
|
||||
case STORAGE_UNIT:
|
||||
return new GuiStorageUnit(syncID, player, (StorageUnitBaseBlockEntity) blockEntity);
|
||||
case TANK_UNIT:
|
||||
return new GuiTankUnit(syncID, player, (TankUnitBaseBlockEntity) blockEntity);
|
||||
case RECYCLER:
|
||||
return new GuiRecycler(syncID, player, (RecyclerBlockEntity) blockEntity);
|
||||
case ROLLING_MACHINE:
|
||||
return new GuiRollingMachine(syncID, player, (RollingMachineBlockEntity) blockEntity);
|
||||
case SAWMILL:
|
||||
return new GuiIndustrialSawmill(syncID, player, (IndustrialSawmillBlockEntity) blockEntity);
|
||||
case SCRAPBOXINATOR:
|
||||
return new GuiScrapboxinator(syncID, player, (ScrapboxinatorBlockEntity) blockEntity);
|
||||
case SOLAR_PANEL:
|
||||
return new GuiSolar(syncID, player, (SolarPanelBlockEntity) blockEntity);
|
||||
case SEMIFLUID_GENERATOR:
|
||||
return new GuiSemifluidGenerator(syncID, player, (SemiFluidGeneratorBlockEntity) blockEntity);
|
||||
case THERMAL_GENERATOR:
|
||||
return new GuiThermalGenerator(syncID, player, (ThermalGeneratorBlockEntity) blockEntity);
|
||||
case VACUUM_FREEZER:
|
||||
return new GuiVacuumFreezer(syncID, player, (VacuumFreezerBlockEntity) blockEntity);
|
||||
case AUTO_CRAFTING_TABLE:
|
||||
return new GuiAutoCrafting(syncID, player, (AutoCraftingTableBlockEntity) blockEntity);
|
||||
case PLASMA_GENERATOR:
|
||||
return new GuiPlasmaGenerator(syncID, player, (PlasmaGeneratorBlockEntity) blockEntity);
|
||||
case DISTILLATION_TOWER:
|
||||
return new GuiDistillationTower(syncID, player, (DistillationTowerBlockEntity) blockEntity);
|
||||
case FLUID_REPLICATOR:
|
||||
return new GuiFluidReplicator(syncID, player, (FluidReplicatorBlockEntity) blockEntity);
|
||||
case SOLID_CANNING_MACHINE:
|
||||
return new GuiSolidCanningMachine(syncID, player, (SoildCanningMachineBlockEntity) blockEntity);
|
||||
case WIRE_MILL:
|
||||
return new GuiWireMill(syncID, player, (WireMillBlockEntity) blockEntity);
|
||||
case GREENHOUSE_CONTROLLER:
|
||||
return new GuiGreenhouseController(syncID, player, (GreenhouseControllerBlockEntity) blockEntity);
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -6,15 +6,16 @@ import net.fabricmc.fabric.api.client.screen.ScreenProviderRegistry;
|
|||
import net.fabricmc.fabric.api.container.ContainerFactory;
|
||||
import net.fabricmc.fabric.api.container.ContainerProviderRegistry;
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
import net.minecraft.client.gui.screen.ingame.ContainerScreen;
|
||||
import net.minecraft.client.gui.screen.ingame.HandledScreen;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.network.PacketByteBuf;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.PacketByteBuf;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import reborncore.RebornCore;
|
||||
import reborncore.api.blockentity.IMachineGuiHandler;
|
||||
import reborncore.client.containerBuilder.IContainerProvider;
|
||||
import reborncore.client.screen.BuiltScreenHandlerProvider;
|
||||
import reborncore.client.screen.builder.ScreenHandlerBuilder;
|
||||
import techreborn.blockentity.data.DataDrivenBEProvider;
|
||||
import techreborn.blockentity.data.DataDrivenGui;
|
||||
import techreborn.blockentity.generator.PlasmaGeneratorBlockEntity;
|
||||
|
@ -195,7 +196,7 @@ public final class GuiType<T extends BlockEntity> implements IMachineGuiHandler
|
|||
private void register() {
|
||||
ContainerProviderRegistry.INSTANCE.registerFactory(identifier, (syncID, identifier, playerEntity, packetByteBuf) -> {
|
||||
final BlockEntity blockEntity = playerEntity.world.getBlockEntity(packetByteBuf.readBlockPos());
|
||||
return ((IContainerProvider) blockEntity).createContainer(syncID, playerEntity);
|
||||
return ((BuiltScreenHandlerProvider) blockEntity).createScreenHandler(syncID, playerEntity);
|
||||
});
|
||||
RebornCore.clientOnly(() -> () -> ScreenProviderRegistry.INSTANCE.registerFactory(identifier, getFactory()));
|
||||
}
|
||||
|
@ -205,11 +206,11 @@ public final class GuiType<T extends BlockEntity> implements IMachineGuiHandler
|
|||
}
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
public interface GuiFactory<T extends BlockEntity> extends ContainerFactory<ContainerScreen> {
|
||||
ContainerScreen<?> create(int syncId, PlayerEntity playerEntity, T blockEntity);
|
||||
public interface GuiFactory<T extends BlockEntity> extends ContainerFactory<HandledScreen> {
|
||||
HandledScreen<?> create(int syncId, PlayerEntity playerEntity, T blockEntity);
|
||||
|
||||
@Override
|
||||
default ContainerScreen create(int syncId, Identifier identifier, PlayerEntity playerEntity, PacketByteBuf packetByteBuf) {
|
||||
default HandledScreen create(int syncId, Identifier identifier, PlayerEntity playerEntity, PacketByteBuf packetByteBuf) {
|
||||
//noinspection unchecked
|
||||
T blockEntity = (T) playerEntity.world.getBlockEntity(packetByteBuf.readBlockPos());
|
||||
return create(syncId, playerEntity, blockEntity);
|
||||
|
|
|
@ -45,7 +45,7 @@ public class NukeRenderer extends EntityRenderer<EntityNukePrimed> {
|
|||
|
||||
public NukeRenderer(EntityRenderDispatcher renderManager) {
|
||||
super(renderManager);
|
||||
this.shadowSize = 0.5F;
|
||||
this.shadowRadius = 0.5F;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue