Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fusion Changes #241

Merged
merged 8 commits into from
Nov 16, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/main/java/gregtech/api/render/Textures.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ public class Textures {
public static final SimpleCubeRenderer TITANIUM_FIREBOX_ACTIVE = new FullBrightnessSimpleCubeRenderer("casings/firebox/machine_casing_firebox_titanium_active");
public static final SimpleCubeRenderer TUNGSTENSTEEL_FIREBOX = new SimpleCubeRenderer("casings/firebox/machine_casing_firebox_tungstensteel");
public static final SimpleCubeRenderer TUNGSTENSTEEL_FIREBOX_ACTIVE = new FullBrightnessSimpleCubeRenderer("casings/firebox/machine_casing_firebox_tungstensteel_active");
public static final SimpleCubeRenderer FUSION_TEXTURE = new SimpleCubeRenderer("casings/fusion/machine_casing_fusion_glass");
public static final SimpleCubeRenderer ACTIVE_FUSION_TEXTURE = new SimpleCubeRenderer("casings/fusion/machine_casing_fusion_glass_yellow");
public static final SimpleCubeRenderer FUSION_TEXTURE = new SimpleCubeRenderer("casings/fusion/machine_casing_fusion_hatch");
public static final SimpleCubeRenderer ACTIVE_FUSION_TEXTURE = new SimpleCubeRenderer("casings/fusion/machine_casing_fusion_hatch_yellow");

// Simple Sided Cube Renderers
public static final SimpleSidedCubeRenderer STEAM_CASING_BRONZE = new SimpleSidedCubeRenderer("casings/steam/bronze");
Expand Down
9 changes: 6 additions & 3 deletions src/main/java/gregtech/common/CommonProxy.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,10 @@
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.item.*;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemMultiTexture;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.config.Config.Type;
Expand Down Expand Up @@ -89,7 +92,7 @@ public static void registerBlocks(RegistryEvent.Register<Block> event) {
registry.register(TRANSPARENT_CASING);
registry.register(WIRE_COIL);
registry.register(WIRE_COIL2);
registry.register(FUSION_COIL);
registry.register(FUSION_CASING);
registry.register(WARNING_SIGN);
registry.register(GRANITE);
registry.register(MINERAL);
Expand Down Expand Up @@ -139,7 +142,7 @@ public static void registerItems(RegistryEvent.Register<Item> event) {
registry.register(createItemBlock(TRANSPARENT_CASING, VariantItemBlock::new));
registry.register(createItemBlock(WIRE_COIL, VariantItemBlock::new));
registry.register(createItemBlock(WIRE_COIL2, VariantItemBlock::new));
registry.register(createItemBlock(FUSION_COIL, VariantItemBlock::new));
registry.register(createItemBlock(FUSION_CASING, VariantItemBlock::new));
registry.register(createItemBlock(WARNING_SIGN, VariantItemBlock::new));
registry.register(createItemBlock(GRANITE, StoneItemBlock::new));
registry.register(createItemBlock(MINERAL, StoneItemBlock::new));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,31 +9,34 @@

import javax.annotation.Nonnull;

public class BlockFusionCoil extends VariantBlock<BlockFusionCoil.CoilType> {
public class BlockFusionCasing extends VariantActiveBlock<BlockFusionCasing.CasingType> {

public BlockFusionCoil() {
public BlockFusionCasing() {
super(net.minecraft.block.material.Material.IRON);
setTranslationKey("fusion_coil");
setTranslationKey("fusion_casing");
setHardness(5.0f);
setResistance(10.0f);
setSoundType(SoundType.METAL);
setHarvestLevel("wrench", 2);
setDefaultState(getState(CoilType.SUPERCONDUCTOR));
setDefaultState(getState(CasingType.SUPERCONDUCTOR_COIL));
}

@Override
public boolean canCreatureSpawn(@Nonnull IBlockState state, @Nonnull IBlockAccess world, @Nonnull BlockPos pos, @Nonnull EntityLiving.SpawnPlacementType type) {
return false;
}

public enum CoilType implements IStringSerializable {
public enum CasingType implements IStringSerializable {

SUPERCONDUCTOR("superconductor"),
FUSION_COIL("fusion_coil");
SUPERCONDUCTOR_COIL("superconductor_coil"),
FUSION_COIL("fusion_coil"),
FUSION_CASING("fusion_casing"),
FUSION_CASING_MK2("fusion_casing_mk2"),
FUSION_CASING_MK3("fusion_casing_mk3");

private final String name;

CoilType(String name) {
CasingType(String name) {
this.name = name;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,7 @@ public enum MultiblockCasingType implements IStringSerializable {
ENGINE_INTAKE_CASING("engine_intake"),
GRATE_CASING("grate"),
ASSEMBLER_CASING("assembler"),
ASSEMBLY_LINE_CASING("assembly_line"),
FUSION_CASING("fusion"),
FUSION_CASING_MK2("fusion_mk2");
ASSEMBLY_LINE_CASING("assembly_line");

private final String name;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import javax.annotation.ParametersAreNonnullByDefault;

@ParametersAreNonnullByDefault
public class BlockTransparentCasing extends VariantBlock<BlockTransparentCasing.CasingType> {
public class BlockTransparentCasing extends VariantActiveBlock<BlockTransparentCasing.CasingType> {

public BlockTransparentCasing() {
super(Material.IRON);
Expand Down Expand Up @@ -57,7 +57,8 @@ public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAc

public enum CasingType implements IStringSerializable {

REINFORCED_GLASS("reinforced_glass");
REINFORCED_GLASS("reinforced_glass"),
FUSION_GLASS("fusion_glass");

private final String name;

Expand Down
8 changes: 4 additions & 4 deletions src/main/java/gregtech/common/blocks/MetaBlocks.java
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ private MetaBlocks() {
public static BlockTransparentCasing TRANSPARENT_CASING;
public static BlockWireCoil WIRE_COIL;
public static BlockWireCoil2 WIRE_COIL2;
public static BlockFusionCoil FUSION_COIL;
public static BlockFusionCasing FUSION_CASING;
public static BlockWarningSign WARNING_SIGN;
public static HermeticCasings HERMETIC_CASING;

Expand Down Expand Up @@ -153,8 +153,8 @@ public static void init() {
WIRE_COIL.setRegistryName("wire_coil");
WIRE_COIL2 = new BlockWireCoil2();
WIRE_COIL2.setRegistryName("wire_coil2");
FUSION_COIL = new BlockFusionCoil();
FUSION_COIL.setRegistryName("fusion_coil");
FUSION_CASING = new BlockFusionCasing();
FUSION_CASING.setRegistryName("fusion_casing");
WARNING_SIGN = new BlockWarningSign();
WARNING_SIGN.setRegistryName("warning_sign");
HERMETIC_CASING = new HermeticCasings();
Expand Down Expand Up @@ -338,7 +338,7 @@ public static void registerItemModels() {
registerItemModel(TRANSPARENT_CASING);
registerItemModel(WIRE_COIL);
registerItemModel(WIRE_COIL2);
registerItemModel(FUSION_COIL);
registerItemModel(FUSION_CASING);
registerItemModel(WARNING_SIGN);
registerItemModel(HERMETIC_CASING);
registerItemModel(GRANITE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -466,9 +466,9 @@ public static void init() {
COKE_OVEN_HATCH = registerMetaTileEntity(1017, new MetaTileEntityCokeOvenHatch(gregtechId("coke_oven_hatch")));

ASSEMBLY_LINE = registerMetaTileEntity(1018, new MetaTileEntityAssemblyLine(gregtechId("assembly_line")));
FUSION_REACTOR[0] = registerMetaTileEntity(1019, new MetaTileEntityFusionReactor(gregtechId("fusion_reactor.luv"), 6));
FUSION_REACTOR[1] = registerMetaTileEntity(1020, new MetaTileEntityFusionReactor(gregtechId("fusion_reactor.zpm"), 7));
FUSION_REACTOR[2] = registerMetaTileEntity(1021, new MetaTileEntityFusionReactor(gregtechId("fusion_reactor.uv"), 8));
FUSION_REACTOR[0] = registerMetaTileEntity(1019, new MetaTileEntityFusionReactor(gregtechId("fusion_reactor.luv"), GTValues.LuV));
FUSION_REACTOR[1] = registerMetaTileEntity(1020, new MetaTileEntityFusionReactor(gregtechId("fusion_reactor.zpm"), GTValues.ZPM));
FUSION_REACTOR[2] = registerMetaTileEntity(1021, new MetaTileEntityFusionReactor(gregtechId("fusion_reactor.uv"), GTValues.UV));

LARGE_CHEMICAL_REACTOR = registerMetaTileEntity(1022, new MetaTileEntityLargeChemicalReactor(gregtechId("large_chemical_reactor")));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,33 +22,39 @@
import gregtech.api.render.OrientedOverlayRenderer;
import gregtech.api.render.Textures;
import gregtech.api.util.RenderBufferHelper;
import gregtech.core.hooks.BloomRenderLayerHooks;
import gregtech.common.blocks.*;
import gregtech.common.blocks.BlockFusionCasing;
import gregtech.common.blocks.BlockTransparentCasing;
import gregtech.common.blocks.MetaBlocks;
import gregtech.common.metatileentities.MetaTileEntities;
import gregtech.core.hooks.BloomRenderLayerHooks;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.Entity;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.text.*;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.util.text.TextComponentTranslation;
import net.minecraft.world.World;
import net.minecraftforge.client.MinecraftForgeClient;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.items.IItemHandlerModifiable;
import org.lwjgl.opengl.GL11;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.List;

import static gregtech.api.util.RelativeDirection.*;

public class MetaTileEntityFusionReactor extends RecipeMapMultiblockController implements IFastRenderMetaTileEntity {

private final int tier;
Expand Down Expand Up @@ -76,35 +82,36 @@ public MetaTileEntity createMetaTileEntity(MetaTileEntityHolder holder) {
@Override
protected BlockPattern createStructurePattern() {
FactoryBlockPattern.start();
return FactoryBlockPattern.start(LEFT, DOWN, BACK)
.aisle("###############", "######OGO######", "###############")
.aisle("######ICI######", "####GG###GG####", "######ICI######")
.aisle("####CC###CC####", "###E##OSO##E###", "####CC###CC####")
.aisle("###C#######C###", "##EcEC###CEcE##", "###C#######C###")
.aisle("##C#########C##", "#G#E#######E#G#", "##C#########C##")
.aisle("##C#########C##", "#G#C#######C#G#", "##C#########C##")
.aisle("#I###########I#", "O#O#########O#O", "#I###########I#")
.aisle("#C###########C#", "G#C#########C#G", "#C###########C#")
.aisle("#I###########I#", "O#O#########O#O", "#I###########I#")
.aisle("##C#########C##", "#G#C#######C#G#", "##C#########C##")
.aisle("##C#########C##", "#G#E#######E#G#", "##C#########C##")
.aisle("###C#######C###", "##EcEC###CEcE##", "###C#######C###")
.aisle("####CC###CC####", "###E##OCO##E###", "####CC###CC####")
.aisle("######ICI######", "####GG###GG####", "######ICI######")
return FactoryBlockPattern.start()
.aisle("###############", "######OGO######", "###############")
.aisle("######ICI######", "####GGAAAGG####", "######ICI######")
.aisle("####CC###CC####", "###EAAOGOAAE###", "####CC###CC####")
.aisle("###C#######C###", "##EKEG###GEKE##", "###C#######C###")
.aisle("##C#########C##", "#GAE#######EAG#", "##C#########C##")
.aisle("##C#########C##", "#GAG#######GAG#", "##C#########C##")
.aisle("#I###########I#", "OAO#########OAO", "#I###########I#")
.aisle("#C###########C#", "GAG#########GAG", "#C###########C#")
.aisle("#I###########I#", "OAO#########OAO", "#I###########I#")
.aisle("##C#########C##", "#GAG#######GAG#", "##C#########C##")
.aisle("##C#########C##", "#GAE#######EAG#", "##C#########C##")
.aisle("###C#######C###", "##EKEG###GEKE##", "###C#######C###")
.aisle("####CC###CC####", "###EAAOGOAAE###", "####CC###CC####")
.aisle("######ICI######", "####GGAAAGG####", "######ICI######")
.aisle("###############", "######OSO######", "###############")
.where('S', selfPredicate())
.where('G', statePredicate(MetaBlocks.TRANSPARENT_CASING.getState(BlockTransparentCasing.CasingType.REINFORCED_GLASS)).or(statePredicate(getCasingState())))
.where('G', statePredicate(MetaBlocks.TRANSPARENT_CASING.getState(BlockTransparentCasing.CasingType.FUSION_GLASS)).or(statePredicate(getCasingState())))
.where('C', statePredicate(getCasingState()))
.where('c', statePredicate(getCoilState()))
.where('O', statePredicate(getCasingState()).or(abilityPartPredicate(MultiblockAbility.EXPORT_FLUIDS)))
.where('E', statePredicate(getCasingState()).or(tilePredicate((state, tile) -> {
for (int i = tier; i < GTValues.UV + 1; i++) {
for (int i = tier; i <= GTValues.UV; i++) {
if (tile.metaTileEntityId.equals(MetaTileEntities.ENERGY_INPUT_HATCH[i].metaTileEntityId))
return true;
}
return false;
})))
.where('I', statePredicate(getCasingState()).or(abilityPartPredicate(MultiblockAbility.IMPORT_FLUIDS)))
.where('K', statePredicate(getCoilState()))
.where('A', isAirPredicate())
.where('#', (tile) -> true)
.build();
}
Expand All @@ -119,26 +126,19 @@ public ICubeRenderer getBaseTexture(IMultiblockPart sourcePart) {
}

private IBlockState getCasingState() {
switch (tier) {
case 6:
return MetaBlocks.MACHINE_CASING.getState(BlockMachineCasing.MachineCasingType.LuV);
case 7:
return MetaBlocks.MULTIBLOCK_CASING.getState(BlockMultiblockCasing.MultiblockCasingType.FUSION_CASING);
case 8:
default:
return MetaBlocks.MULTIBLOCK_CASING.getState(BlockMultiblockCasing.MultiblockCasingType.FUSION_CASING_MK2);
}
if (tier == GTValues.LuV)
return MetaBlocks.FUSION_CASING.getState(BlockFusionCasing.CasingType.FUSION_CASING);
if (tier == GTValues.ZPM)
return MetaBlocks.FUSION_CASING.getState(BlockFusionCasing.CasingType.FUSION_CASING_MK2);

return MetaBlocks.FUSION_CASING.getState(BlockFusionCasing.CasingType.FUSION_CASING_MK3);
}

private IBlockState getCoilState() {
switch (tier) {
case 6:
return MetaBlocks.FUSION_COIL.getState(BlockFusionCoil.CoilType.SUPERCONDUCTOR);
case 7:
case 8:
default:
return MetaBlocks.FUSION_COIL.getState(BlockFusionCoil.CoilType.FUSION_COIL);
}
if (tier == GTValues.LuV)
return MetaBlocks.FUSION_CASING.getState(BlockFusionCasing.CasingType.SUPERCONDUCTOR_COIL);

return MetaBlocks.FUSION_CASING.getState(BlockFusionCasing.CasingType.FUSION_COIL);
}

@Override
Expand All @@ -156,7 +156,7 @@ private void initializeAbilities() {
this.outputFluidInventory = new FluidTankList(true, getAbilities(MultiblockAbility.EXPORT_FLUIDS));
List<IEnergyContainer> energyInputs = getAbilities(MultiblockAbility.INPUT_ENERGY);
this.inputEnergyContainers = new EnergyContainerList(energyInputs);
long euCapacity = energyInputs.size() * 10000000L * (long) Math.pow(2, tier - 6);
long euCapacity = calculateEnergyStorageFactor(energyInputs.size());
this.energyContainer = new EnergyContainerHandler(this, euCapacity, GTValues.V[tier], 0, 0, 0) {
@Override
public String getName() {
Expand All @@ -165,6 +165,10 @@ public String getName() {
};
}

private long calculateEnergyStorageFactor(int energyInputAmount) {
return energyInputAmount * (long) Math.pow(2, tier - 6) * 10000000L;
}

@Override
protected void updateFormedValid() {
if (!getWorld().isRemote) {
Expand All @@ -178,35 +182,17 @@ protected void updateFormedValid() {

@Override
protected void addDisplayText(List<ITextComponent> textList) {
if (!this.isStructureFormed()) {
textList.add(new TextComponentTranslation("gregtech.multiblock.invalid_structure").setStyle(new Style().setColor(TextFormatting.RED)));
}
if (this.isStructureFormed()) {
if (!this.recipeMapWorkable.isWorkingEnabled()) {
textList.add(new TextComponentTranslation("gregtech.multiblock.work_paused"));
} else if (this.recipeMapWorkable.isActive()) {
textList.add(new TextComponentTranslation("gregtech.multiblock.running"));
int currentProgress;
if (energyContainer.getEnergyCapacity() > 0) {
currentProgress = (int) (this.recipeMapWorkable.getProgressPercent() * 100.0D);
textList.add(new TextComponentTranslation("gregtech.multiblock.progress", currentProgress));
} else {
currentProgress = -this.recipeMapWorkable.getRecipeEUt();
textList.add(new TextComponentTranslation("gregtech.multiblock.generation_eu", currentProgress));
}
} else {
textList.add(new TextComponentTranslation("gregtech.multiblock.idling"));
}

if (this.recipeMapWorkable.isHasNotEnoughEnergy()) {
textList.add(new TextComponentTranslation("gregtech.multiblock.not_enough_energy").setStyle(new Style().setColor(TextFormatting.RED)));
}
}

super.addDisplayText(textList);
textList.add(new TextComponentString("EU: " + this.energyContainer.getEnergyStored() + " / " + this.energyContainer.getEnergyCapacity()));
textList.add(new TextComponentTranslation("gregtech.multiblock.fusion_reactor.heat", heat));
}

@Override
public void addInformation(ItemStack stack, @Nullable World player, List<String> tooltip, boolean advanced) {
super.addInformation(stack, player, tooltip, advanced);
tooltip.add(I18n.format("gregtech.machine.fusion_reactor.capacity", calculateEnergyStorageFactor(16) / 1000000L));
}

@Nonnull
@Override
protected OrientedOverlayRenderer getFrontOverlay() {
Expand Down Expand Up @@ -283,9 +269,9 @@ public void renderMetaTileEntity(double x, double y, double z, float partialTick
if (entity != null) {
buffer.begin(GL11.GL_QUAD_STRIP, DefaultVertexFormats.POSITION_COLOR);
RenderBufferHelper.renderRing(buffer,
x + getFrontFacing().getXOffset() * 5 + 0.5,
x + getFrontFacing().getOpposite().getXOffset() * 7 + 0.5,
y + 0.5,
z + getFrontFacing().getZOffset() * 5 + 0.5,
z + getFrontFacing().getOpposite().getZOffset() * 7 + 0.5,
6, 0.2, 10, 20,
r, g, b, 1, EnumFacing.Axis.Y);
Tessellator.getInstance().draw();
Expand Down
Loading