Merge branch 'HbmMods:master' into master

This commit is contained in:
Vaern 2022-01-29 22:07:37 -08:00 committed by GitHub
commit a2ee16b02a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
47 changed files with 1058 additions and 375 deletions

View File

@ -1,6 +1,5 @@
package api.hbm.energy;
import com.hbm.blocks.ModBlocks;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher;

View File

@ -8,8 +8,6 @@ public interface IBlockMultiPass {
public int getPasses();
public int getColorFromPass(IBlockAccess world, int x, int y, int z, boolean inv);
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
public static int getRenderType() {
return renderID;

View File

@ -904,6 +904,9 @@ public class ModBlocks {
public static Block machine_deuterium_extractor;
public static Block machine_deuterium_tower;
public static Block machine_liquefactor;
public static Block machine_solidifier;
public static Block machine_chungus;
public static Block machine_condenser;
public static Block machine_tower_small;
@ -1675,7 +1678,7 @@ public class ModBlocks {
therm_endo = new BombThermo(Material.iron).setBlockName("therm_endo").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F);
therm_exo = new BombThermo(Material.iron).setBlockName("therm_exo").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F);
emp_bomb = new BombFloat(Material.iron).setBlockName("emp_bomb").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F);
det_cord = new ExplosiveCharge(Material.iron).setBlockName("det_cord").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_cord");
det_cord = new DetCord(Material.iron).setBlockName("det_cord").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_cord");
det_charge = new ExplosiveCharge(Material.iron).setBlockName("det_charge").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_charge");
det_nuke = new ExplosiveCharge(Material.iron).setBlockName("det_nuke").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_nuke");
det_miner = new DetMiner(Material.iron, RefStrings.MODID + ":det_miner_top").setBlockName("det_miner").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_miner_side");
@ -2062,6 +2065,8 @@ public class ModBlocks {
machine_deuterium_extractor = new MachineDeuteriumExtractor(Material.iron).setBlockName("machine_deuterium_extractor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_deuterium_extractor_side");
machine_deuterium_tower = new DeuteriumTower(Material.iron).setBlockName("machine_deuterium_tower").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete");
machine_liquefactor = new MachineLiquefactor().setBlockName("machine_liquefactor").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine");
anvil_iron = new NTMAnvil(Material.iron, 1).setBlockName("anvil_iron").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_iron");
anvil_lead = new NTMAnvil(Material.iron, 1).setBlockName("anvil_lead").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_lead");
anvil_steel = new NTMAnvil(Material.iron, 2).setBlockName("anvil_steel").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_steel");
@ -2074,7 +2079,7 @@ public class ModBlocks {
anvil_osmiridium = new NTMAnvil(Material.iron, 8).setBlockName("anvil_osmiridium").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_osmiridium");
anvil_murky = new NTMAnvil(Material.iron, 1916169).setBlockName("anvil_murky").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_steel");
machine_deaerator = new MachineDeaerator(Material.iron).setBlockName("machine_deaerator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_deaerator");
machine_deaerator = new MachineDeaerator(Material.iron).setBlockName("machine_deaerator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine");
machine_waste_drum = new WasteDrum(Material.iron).setBlockName("machine_waste_drum").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":waste_drum");
machine_storage_drum = new StorageDrum(Material.iron, guiID_storage_drum).setBlockName("machine_storage_drum").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_storage_drum");
@ -2941,6 +2946,7 @@ public class ModBlocks {
GameRegistry.registerBlock(machine_tower_large, machine_tower_large.getUnlocalizedName());
GameRegistry.registerBlock(machine_deuterium_extractor, machine_deuterium_extractor.getUnlocalizedName());
GameRegistry.registerBlock(machine_deuterium_tower, machine_deuterium_tower.getUnlocalizedName());
GameRegistry.registerBlock(machine_liquefactor, ItemBlockBase.class, machine_liquefactor.getUnlocalizedName());
GameRegistry.registerBlock(machine_deaerator, machine_deaerator.getUnlocalizedName());
GameRegistry.registerBlock(machine_waste_drum, machine_waste_drum.getUnlocalizedName());
GameRegistry.registerBlock(machine_storage_drum, machine_storage_drum.getUnlocalizedName());

View File

@ -1,8 +1,5 @@
package com.hbm.blocks.bomb;
import com.hbm.blocks.ModBlocks;
import com.hbm.interfaces.IBomb.BombReturnCode;
import cpw.mods.fml.client.registry.RenderingRegistry;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
@ -12,7 +9,7 @@ import net.minecraft.world.World;
public class DetCord extends Block implements IDetConnectible {
protected DetCord(Material p_i45394_1_) {
public DetCord(Material p_i45394_1_) {
super(p_i45394_1_);
}

View File

@ -4,9 +4,7 @@ import com.hbm.tileentity.machine.TileEntityConverterHeRf;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.world.World;
public class BlockConverterHeRf extends BlockContainer {
@ -19,26 +17,4 @@ public class BlockConverterHeRf extends BlockContainer {
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
return new TileEntityConverterHeRf();
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
if(world.isRemote)
{
return true;
} else if(!player.isSneaking())
{
TileEntityConverterHeRf entity = (TileEntityConverterHeRf) world.getTileEntity(x, y, z);
if(entity != null)
{
player.addChatComponentMessage(new ChatComponentText("Note: Buffer may not accuratly represent current conversion rate, keep tact rates in mind."));
player.addChatComponentMessage(new ChatComponentText("HE: " + (entity.buf / 4)));
player.addChatComponentMessage(new ChatComponentText("RF: " + entity.buf));
//FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_converter_he_rf, world, x, y, z);
}
return true;
} else {
return false;
}
}
}

View File

@ -25,7 +25,21 @@ public class MachineDeaerator extends BlockDummyable {
@Override
public int getOffset() {
return 4;
}
@Override
public int getRenderType() {
return 0;
}
@Override
public boolean isOpaqueCube() {
return true;
}
@Override
public boolean renderAsNormalBlock() {
return true;
}
}

View File

@ -0,0 +1,98 @@
package com.hbm.blocks.machine;
import java.util.List;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.TileEntityMachineLiquefactor;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class MachineLiquefactor extends BlockDummyable implements ITooltipProvider {
public MachineLiquefactor() {
super(Material.iron);
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
if(meta >= 12)
return new TileEntityMachineLiquefactor();
if(meta >= extra)
return new TileEntityProxyCombo(true, true, true);
return null;
}
@Override
public int[] getDimensions() {
return new int[] {2, 0, 1, 1, 1, 1};
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
if(world.isRemote) {
return true;
} else if(!player.isSneaking()) {
int[] pos = this.findCore(world, x, y, z);
if(pos == null)
return false;
FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]);
return true;
} else {
return true;
}
}
@Override
public int getOffset() {
return 1;
}
@Override
public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
super.fillSpace(world, x, y, z, dir, o);
x = x + dir.offsetX * o;
z = z + dir.offsetZ * o;
this.makeExtra(world, x, y + 2, z);
this.makeExtra(world, x + 1, y + 1, z);
this.makeExtra(world, x - 1, y + 1, z);
this.makeExtra(world, x, y + 1, z + 1);
this.makeExtra(world, x, y + 1, z - 1);
}
@Override
public int getRenderType() {
return 0;
}
@Override
public boolean isOpaqueCube() {
return true;
}
@Override
public boolean renderAsNormalBlock() {
return true;
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
//list.add(EnumChatFormatting.YELLOW + "");
}
}

View File

@ -1,7 +1,6 @@
package com.hbm.blocks.network;
import com.hbm.blocks.IBlockMultiPass;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.render.block.RenderBlockMultipass;
import com.hbm.tileentity.conductor.TileEntityFluidDuctSimple;
@ -10,7 +9,6 @@ import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.init.Blocks;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
@ -52,14 +50,12 @@ public class BlockFluidDuctSolid extends BlockContainer implements IBlockMultiPa
}
@Override
public int getColorFromPass(IBlockAccess world, int x, int y, int z, boolean inv) {
@SideOnly(Side.CLIENT)
public int colorMultiplier(IBlockAccess world, int x, int y, int z) {
if(RenderBlockMultipass.currentPass == 0)
return 0xffffff;
if(inv)
return Fluids.NONE.getColor();
TileEntityFluidDuctSimple te = (TileEntityFluidDuctSimple) world.getTileEntity(x, y, z);
if(te != null) {

View File

@ -27,6 +27,11 @@ public class GUIHandler implements IGuiHandler {
@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
TileEntity entity = world.getTileEntity(x, y, z);
if(entity instanceof TileEntityMachineLiquefactor) {
return new ContainerLiquefactor(player.inventory, (TileEntityMachineLiquefactor) entity);
}
switch(ID) {
case ModBlocks.guiID_test_difurnace: {
if(entity instanceof TileEntityDiFurnace) {
@ -210,13 +215,6 @@ public class GUIHandler implements IGuiHandler {
return null;
}
case ModBlocks.guiID_converter_he_rf: {
if(entity instanceof TileEntityConverterHeRf) {
return new ContainerConverterHeRf(player.inventory, (TileEntityConverterHeRf) entity);
}
return null;
}
case ModBlocks.guiID_schrabidium_transmutator: {
if(entity instanceof TileEntityMachineSchrabidiumTransmutator) {
return new ContainerMachineSchrabidiumTransmutator(player.inventory, (TileEntityMachineSchrabidiumTransmutator) entity);
@ -869,6 +867,11 @@ public class GUIHandler implements IGuiHandler {
@Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
TileEntity entity = world.getTileEntity(x, y, z);
if(entity instanceof TileEntityMachineLiquefactor) {
return new GUILiquefactor(player.inventory, (TileEntityMachineLiquefactor) entity);
}
switch(ID) {
case ModBlocks.guiID_test_difurnace: {
if(entity instanceof TileEntityDiFurnace) {
@ -1052,13 +1055,6 @@ public class GUIHandler implements IGuiHandler {
return null;
}
case ModBlocks.guiID_converter_he_rf: {
if(entity instanceof TileEntityConverterHeRf) {
return new GUIConverterHeRf(player.inventory, (TileEntityConverterHeRf) entity);
}
return null;
}
case ModBlocks.guiID_schrabidium_transmutator: {
if(entity instanceof TileEntityMachineSchrabidiumTransmutator) {
return new GUIMachineSchrabidiumTransmutator(player.inventory, (TileEntityMachineSchrabidiumTransmutator) entity);

View File

@ -1,5 +1,7 @@
package com.hbm.handler;
import com.hbm.inventory.gui.GUICalculator;
import cpw.mods.fml.common.FMLCommonHandler;
import org.lwjgl.input.Keyboard;
import com.hbm.extprop.HbmPlayerProps;
@ -16,6 +18,7 @@ public class HbmKeybinds {
public static final String category = "hbm.key";
public static KeyBinding calculatorKey = new KeyBinding(category + ".calculator", Keyboard.KEY_N, category);
public static KeyBinding jetpackKey = new KeyBinding(category + ".toggleBack", Keyboard.KEY_C, category);
public static KeyBinding hudKey = new KeyBinding(category + ".toggleHUD", Keyboard.KEY_V, category);
public static KeyBinding reloadKey = new KeyBinding(category + ".reload", Keyboard.KEY_R, category);
@ -25,12 +28,13 @@ public class HbmKeybinds {
public static KeyBinding craneLeftKey = new KeyBinding(category + ".craneMoveLeft", Keyboard.KEY_LEFT, category);
public static KeyBinding craneRightKey = new KeyBinding(category + ".craneMoveRight", Keyboard.KEY_RIGHT, category);
public static KeyBinding craneLoadKey = new KeyBinding(category + ".craneLoad", Keyboard.KEY_RETURN, category);
public static void register() {
ClientRegistry.registerKeyBinding(calculatorKey);
ClientRegistry.registerKeyBinding(jetpackKey);
ClientRegistry.registerKeyBinding(hudKey);
ClientRegistry.registerKeyBinding(reloadKey);
ClientRegistry.registerKeyBinding(craneUpKey);
ClientRegistry.registerKeyBinding(craneDownKey);
ClientRegistry.registerKeyBinding(craneLeftKey);
@ -40,6 +44,9 @@ public class HbmKeybinds {
@SubscribeEvent
public void keyEvent(KeyInputEvent event) {
if (calculatorKey.getIsKeyPressed()) { // handle the calculator client-side only
FMLCommonHandler.instance().showGuiScreen(new GUICalculator());
}
HbmPlayerProps props = HbmPlayerProps.getData(MainRegistry.proxy.me());

View File

@ -0,0 +1,11 @@
package com.hbm.handler.nei;
import com.hbm.blocks.ModBlocks;
import com.hbm.inventory.recipes.LiquefactionRecipes;
public class LiquefactionHandler extends NEIUniversalHandler {
public LiquefactionHandler() {
super("ntmLiquefaction", "Liquefaction", ModBlocks.machine_liquefactor, LiquefactionRecipes.getRecipes());
}
}

View File

@ -6,6 +6,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import com.hbm.lib.RefStrings;

View File

@ -2,6 +2,7 @@ package com.hbm.hazard;
import static com.hbm.blocks.ModBlocks.*;
import static com.hbm.items.ModItems.*;
import static com.hbm.inventory.OreDictManager.*;
import com.hbm.blocks.ModBlocks;
import com.hbm.hazard.modifier.*;
@ -10,6 +11,7 @@ import com.hbm.hazard.type.*;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemBreedingRod.BreedingRodType;
import com.hbm.items.machine.ItemRTGPelletDepleted.DepletedRTGMaterial;
import com.hbm.items.special.ItemHolotapeImage.EnumHoloImage;
import com.hbm.util.Compat;
import com.hbm.util.Compat.ReikaIsotope;
@ -169,7 +171,7 @@ public class HazardRegistry {
HazardSystem.register(demon_core_closed, makeData(RADIATION, 100_000F));
HazardSystem.register(cell_tritium, makeData(RADIATION, 0.001F));
HazardSystem.register(cell_sas3, new HazardData().addEntry(RADIATION, sas3).addEntry(BLINDING, 3F));
HazardSystem.register(cell_sas3, makeData().addEntry(RADIATION, sas3).addEntry(BLINDING, 3F));
HazardSystem.register(cell_balefire, makeData(RADIATION, 50F));
HazardSystem.register(powder_balefire, makeData(RADIATION, 500F));
HazardSystem.register(egg_balefire_shard, makeData(RADIATION, bf * nugget));
@ -177,8 +179,8 @@ public class HazardRegistry {
HazardSystem.register(nuclear_waste_long, makeData(RADIATION, 5F));
HazardSystem.register(nuclear_waste_long_tiny, makeData(RADIATION, 0.5F));
HazardSystem.register(nuclear_waste_short, new HazardData().addEntry(RADIATION, 30F).addEntry(HOT, 5F));
HazardSystem.register(nuclear_waste_short_tiny, new HazardData().addEntry(RADIATION, 3F).addEntry(HOT, 5F));
HazardSystem.register(nuclear_waste_short, makeData().addEntry(RADIATION, 30F).addEntry(HOT, 5F));
HazardSystem.register(nuclear_waste_short_tiny, makeData().addEntry(RADIATION, 3F).addEntry(HOT, 5F));
HazardSystem.register(nuclear_waste_long_depleted, makeData(RADIATION, 0.5F));
HazardSystem.register(nuclear_waste_long_depleted_tiny, makeData(RADIATION, 0.05F));
HazardSystem.register(nuclear_waste_short_depleted, makeData(RADIATION, 3F));
@ -225,7 +227,7 @@ public class HazardRegistry {
HazardSystem.register(rod_zirnox_plutonium_fuel_depleted, makeData(RADIATION, 100F + 30F));
HazardSystem.register(rod_zirnox_u233_fuel_depleted, makeData(RADIATION, u233 * rod_dual * 100));
HazardSystem.register(rod_zirnox_u235_fuel_depleted, makeData(RADIATION, u235 * rod_dual * 100));
HazardSystem.register(rod_zirnox_les_fuel_depleted, new HazardData().addEntry(RADIATION, saf * rod_dual * 100).addEntry(BLINDING, 5F));
HazardSystem.register(rod_zirnox_les_fuel_depleted, makeData().addEntry(RADIATION, saf * rod_dual * 100).addEntry(BLINDING, 5F));
HazardSystem.register(rod_zirnox_tritium, makeData(RADIATION, 0.001F * rod_dual));
registerOtherWaste(waste_natural_uranium, u * billet * 100);
@ -261,9 +263,9 @@ public class HazardRegistry {
registerOtherWaste(waste_plate_sa326, sa326 * ingot * 100);
registerOtherWaste(waste_plate_ra226be, po210 * nugget * 3);
HazardSystem.register(debris_graphite, new HazardData().addEntry(RADIATION, 70F).addEntry(HOT, 5F));
HazardSystem.register(debris_graphite, makeData().addEntry(RADIATION, 70F).addEntry(HOT, 5F));
HazardSystem.register(debris_metal, makeData(RADIATION, 5F));
HazardSystem.register(debris_fuel, new HazardData().addEntry(RADIATION, 500F).addEntry(HOT, 5F));
HazardSystem.register(debris_fuel, makeData().addEntry(RADIATION, 500F).addEntry(HOT, 5F));
HazardSystem.register(debris_concrete, makeData(RADIATION, 30F));
HazardSystem.register(debris_exchanger, makeData(RADIATION, 25F));
HazardSystem.register(debris_shrapnel, makeData(RADIATION, 2.5F));
@ -297,10 +299,10 @@ public class HazardRegistry {
HazardSystem.register(billet_americium_fuel, makeData(RADIATION, amf * billet));
HazardSystem.register(ingot_americium_fuel, makeData(RADIATION, amf * ingot));
HazardSystem.register(nugget_schrabidium_fuel, new HazardData().addEntry(RADIATION, saf * nugget).addEntry(BLINDING, 5F * nugget));
HazardSystem.register(billet_schrabidium_fuel, new HazardData().addEntry(RADIATION, saf * billet).addEntry(BLINDING, 5F * billet));
HazardSystem.register(ingot_schrabidium_fuel, new HazardData().addEntry(RADIATION, saf * ingot).addEntry(BLINDING, 5F * ingot));
HazardSystem.register(block_schrabidium_fuel, new HazardData().addEntry(RADIATION, saf * block).addEntry(BLINDING, 5F * block));
HazardSystem.register(nugget_schrabidium_fuel, makeData().addEntry(RADIATION, saf * nugget).addEntry(BLINDING, 5F * nugget));
HazardSystem.register(billet_schrabidium_fuel, makeData().addEntry(RADIATION, saf * billet).addEntry(BLINDING, 5F * billet));
HazardSystem.register(ingot_schrabidium_fuel, makeData().addEntry(RADIATION, saf * ingot).addEntry(BLINDING, 5F * ingot));
HazardSystem.register(block_schrabidium_fuel, makeData().addEntry(RADIATION, saf * block).addEntry(BLINDING, 5F * block));
HazardSystem.register(nugget_hes, makeData(RADIATION, saf * nugget));
HazardSystem.register(billet_hes, makeData(RADIATION, saf * billet));
@ -311,7 +313,7 @@ public class HazardRegistry {
HazardSystem.register(ingot_les, makeData(RADIATION, saf * ingot));
HazardSystem.register(billet_balefire_gold, makeData(RADIATION, au198 * billet));
HazardSystem.register(billet_flashlead, new HazardData().addEntry(RADIATION, pb209 * 1.25F * billet).addEntry(HOT, 7F));
HazardSystem.register(billet_flashlead, makeData().addEntry(RADIATION, pb209 * 1.25F * billet).addEntry(HOT, 7F));
HazardSystem.register(billet_po210be, makeData(RADIATION, pobe * billet));
HazardSystem.register(billet_ra226be, makeData(RADIATION, rabe * billet));
HazardSystem.register(billet_pu238be, makeData(RADIATION, pube * billet));
@ -400,7 +402,7 @@ public class HazardRegistry {
HazardSystem.register(ModItems.fallout, makeData(RADIATION, fo * powder));
HazardSystem.register(ModBlocks.fallout, makeData(RADIATION, fo * powder * 2));
HazardSystem.register(ModBlocks.block_fallout, makeData(RADIATION, yc * block * powder_mult));
HazardSystem.register(powder_caesium, new HazardData().addEntry(HYDROACTIVE, 1F).addEntry(HOT, 3F));
HazardSystem.register(powder_caesium, makeData().addEntry(HYDROACTIVE, 1F).addEntry(HOT, 3F));
HazardSystem.register(wire_schrabidium, makeData(RADIATION, sa326 * nugget));
@ -433,22 +435,20 @@ public class HazardRegistry {
HazardSystem.register(mike_core, makeData(RADIATION, u238 * nugget * 10));
HazardSystem.register(tsar_core, makeData(RADIATION, pu239 * nugget * 15));
HazardSystem.register(fleija_propellant, new HazardData().addEntry(RADIATION, 15F).addEntry(EXPLOSIVE, 8F).addEntry(BLINDING, 5F));
HazardSystem.register(fleija_propellant, makeData().addEntry(RADIATION, 15F).addEntry(EXPLOSIVE, 8F).addEntry(BLINDING, 5F));
HazardSystem.register(fleija_core, makeData(RADIATION, 10F));
HazardSystem.register(solinium_propellant, makeData(EXPLOSIVE, 10F));
HazardSystem.register(solinium_core, new HazardData().addEntry(RADIATION, sa327 * nugget * 8).addEntry(BLINDING, 5F));
HazardSystem.register(solinium_core, makeData().addEntry(RADIATION, sa327 * nugget * 8).addEntry(BLINDING, 5F));
HazardSystem.register(nuke_fstbmb, makeData(DIGAMMA, 0.01F));
HazardSystem.register(new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_RESTORED.ordinal()), makeData(DIGAMMA, 1F));
/*
* Blacklist
*/
HazardSystem.blacklist(new ItemStack(ore_uranium));
HazardSystem.blacklist(new ItemStack(ore_gneiss_uranium));
HazardSystem.blacklist(new ItemStack(ore_nether_uranium));
HazardSystem.blacklist(new ItemStack(ore_meteor_uranium));
HazardSystem.blacklist(new ItemStack(ore_thorium));
HazardSystem.blacklist(TH232.ore());
HazardSystem.blacklist(U.ore());
/*

View File

@ -38,7 +38,8 @@ public class HazardSystem {
/*
* For items that should, for whichever reason, be completely exempt from the hazard system.
*/
public static final HashSet<ComparableStack> blacklist = new HashSet();
public static final HashSet<ComparableStack> stackBlacklist = new HashSet();
public static final HashSet<String> dictBlacklist = new HashSet();
/*
* List of hazard transformers, called in order before and after unrolling all the HazardEntries.
*/
@ -67,12 +68,29 @@ public class HazardSystem {
* Prevents the stack from returning any HazardData
* @param stack
*/
public static void blacklist(ItemStack stack) {
blacklist.add(new ComparableStack(stack).makeSingular());
public static void blacklist(Object o) {
if(o instanceof ItemStack) {
stackBlacklist.add(new ComparableStack((ItemStack) o).makeSingular());
} else if(o instanceof String) {
dictBlacklist.add((String) o);
}
}
public static boolean isItemBlacklisted(ItemStack stack) {
return blacklist.contains(new ComparableStack(stack).makeSingular());
if(stackBlacklist.contains(new ComparableStack(stack).makeSingular()))
return true;
int[] ids = OreDictionary.getOreIDs(stack);
for(int id : ids) {
String name = OreDictionary.getOreName(id);
if(dictBlacklist.contains(name))
return true;
}
return false;
}
/**

View File

@ -11,5 +11,4 @@ public class FluidStack {
this.fill = fill;
this.type = type;
}
}

View File

@ -21,6 +21,7 @@ import net.minecraft.client.resources.I18n;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.ResourceLocation;
@ -78,6 +79,10 @@ public class FluidTank {
}
//Called on TE update
public void updateTank(TileEntity te) {
updateTank(te.xCoord, te.yCoord, te.zCoord, te.getWorldObj().provider.dimensionId);
}
public void updateTank(int x, int y, int z, int dim) {
PacketDispatcher.wrapper.sendToAllAround(new TEFluidPacket(x, y, z, fluid, index, type), new TargetPoint(dim, x, y, z, 100));
}

View File

@ -8,7 +8,6 @@ import static com.hbm.items.ModItems.*;
import static com.hbm.blocks.ModBlocks.*;
import static com.hbm.inventory.OreDictManager.DictFrame.*;
import com.hbm.blocks.ModBlocks;
import com.hbm.config.GeneralConfig;
import com.hbm.hazard.HazardData;
import com.hbm.hazard.HazardEntry;
@ -16,7 +15,6 @@ import com.hbm.hazard.HazardRegistry;
import com.hbm.hazard.HazardSystem;
import com.hbm.items.ItemEnums.EnumCokeType;
import com.hbm.items.ItemEnums.EnumTarType;
import com.hbm.items.ModItems;
import net.minecraft.block.Block;
import net.minecraft.init.Items;

View File

@ -11,15 +11,14 @@ public class SlotUpgrade extends Slot {
public SlotUpgrade(IInventory inventory, int i, int j, int k) {
super(inventory, i, j, k);
}
@Override
public boolean isItemValid(ItemStack stack) {
return stack != null && stack.getItem() instanceof ItemMachineUpgrade;
}
return stack != null && stack.getItem() instanceof ItemMachineUpgrade;
}
@Override
public void onSlotChange(ItemStack sta1, ItemStack sta2) {
public void onSlotChange(ItemStack sta1, ItemStack sta2) {
super.onSlotChange(sta1, sta2);
}
}
}

View File

@ -1,64 +0,0 @@
package com.hbm.inventory.container;
import com.hbm.tileentity.machine.TileEntityConverterHeRf;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ICrafting;
import net.minecraft.item.ItemStack;
public class ContainerConverterHeRf extends Container {
private TileEntityConverterHeRf diFurnace;
private int water;
private int flux;
public ContainerConverterHeRf(InventoryPlayer invPlayer, TileEntityConverterHeRf tedf) {
diFurnace = tedf;
}
@Override
public void addCraftingToCrafters(ICrafting crafting) {
super.addCraftingToCrafters(crafting);
crafting.sendProgressBarUpdate(this, 1, this.diFurnace.storage.getEnergyStored());
}
@Override
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int p_82846_2_)
{
return null;
}
@Override
public boolean canInteractWith(EntityPlayer player) {
return true;
}
@Override
public void detectAndSendChanges() {
super.detectAndSendChanges();
for(int i = 0; i < this.crafters.size(); i++)
{
ICrafting par1 = (ICrafting)this.crafters.get(i);
if(this.flux != this.diFurnace.storage.getEnergyStored())
{
par1.sendProgressBarUpdate(this, 1, this.diFurnace.storage.getEnergyStored());
}
}
this.flux = this.diFurnace.storage.getEnergyStored();
}
@Override
public void updateProgressBar(int i, int j) {
if(i == 1)
{
diFurnace.storage.setEnergyStored(j);
}
}
}

View File

@ -10,22 +10,25 @@ import net.minecraft.item.ItemStack;
public class ContainerFEL extends Container {
private TileEntityFEL microwave;
private TileEntityFEL fel;
public ContainerFEL(InventoryPlayer invPlayer, TileEntityFEL tedf) {
microwave = tedf;
fel = tedf;
this.addSlotToContainer(new Slot(tedf, 0, 26, 53));
//battery
this.addSlotToContainer(new Slot(tedf, 0, 182, 144));
//laser crystal
this.addSlotToContainer(new Slot(tedf, 1, 141, 23));
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 9; j++) {
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 83 + i * 18));
}
}
for(int i = 0; i < 9; i++) {
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142));
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 141));
}
}
@ -39,11 +42,11 @@ public class ContainerFEL extends Container {
var3 = var5.copy();
if(par2 == 0) {
if(!this.mergeItemStack(var5, 1, this.inventorySlots.size(), true)) {
if(!this.mergeItemStack(var5, 1, this.inventorySlots.size(), false)) {
return null;
}
} else {
if(!this.mergeItemStack(var5, 0, 1, true))
if(!this.mergeItemStack(var5, 0, 1, false))
return null;
}
@ -59,6 +62,6 @@ public class ContainerFEL extends Container {
@Override
public boolean canInteractWith(EntityPlayer player) {
return microwave.isUseableByPlayer(player);
return fel.isUseableByPlayer(player);
}
}
}

View File

@ -0,0 +1,69 @@
package com.hbm.inventory.container;
import com.hbm.inventory.SlotUpgrade;
import com.hbm.tileentity.machine.TileEntityMachineLiquefactor;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
public class ContainerLiquefactor extends Container {
private TileEntityMachineLiquefactor liquefactor;
public ContainerLiquefactor(InventoryPlayer playerInv, TileEntityMachineLiquefactor tile) {
liquefactor = tile;
//Input
this.addSlotToContainer(new Slot(tile, 0, 35, 54));
//Battery
this.addSlotToContainer(new Slot(tile, 1, 134, 72));
//Upgrades
this.addSlotToContainer(new SlotUpgrade(tile, 2, 98, 36));
this.addSlotToContainer(new SlotUpgrade(tile, 3, 98, 54));
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 9; j++) {
this.addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 122 + i * 18));
}
}
for(int i = 0; i < 9; i++) {
this.addSlotToContainer(new Slot(playerInv, i, 8 + i * 18, 180));
}
}
@Override
public boolean canInteractWith(EntityPlayer player) {
return liquefactor.isUseableByPlayer(player);
}
@Override
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
ItemStack var3 = null;
Slot var4 = (Slot) this.inventorySlots.get(index);
if(var4 != null && var4.getHasStack()) {
ItemStack var5 = var4.getStack();
var3 = var5.copy();
if(index <= 2) {
if(!this.mergeItemStack(var5, 4, this.inventorySlots.size(), true)) {
return null;
}
} else if(!this.mergeItemStack(var5, 0, 3, false)) {
return null;
}
if(var5.stackSize == 0) {
var4.putStack((ItemStack) null);
} else {
var4.onSlotChanged();
}
}
return var3;
}
}

View File

@ -1,6 +1,5 @@
package com.hbm.inventory.container;
import com.hbm.inventory.SlotMachineOutput;
import com.hbm.items.ModItems;
import com.hbm.tileentity.machine.TileEntitySILEX;
@ -16,23 +15,23 @@ public class ContainerSILEX extends Container {
public ContainerSILEX(InventoryPlayer invPlayer, TileEntitySILEX te) {
silex = te;
//Input
this.addSlotToContainer(new Slot(te, 0, 116, 36));
this.addSlotToContainer(new Slot(te, 0, 80, 12));
//Fluid ID
this.addSlotToContainer(new Slot(te, 1, 44, 36));
this.addSlotToContainer(new Slot(te, 1, 8, 24));
//Fluid Container
this.addSlotToContainer(new Slot(te, 2, 62, 36));
this.addSlotToContainer(new Slot(te, 3, 80, 36));
this.addSlotToContainer(new Slot(te, 2, 8 + 18, 24));
this.addSlotToContainer(new Slot(te, 3, 8 + 18*2, 24));
//Output
this.addSlotToContainer(new Slot(te, 4, 116, 90));
//Output Queue
this.addSlotToContainer(new SlotMachineOutput(te, 5, 134, 72));
this.addSlotToContainer(new SlotMachineOutput(te, 6, 152, 72));
this.addSlotToContainer(new SlotMachineOutput(te, 7, 134, 90));
this.addSlotToContainer(new SlotMachineOutput(te, 8, 152, 90));
this.addSlotToContainer(new SlotMachineOutput(te, 9, 134, 108));
this.addSlotToContainer(new SlotMachineOutput(te, 10, 152, 108));
this.addSlotToContainer(new Slot(te, 5, 134, 72));
this.addSlotToContainer(new Slot(te, 6, 152, 72));
this.addSlotToContainer(new Slot(te, 7, 134, 90));
this.addSlotToContainer(new Slot(te, 8, 152, 90));
this.addSlotToContainer(new Slot(te, 9, 134, 108));
this.addSlotToContainer(new Slot(te, 10, 152, 108));
for(int i = 0; i < 3; i++)
{
@ -56,7 +55,6 @@ public class ContainerSILEX extends Container {
if(var4 != null && var4.getHasStack()) {
ItemStack var5 = var4.getStack();
var3 = var5.copy();
SlotMachineOutput.checkAchievements(p_82846_1_, var5);
if(par2 <= silex.getSizeInventory() - 1) {
if(!this.mergeItemStack(var5, silex.getSizeInventory(), this.inventorySlots.size(), true)) {
@ -87,4 +85,4 @@ public class ContainerSILEX extends Container {
public boolean canInteractWith(EntityPlayer player) {
return silex.isUseableByPlayer(player);
}
}
}

View File

@ -0,0 +1,237 @@
package com.hbm.inventory.gui;
import com.hbm.lib.RefStrings;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiTextField;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11;
import java.math.BigDecimal;
import java.util.Locale;
import java.util.Stack;
public class GUICalculator extends GuiScreen {
private static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID, "textures/gui/calculator.png");
private int xSize = 220;
private int ySize = 50;
private GuiTextField inputField;
private String latestResult = "?";
@Override
public void initGui() {
Keyboard.enableRepeatEvents(true);
int x = (width - xSize) / 2;
int y = (height - ySize) / 2;
inputField = new GuiTextField(fontRendererObj, x + 5, y + 5, 210, 13);
inputField.setTextColor(-1);
inputField.setCanLoseFocus(false);
inputField.setFocused(true);
inputField.setMaxStringLength(1000);
}
@Override
public void onGuiClosed() {
Keyboard.enableRepeatEvents(false);
}
@Override
protected void keyTyped(char p_73869_1_, int p_73869_2_) {
if (!inputField.textboxKeyTyped(p_73869_1_, p_73869_2_))
super.keyTyped(p_73869_1_, p_73869_2_);
if (p_73869_1_ == 13 || p_73869_1_ == 10) { // when pressing enter (CR or LF)
try {
double result = Double.parseDouble(latestResult);
String plainStringRepresentation = (new BigDecimal(result)).toPlainString();
GuiScreen.setClipboardString(plainStringRepresentation);
inputField.setText(plainStringRepresentation);
inputField.setCursorPositionEnd();
inputField.setSelectionPos(0);
} catch (Exception ignored) {}
return;
}
String input = inputField.getText().replaceAll("[^\\d+\\-*/^.()\\sA-Za-z]+", "");
if (input.isEmpty()) {
latestResult = "?";
return;
}
try {
latestResult = Double.toString(evaluateExpression(input));
} catch (Exception e) { latestResult = e.toString(); }
}
@Override
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
super.drawScreen(mouseX, mouseY, partialTicks);
GL11.glColor4f(1F, 1F, 1F, 1F);
mc.getTextureManager().bindTexture(texture);
int x = (width - xSize) / 2;
int y = (height - ySize) / 2;
drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
inputField.drawTextBox();
fontRendererObj.drawString("=" + latestResult, x + 5, y + 30, -1);
}
/**
* Mathematically evaluates user-inputted strings<br>
* It is recommended to catch all exceptions when using this
*/
public static double evaluateExpression(String input) {
if (input.contains("^")) input = preEvaluatePower(input);
char[] tokens = input.toCharArray();
Stack<Double> values = new Stack<>();
Stack<String> operators = new Stack<>();
for (int i = 0; i < tokens.length; i++) {
if (tokens[i] == ' ') continue;
if (tokens[i] >= '0' && tokens[i] <= '9' || tokens[i] == '.' || (tokens[i] == '-' && (i == 0 || "+-*/^(".contains(String.valueOf(tokens[i - 1]))))) {
StringBuilder buffer = new StringBuilder();
if (tokens[i] == '-') {
buffer.append('-'); // for negative numbers
i++;
}
while (i < tokens.length && (tokens[i] >= '0' && tokens[i] <= '9' || tokens[i] == '.')) buffer.append(tokens[i++]);
values.push(Double.parseDouble(buffer.toString()));
i--;
} else if (tokens[i] == '(') operators.push(Character.toString(tokens[i]));
else if (tokens[i] == ')') {
while (!operators.isEmpty() && operators.peek().charAt(0) != '(')
values.push(evaluateOperator(operators.pop().charAt(0), values.pop(), values.pop()));
operators.pop();
if (!operators.isEmpty() && operators.peek().length() > 1)
values.push(evaluateFunction(operators.pop(), values.pop()));
} else if (tokens[i] == '+' || tokens[i] == '-' || tokens[i] == '*' || tokens[i] == '/' || tokens[i] == '^') {
while (!operators.isEmpty() && hasPrecedence(String.valueOf(tokens[i]), operators.peek()))
values.push(evaluateOperator(operators.pop().charAt(0), values.pop(), values.pop()));
operators.push(Character.toString(tokens[i]));
} else if (tokens[i] >= 'A' && tokens[i] <= 'Z' || tokens[i] >= 'a' && tokens[i] <= 'z') {
StringBuilder charBuffer = new StringBuilder();
while (i < tokens.length && (tokens[i] >= 'A' && tokens[i] <= 'Z' || tokens[i] >= 'a' && tokens[i] <= 'z'))
charBuffer.append(tokens[i++]);
String string = charBuffer.toString();
if (string.equalsIgnoreCase("pi")) values.push(Math.PI);
else if (string.equalsIgnoreCase("e")) values.push(Math.E);
else operators.push(string.toLowerCase(Locale.ROOT));
i--;
}
}
// if the expression is correctly formatted, no function is remaining
while (!operators.empty()) values.push(evaluateOperator(operators.pop().charAt(0), values.pop(), values.pop()));
return values.pop();
}
private static double evaluateOperator(char operator, double x, double y) {
switch (operator) {
case '+': return y + x;
case '-': return y - x;
case '*': return y * x;
case '/': return y / x;
case '^': return Math.pow(y, x); // should not happen here, but oh well
}
return 0;
}
private static double evaluateFunction(String function, double x) {
switch (function) {
case "sqrt": return Math.sqrt(x);
case "sin": return Math.sin(x);
case "cos": return Math.cos(x);
case "tan": return Math.tan(x);
case "asin": return Math.asin(x);
case "acos": return Math.acos(x);
case "atan": return Math.atan(x);
case "log": return Math.log10(x);
case "ln": return Math.log(x);
case "ceil": return Math.ceil(x);
case "floor": return Math.floor(x);
case "round": return Math.round(x);
}
return 0;
}
/** Returns whether {@code second} has precedence over {@code first} */
private static boolean hasPrecedence(String first, String second) {
if (second.length() > 1) return false;
char firstChar = first.charAt(0);
char secondChar = second.charAt(0);
if (secondChar == '(' || secondChar == ')') return false;
else return (firstChar != '*' && firstChar != '/' && firstChar != '^') || (secondChar != '+' && secondChar != '-');
}
/** Returns the input with all powers evaluated */
private static String preEvaluatePower(String input) {
do {
int powerOperatorIndex = input.lastIndexOf('^');
// find base
boolean previousTokenIsParentheses = input.charAt(powerOperatorIndex - 1) == ')';
int parenthesesDepth = previousTokenIsParentheses ? 1 : 0;
int baseExpressionStart = previousTokenIsParentheses ? powerOperatorIndex - 2 : powerOperatorIndex - 1;
baseLoop:
for (; baseExpressionStart >= 0; baseExpressionStart--) { // search backwards
switch (input.charAt(baseExpressionStart)) {
case ')':
if (previousTokenIsParentheses) parenthesesDepth++;
else break baseLoop;
break;
case '(':
if (previousTokenIsParentheses && parenthesesDepth > 0) parenthesesDepth--;
else break baseLoop;
break;
case '+': case '-': case '*': case '/': case '^':
if (parenthesesDepth == 0) break baseLoop;
}
}
baseExpressionStart++; // go one token forward again
if (parenthesesDepth > 0) throw new IllegalArgumentException("Incomplete parentheses");
// find exponent
boolean nextTokenIsParentheses = input.charAt(powerOperatorIndex + 1) == '(';
parenthesesDepth = nextTokenIsParentheses ? 1 : 0;
int exponentExpressionEnd = nextTokenIsParentheses ? powerOperatorIndex + 2 : powerOperatorIndex + 1;
exponentLoop:
for (; exponentExpressionEnd < input.length(); exponentExpressionEnd++) {
switch (input.charAt(exponentExpressionEnd)) {
case '(':
if (nextTokenIsParentheses) parenthesesDepth++;
else break exponentLoop;
break;
case ')':
if (nextTokenIsParentheses && parenthesesDepth > 0) parenthesesDepth--;
else break exponentLoop;
break;
case '+': case '-': case '*': case '/': case '^':
if (parenthesesDepth == 0) break exponentLoop;
}
}
if (parenthesesDepth > 0) throw new IllegalArgumentException("Incomplete parentheses");
double base = evaluateExpression(input.substring(baseExpressionStart, powerOperatorIndex));
double exponent = evaluateExpression(input.substring(powerOperatorIndex + 1, exponentExpressionEnd));
double result = Math.pow(base, exponent);
// use big decimal to avoid scientific notation messing with the calculation
input = input.substring(0, baseExpressionStart) + (new BigDecimal(result)).toPlainString() + input.substring(exponentExpressionEnd);
} while (input.contains("^"));
return input;
}
}

View File

@ -1,47 +0,0 @@
package com.hbm.inventory.gui;
import org.lwjgl.opengl.GL11;
import com.hbm.inventory.container.ContainerConverterHeRf;
import com.hbm.lib.RefStrings;
import com.hbm.tileentity.machine.TileEntityConverterHeRf;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.util.ResourceLocation;
public class GUIConverterHeRf extends GuiContainer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_he_rf_converter.png");
private TileEntityConverterHeRf diFurnace;
public GUIConverterHeRf(InventoryPlayer invPlayer, TileEntityConverterHeRf tedf) {
super(new ContainerConverterHeRf(invPlayer, tedf));
diFurnace = tedf;
this.xSize = 176;
this.ySize = 86;
}
@Override
protected void drawGuiContainerForegroundLayer(int i, int j) {
}
@Override
protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
if(diFurnace.power > 0) {
int i = (int)diFurnace.getPowerScaled(52);
drawTexturedModalRect(guiLeft + 28, guiTop + 69 - i, 176, 52 - i, 12, i);
}
if(diFurnace.storage.getEnergyStored() > 0) {
int i = (int)diFurnace.getFluxScaled(52);
drawTexturedModalRect(guiLeft + 136, guiTop + 69 - i, 188, 52 - i, 12, i);
}
}
}

View File

@ -0,0 +1,63 @@
package com.hbm.inventory.gui;
import org.lwjgl.opengl.GL11;
import com.hbm.inventory.FluidTank;
import com.hbm.inventory.container.ContainerLiquefactor;
import com.hbm.lib.RefStrings;
import com.hbm.tileentity.machine.TileEntityMachineLiquefactor;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.util.ResourceLocation;
public class GUILiquefactor extends GuiInfoContainer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_liquefactor.png");
private TileEntityMachineLiquefactor liquefactor;
public GUILiquefactor(InventoryPlayer invPlayer, TileEntityMachineLiquefactor tedf) {
super(new ContainerLiquefactor(invPlayer, tedf));
liquefactor = tedf;
this.xSize = 176;
this.ySize = 204;
}
@Override
public void drawScreen(int mouseX, int mouseY, float f) {
super.drawScreen(mouseX, mouseY, f);
liquefactor.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 71, guiTop + 36, 16, 52);
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 18, 16, 52, liquefactor.power, liquefactor.maxPower);
}
@Override
protected void drawGuiContainerForegroundLayer(int i, int j) {
String name = this.liquefactor.hasCustomInventoryName() ? this.liquefactor.getInventoryName() : I18n.format(this.liquefactor.getInventoryName());
this.fontRendererObj.drawString(name, 70 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xC7C1A3);
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
}
@Override
protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
int i = (int)(liquefactor.getPower() * 52 / liquefactor.getMaxPower());
drawTexturedModalRect(guiLeft + 134, guiTop + 70 - i, 176, 52 - i, 16, i);
int j = liquefactor.progress * 42 / liquefactor.processTime;
drawTexturedModalRect(guiLeft + 42, guiTop + 17, 192, 0, j, 35);
if(i > 0)
drawTexturedModalRect(guiLeft + 138, guiTop + 4, 176, 52, 9, 12);
Minecraft.getMinecraft().getTextureManager().bindTexture(liquefactor.tank.getSheet());
liquefactor.tank.renderTank(this, guiLeft + 71, guiTop + 88, liquefactor.tank.getTankType().textureX() * FluidTank.x, liquefactor.tank.getTankType().textureY() * FluidTank.y, 16, 52);
}
}

View File

@ -0,0 +1,75 @@
package com.hbm.inventory.recipes;
import static com.hbm.inventory.OreDictManager.*;
import java.util.HashMap;
import java.util.Map.Entry;
import com.hbm.inventory.FluidStack;
import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.inventory.RecipesCommon.OreDictStack;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.items.machine.ItemFluidIcon;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
public class LiquefactionRecipes {
private static HashMap<Object, FluidStack> recipes = new HashMap();
public static void register() {
recipes.put(COAL.gem(), new FluidStack(100, Fluids.OIL));
recipes.put(COAL.dust(), new FluidStack(100, Fluids.OIL));
recipes.put(ANY_TAR.any(), new FluidStack(100, Fluids.BITUMEN));
recipes.put(new ComparableStack(Blocks.netherrack), new FluidStack(250, Fluids.LAVA));
recipes.put(new ComparableStack(Blocks.cobblestone), new FluidStack(250, Fluids.LAVA));
recipes.put(new ComparableStack(Blocks.stone), new FluidStack(250, Fluids.LAVA));
recipes.put(new ComparableStack(Blocks.obsidian), new FluidStack(500, Fluids.LAVA));
recipes.put(new ComparableStack(Items.snowball), new FluidStack(125, Fluids.WATER));
recipes.put(new ComparableStack(Blocks.snow), new FluidStack(500, Fluids.WATER));
recipes.put(new ComparableStack(Blocks.ice), new FluidStack(1000, Fluids.WATER));
recipes.put(new ComparableStack(Blocks.packed_ice), new FluidStack(1000, Fluids.WATER));
}
public static FluidStack getOutput(ItemStack stack) {
if(stack == null || stack.getItem() == null)
return null;
ComparableStack comp = new ComparableStack(stack.getItem(), 1, stack.getItemDamage());
if(recipes.containsKey(comp))
return recipes.get(comp);
String[] dictKeys = comp.getDictKeys();
for(String key : dictKeys) {
if(recipes.containsKey(key))
return recipes.get(key);
}
return null;
}
public static HashMap<Object, ItemStack> getRecipes() {
HashMap<Object, ItemStack> recipes = new HashMap<Object, ItemStack>();
for(Entry<Object, FluidStack> entry : LiquefactionRecipes.recipes.entrySet()) {
FluidStack out = entry.getValue();
if(entry.getKey() instanceof String) {
recipes.put(new OreDictStack((String)entry.getKey()), ItemFluidIcon.make(out.type, out.fill));
} else {
recipes.put(((ComparableStack)entry.getKey()).toStack(), ItemFluidIcon.make(out.type, out.fill));
}
}
return recipes;
}
}

View File

@ -8,7 +8,6 @@ import com.hbm.interfaces.IFluidDuct;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.items.ModItems;
import com.hbm.tileentity.conductor.TileEntityFluidDuct;
import com.hbm.tileentity.conductor.TileEntityFluidDuctSimple;
import com.hbm.util.I18nUtil;
@ -85,9 +84,10 @@ public class ItemFluidIdentifier extends Item {
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int i, float f1, float f2, float f3) {
TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof TileEntityFluidDuctSimple) {
TileEntityFluidDuctSimple duct = (TileEntityFluidDuctSimple) te;
if(!world.isRemote) {
TileEntityFluidDuctSimple duct = (TileEntityFluidDuctSimple) te;
FluidType type = Fluids.fromID(stack.getItemDamage());
if (player.isSneaking()) {
@ -97,7 +97,7 @@ public class ItemFluidIdentifier extends Item {
}
}
world.markBlockForUpdate(x, y, z);
//world.markBlockForUpdate(x, y, z);
player.swingItem();
}
@ -132,7 +132,7 @@ public class ItemFluidIdentifier extends Item {
TileEntity te = world.getTileEntity(nextX, nextY, nextZ);
if (te instanceof TileEntityFluidDuctSimple && ((TileEntityFluidDuctSimple) te).getType() == oldType) {
TileEntityFluidDuct nextDuct = (TileEntityFluidDuct) te;
TileEntityFluidDuctSimple nextDuct = (TileEntityFluidDuctSimple) te;
long connectionsCount = Arrays.stream(nextDuct.connections).filter(Objects::nonNull).count();
if (connectionsCount > 1) {

View File

@ -46,6 +46,9 @@ public class ItemHolotapeImage extends ItemHoloTape {
HOLO_NV_CRATER( EnumChatFormatting.GOLD, "Brown", "031-MOUNTAIN", "The tape contains an audio track that is mostly gabled sound and garbage noise. There is an image file on it, depicting a large dome in blue light surrounded by many smaller buildings. In the distance, there is a smaller dome with red lights."),
HOLO_NV_DIVIDE( EnumChatFormatting.GOLD, "Brown", "032-ROAD", "The tape contains an audio track that is mostly gabled sound and garbage noise. There is an image file on it, depicting a large chasm with broken highways and destroyed buildings littering the landscape."),
HOLO_NV_BM( EnumChatFormatting.GOLD, "Brown", "033-BROADCAST", "The tape contains an audio track that is mostly gabled sound and garbage noise. There is an image file on it, depicting a satellite broadcasting station on top of a hill. In the distance, there is a very large person walking hand in hand with a robot into the sunset."),
HOLO_O_1( EnumChatFormatting.WHITE, "Chroma", "X00-TRANSCRIPT", "[Start of Automated Audio Transcript] <unintelligible> in a boardroom, right, and they're trying to come up with some new ideas. So one guy just says they should reuse this other character from somewhere else, who has like this night-theme you know, and just change the entire schtick to day. So when they had to come up with a name, one guy said, why not take the original name, replace the N with a D, because of night to day, right, and run with it? Now the name sounds like 'Dicks'! Funniest thing I've ever heard! [End of Transcript]"),
HOLO_O_2( EnumChatFormatting.WHITE, "Chroma", "X01-NEWS", "The tape contains a news article, reporting an unusually pale person throwing flashbangs at people in public. The image at the bottom shows one of the incidents, unsurprisingly the light from one of the flashbangs made it unrecognizable."),
HOLO_O_3( EnumChatFormatting.WHITE, "Chroma", "X02-FICTION", "The tape contains an article from a science fiction magazine, engaging with various reader comments about what to do with a time machine. One of those comments suggests engaging in various unsanitary acts with the future self, being signed off with just the initial '~D'."),
;
private String name;

View File

@ -19,6 +19,7 @@ import com.hbm.items.ModItems;
import com.hbm.tileentity.TileEntityProxyBase;
import com.hbm.tileentity.TileEntityProxyInventory;
import com.hbm.tileentity.conductor.TileEntityFluidDuct;
import com.hbm.tileentity.conductor.TileEntityFluidDuctSimple;
import com.hbm.tileentity.conductor.TileEntityGasDuct;
import com.hbm.tileentity.conductor.TileEntityGasDuctSolid;
import com.hbm.tileentity.conductor.TileEntityOilDuct;
@ -495,17 +496,17 @@ public class Library {
if(tileentity instanceof IFluidDuct)
{
if(tileentity instanceof TileEntityFluidDuct && ((TileEntityFluidDuct)tileentity).getType() == type)
if(tileentity instanceof TileEntityFluidDuctSimple && ((TileEntityFluidDuctSimple)tileentity).getType() == type)
{
if(Library.checkUnionListForFluids(((TileEntityFluidDuct)tileentity).uoteab, that))
if(Library.checkUnionListForFluids(((TileEntityFluidDuctSimple)tileentity).uoteab, that))
{
for(int i = 0; i < ((TileEntityFluidDuct)tileentity).uoteab.size(); i++)
for(int i = 0; i < ((TileEntityFluidDuctSimple)tileentity).uoteab.size(); i++)
{
if(((TileEntityFluidDuct)tileentity).uoteab.get(i).source == that)
if(((TileEntityFluidDuctSimple)tileentity).uoteab.get(i).source == that)
{
if(((TileEntityFluidDuct)tileentity).uoteab.get(i).ticked != newTact)
if(((TileEntityFluidDuctSimple)tileentity).uoteab.get(i).ticked != newTact)
{
((TileEntityFluidDuct)tileentity).uoteab.get(i).ticked = newTact;
((TileEntityFluidDuctSimple)tileentity).uoteab.get(i).ticked = newTact;
transmitFluid(x, y + 1, z, that.getTact(), that, worldObj, type);
transmitFluid(x, y - 1, z, that.getTact(), that, worldObj, type);
transmitFluid(x - 1, y, z, that.getTact(), that, worldObj, type);
@ -516,7 +517,7 @@ public class Library {
}
}
} else {
((TileEntityFluidDuct)tileentity).uoteab.add(new UnionOfTileEntitiesAndBooleansForFluids(that, newTact));
((TileEntityFluidDuctSimple)tileentity).uoteab.add(new UnionOfTileEntitiesAndBooleansForFluids(that, newTact));
}
}
if(tileentity instanceof TileEntityGasDuct && ((TileEntityGasDuct)tileentity).type.name().equals(type.name()))

View File

@ -14,6 +14,7 @@ import static com.hbm.inventory.OreDictManager.*;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemBattery;
import com.hbm.items.special.ItemCircuitStarComponent.CircuitComponentType;
import com.hbm.items.special.ItemHolotapeImage.EnumHoloImage;
import com.hbm.items.special.ItemPlasticScrap.ScrapType;
import com.hbm.items.tool.ItemGuideBook.BookType;
import com.hbm.util.EnchantmentUtil;
@ -314,7 +315,7 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(ModItems.blades_combine_steel, 1), new Object[] { "PIP", 'P', CMB.plate(), 'I', new ItemStack(ModItems.blades_combine_steel, 1, OreDictionary.WILDCARD_VALUE) });
addRecipeAuto(new ItemStack(ModItems.blades_schrabidium, 1), new Object[] { "PIP", 'P', SA326.plate(), 'I', new ItemStack(ModItems.blades_schrabidium, 1, OreDictionary.WILDCARD_VALUE) });
addRecipeAuto(new ItemStack(ModItems.laser_crystal_co2, 1), new Object[] { "QDQ", "NCN", "QDQ", 'Q', ModBlocks.glass_quartz, 'D', DESH.ingot(), 'N', ND.ingot(), 'C', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.CARBONDIOXIDE.getID()) });
addRecipeAuto(new ItemStack(ModItems.laser_crystal_co2, 1), new Object[] { "QDQ", "NCN", "QDQ", 'Q', ModBlocks.glass_quartz, 'D', DESH.ingot(), 'N', NB.ingot(), 'C', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.CARBONDIOXIDE.getID()) });
addRecipeAuto(new ItemStack(ModItems.laser_crystal_bismuth, 1), new Object[] {"QUQ", "BCB", "QTQ", 'Q', ModBlocks.glass_quartz, 'U', U.ingot(), 'T', TH232.ingot(), 'B', ModItems.nugget_bismuth, 'C', ModItems.crystal_rare });
addRecipeAuto(new ItemStack(ModItems.laser_crystal_cmb, 1), new Object[] {"QBQ", "CSC", "QBQ", 'Q', ModBlocks.glass_quartz, 'B', CMB.ingot(), 'C', SBD.ingot(), 'S', ModItems.cell_anti_schrabidium });
addRecipeAuto(new ItemStack(ModItems.laser_crystal_dnt, 1), new Object[] {"QDQ", "SBS", "QDQ", 'Q', ModBlocks.glass_quartz, 'D', DNT.ingot(), 'B', ModItems.egg_balefire, 'S', ModItems.powder_spark_mix });
@ -554,8 +555,9 @@ public class CraftingManager {
addShapelessAuto(new ItemStack(ModItems.crystal_charred, 1), new Object[] { ST.dust(), CO.dust(), BR.dust(), NB.dust(), TS.dust(), CE.dust(), ModBlocks.block_meteor, AL.block(), Items.water_bucket });
addRecipeAuto(new ItemStack(ModBlocks.crystal_virus, 1), new Object[] { "STS", "THT", "STS", 'S', ModItems.particle_strange, 'T', W.dust(), 'H', ModItems.crystal_horn });
addRecipeAuto(new ItemStack(ModBlocks.crystal_pulsar, 32), new Object[] { "STS", "THT", "STS", 'S', ModItems.cell_uf6, 'T', AL.dust(), 'H', ModItems.crystal_charred });
addRecipeAuto(new ItemStack(ModBlocks.fluid_duct, 8), new Object[] { "SAS", " ", "SAS", 'S', STEEL.plate(), 'A', AL.plate() });
addRecipeAuto(new ItemStack(ModBlocks.fluid_duct_solid, 8), new Object[] { "SAS", "A A", "SAS", 'S', STEEL.ingot(), 'A', AL.plate() });
//addRecipeAuto(new ItemStack(ModBlocks.machine_assembler, 1), new Object[] { "WWW", "MCM", "ISI", 'W', KEY_ANYPANE, 'M', ModItems.motor, 'C', ModItems.circuit_aluminium, 'I', "blockCopper", 'S', STEEL.block() });
addRecipeAuto(new ItemStack(ModItems.template_folder, 1), new Object[] { "LPL", "BPB", "LPL", 'P', Items.paper, 'L', KEY_BLUE, 'B', KEY_WHITE });
//addRecipeAuto(new ItemStack(ModItems.turret_control, 1), new Object[] { "R12", "PPI", " I", 'R', REDSTONE.dust(), '1', ModItems.circuit_aluminium, '2', ModItems.circuit_red_copper, 'P', STEEL.plate(), 'I', STEEL.ingot() });
@ -855,6 +857,8 @@ public class CraftingManager {
addShapelessAuto(new ItemStack(ModItems.book_guide, 1, BookType.RBMK.ordinal()), new Object[] { Items.book, Items.potato });
addShapelessAuto(new ItemStack(ModItems.book_guide, 1, BookType.HADRON.ordinal()), new Object[] { Items.book, ModItems.fuse });
addShapelessAuto(new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_RESTORED.ordinal()), new Object[] { new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_DIGAMMA.ordinal()), ModItems.screwdriver, ModItems.ducttape, ModItems.armor_polish });
if(GeneralConfig.enableBabyMode) {
addShapelessAuto(new ItemStack(ModItems.cordite, 3), new Object[] { ModItems.ballistite, Items.gunpowder, new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) });
addShapelessAuto(new ItemStack(ModItems.ingot_semtex, 3), new Object[] { Items.slime_ball, Blocks.tnt, KNO.dust() });

View File

@ -949,6 +949,7 @@ public class MainRegistry {
PressRecipes.register();
RefineryRecipes.registerFractions();
RefineryRecipes.registerCracking();
LiquefactionRecipes.register();
FuelPoolRecipes.register();
TileEntityNukeCustom.registerBombItems();

View File

@ -65,6 +65,8 @@ public class NEIConfig implements IConfigureNEI {
API.registerRecipeHandler(new RTGRecipeHandler());
API.registerUsageHandler(new RTGRecipeHandler());
}
API.registerRecipeHandler(new LiquefactionHandler());
API.registerUsageHandler(new LiquefactionHandler());
//Some things are even beyond my control...or are they?
API.hideItem(ItemBattery.getEmptyBattery(ModItems.memory));

View File

@ -1,5 +1,7 @@
package com.hbm.render.block;
import org.lwjgl.opengl.GL11;
import com.hbm.blocks.IBlockMultiPass;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
@ -24,7 +26,41 @@ public class RenderBlockMultipass implements ISimpleBlockRenderingHandler {
public static int currentPass = 0;
@Override
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { }
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
Tessellator tessellator = Tessellator.instance;
block.setBlockBoundsForItemRender();
renderer.setRenderBoundsFromBlock(block);
GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, -1.0F, 0.0F);
renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, 1.0F, 0.0F);
renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, 0.0F, -1.0F);
renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, 0.0F, 1.0F);
renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(-1.0F, 0.0F, 0.0F);
renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(1.0F, 0.0F, 0.0F);
renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata));
tessellator.draw();
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
}
@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
@ -46,8 +82,8 @@ public class RenderBlockMultipass implements ISimpleBlockRenderingHandler {
for(int i = 0; i < passes; i++) {
currentPass = i;
System.out.println(multi.getColorFromPass(world, x, y, z, false));
tessellator.setColorOpaque_I(multi.getColorFromPass(world, x, y, z, false));
//System.out.println(multi.getColorFromPass(world, x, y, z, false));
//tessellator.setColorOpaque_I(multi.getColorFromPass(world, x, y, z, false));
renderer.renderStandardBlock(block, x, y, z);
}
@ -58,7 +94,7 @@ public class RenderBlockMultipass implements ISimpleBlockRenderingHandler {
@Override
public boolean shouldRender3DInInventory(int modelId) {
return false;
return true;
}
@Override

View File

@ -2,8 +2,8 @@ package com.hbm.render.block;
import org.lwjgl.opengl.GL11;
import com.hbm.blocks.bomb.DetCord;
import com.hbm.blocks.bomb.IDetConnectible;
import com.hbm.blocks.test.TestConductor;
import com.hbm.lib.Library;
import com.hbm.main.ResourceManager;
import com.hbm.render.util.ObjUtil;
@ -33,7 +33,7 @@ public class RenderDetCord implements ISimpleBlockRenderingHandler {
GL11.glRotated(180, 0, 1, 0);
GL11.glScaled(1.25D, 1.25D, 1.25D);
tessellator.startDrawingQuads();
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "CX", iicon, tessellator, 0, false);
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "CZ", iicon, tessellator, 0, false);
tessellator.draw();
GL11.glPopMatrix();
@ -60,13 +60,15 @@ public class RenderDetCord implements ISimpleBlockRenderingHandler {
boolean pZ = IDetConnectible.isConnectible(world, x, y, z + 1, Library.NEG_Z);
boolean nZ = IDetConnectible.isConnectible(world, x, y, z - 1, Library.POS_Z);
int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0);
tessellator.addTranslation(x + 0.5F, y + 0.5F, z + 0.5F);
if(pX && nX && !pY && !nY && !pZ && !nZ)
if(mask == 0b110000 || mask == 0b100000 || mask == 0b010000)
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "CX", iicon, tessellator, 0, true);
else if(!pX && !nX && pY && nY && !pZ && !nZ)
else if(mask == 0b001100 || mask == 0b001000 || mask == 0b000100)
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "CY", iicon, tessellator, 0, true);
else if(!pX && !nX && !pY && !nY && pZ && nZ)
else if(mask == 0b000011 || mask == 0b000010 || mask == 0b000001)
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "CZ", iicon, tessellator, 0, true);
else {
@ -91,6 +93,6 @@ public class RenderDetCord implements ISimpleBlockRenderingHandler {
@Override
public int getRenderId() {
return TestConductor.renderID;
return DetCord.renderID;
}
}

View File

@ -143,7 +143,7 @@ public abstract class TileEntityMachineBase extends TileEntity implements ISided
//was it update? onUpdate? updateTile? did it have any args?
//shit i don't know man
@Override
public abstract void updateEntity();
public abstract void updateEntity();
@Deprecated
public void updateGauge(int val, int id, int range) {

View File

@ -238,6 +238,7 @@ public class TileMappings {
put(TileEntityTowerLarge.class, "tileentity_cooling_tower_large");
put(TileEntityDeuteriumExtractor.class, "tileentity_deuterium_extractor");
put(TileEntityDeuteriumTower.class, "tileentity_deuterium_tower");
put(TileEntityMachineLiquefactor.class, "tileentity_liquefactor");
put(TileEntityMachineOilWell.class, "tileentity_derrick");
put(TileEntityMachinePumpjack.class, "tileentity_machine_pumpjack");

View File

@ -23,35 +23,8 @@ import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityFluidDuct extends TileEntityFluidDuctSimple {
public ForgeDirection[] connections = new ForgeDirection[6];
public TileEntityFluidDuct() { }
@Override
public void updateEntity() {
this.updateConnections();
}
public void updateConnections() {
if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord + 1, zCoord, type)) connections[0] = ForgeDirection.UP;
else connections[0] = null;
if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord - 1, zCoord, type)) connections[1] = ForgeDirection.DOWN;
else connections[1] = null;
if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord - 1, type)) connections[2] = ForgeDirection.NORTH;
else connections[2] = null;
if(Library.checkFluidConnectables(this.worldObj, xCoord + 1, yCoord, zCoord, type)) connections[3] = ForgeDirection.EAST;
else connections[3] = null;
if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord + 1, type)) connections[4] = ForgeDirection.SOUTH;
else connections[4] = null;
if(Library.checkFluidConnectables(this.worldObj, xCoord - 1, yCoord, zCoord, type)) connections[5] = ForgeDirection.WEST;
else connections[5] = null;
}
@Override
@SideOnly(Side.CLIENT)
public double getMaxRenderDistanceSquared() {

View File

@ -7,6 +7,7 @@ import com.hbm.calc.UnionOfTileEntitiesAndBooleansForFluids;
import com.hbm.interfaces.IFluidDuct;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.lib.Library;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
@ -14,11 +15,16 @@ import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.WorldServer;
import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityFluidDuctSimple extends TileEntity implements IFluidDuct {
private FluidType lastType = Fluids.NONE;
protected FluidType type = Fluids.NONE;
public List<UnionOfTileEntitiesAndBooleansForFluids> uoteab = new ArrayList<UnionOfTileEntitiesAndBooleansForFluids>();
public ForgeDirection[] connections = new ForgeDirection[6];
@Override
public Packet getDescriptionPacket() {
@ -64,4 +70,29 @@ public class TileEntityFluidDuctSimple extends TileEntity implements IFluidDuct
public FluidType getType() {
return type;
}
@Override
public void updateEntity() {
this.updateConnections();
if(lastType != type) {
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
lastType = type;
}
}
public void updateConnections() {
if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord + 1, zCoord, type)) connections[0] = ForgeDirection.UP;
else connections[0] = null;
if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord - 1, zCoord, type)) connections[1] = ForgeDirection.DOWN;
else connections[1] = null;
if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord - 1, type)) connections[2] = ForgeDirection.NORTH;
else connections[2] = null;
if(Library.checkFluidConnectables(this.worldObj, xCoord + 1, yCoord, zCoord, type)) connections[3] = ForgeDirection.EAST;
else connections[3] = null;
if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord + 1, type)) connections[4] = ForgeDirection.SOUTH;
else connections[4] = null;
if(Library.checkFluidConnectables(this.worldObj, xCoord - 1, yCoord, zCoord, type)) connections[5] = ForgeDirection.WEST;
else connections[5] = null;
}
}

View File

@ -3,6 +3,7 @@ package com.hbm.tileentity.machine;
import com.hbm.calc.Location;
import com.hbm.tileentity.TileEntityMachineBase;
import api.hbm.energy.IEnergyConnector;
import api.hbm.energy.IEnergyUser;
import cofh.api.energy.EnergyStorage;
import cofh.api.energy.IEnergyHandler;
@ -11,72 +12,19 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityConverterHeRf extends TileEntityMachineBase implements IEnergyUser, IEnergyHandler {
public class TileEntityConverterHeRf extends TileEntity implements IEnergyConnector, IEnergyHandler {
public TileEntityConverterHeRf() {
super(0);
}
@Override
public String getName() {
return "";
}
public long power;
public long maxPower = 500000000;
public EnergyStorage storage = new EnergyStorage(2000000000, 2000000000, 2000000000);
public int buf;
//Thanks to the great people of Fusion Warfare for helping me with this part.
//Thanks to the great people of Fusion Warfare for helping me with the original implementation of the RF energy API
@Override
public void updateEntity() {
if (!worldObj.isRemote) {
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir);
storage.setCapacity((int)power * 4);
storage.setEnergyStored((int)power * 4);
buf = storage.getEnergyStored();
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
Location loc = new Location(worldObj, xCoord, yCoord, zCoord).add(dir);
TileEntity entity = loc.getTileEntity();
if (entity != null && entity instanceof IEnergyReceiver) {
IEnergyReceiver receiver = (IEnergyReceiver) entity;
int maxExtract = storage.getMaxExtract();
int maxAvailable = storage.extractEnergy(maxExtract, true);
int energyTransferred = receiver.receiveEnergy(dir.getOpposite(), maxAvailable, false);
storage.extractEnergy(energyTransferred, false);
}
}
power = storage.getEnergyStored() / 4;
NBTTagCompound data = new NBTTagCompound();
data.setInteger("rf", storage.getEnergyStored());
data.setInteger("maxrf", storage.getEnergyStored());
data.setLong("he", power);
data.setLong("maxhe", power);
this.networkPack(data, 25);
}
}
public void networkUnpack(NBTTagCompound nbt) {
storage.setEnergyStored(nbt.getInteger("rf"));
storage.setCapacity(nbt.getInteger("maxrf"));
power = nbt.getLong("he");
maxPower = nbt.getLong("maxhe");
}
@Override
public boolean canConnectEnergy(ForgeDirection from) {
return true;
@ -84,64 +32,56 @@ public class TileEntityConverterHeRf extends TileEntityMachineBase implements IE
@Override
public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) {
return storage.extractEnergy(maxExtract, simulate);
return 0;
}
@Override
public int getEnergyStored(ForgeDirection from) {
return storage.getEnergyStored();
return 0;
}
@Override
public int getMaxEnergyStored(ForgeDirection from) {
return storage.getMaxEnergyStored();
}
@Override
public void setPower(long i) {
power = i;
return 0;
}
@Override
public long getPower() {
return power;
return 0;
}
@Override
public long getMaxPower() {
if(power < 1000000)
return 500000000;//Long.MAX_VALUE / 100;
return maxPower;
}
public long getPowerScaled(long i) {
return (power * i) / maxPower;
}
public long getFluxScaled(long i) {
return (storage.getEnergyStored() * i) / storage.getMaxEnergyStored();
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
this.power = nbt.getLong("power");
storage.readFromNBT(nbt);
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
nbt.setLong("power", power);
storage.writeToNBT(nbt);
return Integer.MAX_VALUE / 4;
}
@Override
public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) {
return 0;
}
@Override
public long transferPower(long power) {
// we have to limit the transfer amount because otherwise FEnSUs would overflow the RF output, twice
long out = Math.min(power, Long.MAX_VALUE / 4);
int toRF = (int) Math.min(Integer.MAX_VALUE, out * 4);
int energyTransferred = 0;
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
Location loc = new Location(worldObj, xCoord, yCoord, zCoord).add(dir);
TileEntity entity = loc.getTileEntity();
if(entity != null && entity instanceof IEnergyReceiver) {
IEnergyReceiver receiver = (IEnergyReceiver) entity;
energyTransferred = receiver.receiveEnergy(dir.getOpposite(), toRF, false);
toRF -= energyTransferred; //to prevent energy duping
}
}
return power - (energyTransferred / 4);
}
}

View File

@ -1,16 +1,9 @@
package com.hbm.tileentity.machine;
import java.util.ArrayList;
import java.util.List;
import com.hbm.interfaces.Untested;
import com.hbm.lib.Library;
import com.hbm.tileentity.TileEntityMachineBase;
import api.hbm.energy.IEnergyGenerator;
import cofh.api.energy.EnergyStorage;
import cofh.api.energy.IEnergyHandler;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;

View File

@ -0,0 +1,192 @@
package com.hbm.tileentity.machine;
import java.util.ArrayList;
import java.util.List;
import com.hbm.interfaces.IFluidAcceptor;
import com.hbm.interfaces.IFluidSource;
import com.hbm.inventory.FluidStack;
import com.hbm.inventory.FluidTank;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.recipes.LiquefactionRecipes;
import com.hbm.lib.Library;
import com.hbm.tileentity.TileEntityMachineBase;
import api.hbm.energy.IEnergyUser;
import net.minecraft.nbt.NBTTagCompound;
public class TileEntityMachineLiquefactor extends TileEntityMachineBase implements IEnergyUser, IFluidSource {
public long power;
public static final long maxPower = 100000;
public static final int usage = 500;
public int progress;
public static final int processTime = 200;
public FluidTank tank;
public TileEntityMachineLiquefactor() {
super(4);
tank = new FluidTank(Fluids.NONE, 24000, 0);
}
@Override
public String getName() {
return "container.machineLiquefactor";
}
@Override
public void updateEntity() {
if(!worldObj.isRemote) {
this.power = Library.chargeTEFromItems(slots, 1, power, maxPower);
tank.updateTank(this);
this.trySubscribe(worldObj, xCoord + 2, yCoord + 1, zCoord, Library.POS_X);
this.trySubscribe(worldObj, xCoord - 2, yCoord + 1, zCoord, Library.NEG_X);
this.trySubscribe(worldObj, xCoord, yCoord + 1, zCoord + 2, Library.POS_Z);
this.trySubscribe(worldObj, xCoord, yCoord + 1, zCoord - 2, Library.NEG_Z);
if(this.canProcess())
this.process();
else
this.progress = 0;
if(worldObj.getTotalWorldTime() % 10 == 0) {
this.fillFluidInit(tank.getTankType());
}
NBTTagCompound data = new NBTTagCompound();
data.setLong("power", this.power);
data.setInteger("progress", this.progress);
this.networkPack(data, 50);
}
}
public boolean canProcess() {
if(this.power < usage)
return false;
if(slots[0] == null)
return false;
FluidStack out = LiquefactionRecipes.getOutput(slots[0]);
if(out.type != tank.getTankType() && tank.getFill() > 0)
return false;
if(out.fill + tank.getFill() > tank.getMaxFill())
return false;
return true;
}
public void process() {
this.power -= usage;
progress++;
if(progress >= processTime) {
FluidStack out = LiquefactionRecipes.getOutput(slots[0]);
tank.setTankType(out.type);
tank.setFill(tank.getFill() + out.fill);
this.decrStackSize(0, 1);
progress = 0;
this.markDirty();
}
}
public void networkUnpack(NBTTagCompound nbt) {
this.power = nbt.getLong("power");
this.progress = nbt.getInteger("progress");
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
tank.readFromNBT(nbt, "tank");
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
tank.writeToNBT(nbt, "tank");
}
@Override
public void setPower(long power) {
this.power = power;
}
@Override
public long getPower() {
return power;
}
@Override
public long getMaxPower() {
return maxPower;
}
@Override
public void setFillstate(int fill, int index) {
tank.setFill(fill);
}
@Override
public void setFluidFill(int fill, FluidType type) {
if(type == tank.getTankType())
tank.setFill(fill);
}
@Override
public void setType(FluidType type, int index) {
tank.setTankType(type);
}
@Override
public List<FluidTank> getTanks() {
List<FluidTank> tanks = new ArrayList();
tanks.add(tank);
return tanks;
}
@Override
public int getFluidFill(FluidType type) {
return type == tank.getTankType() ? tank.getFill() : 0;
}
@Override
public void fillFluidInit(FluidType type) {
fillFluid(xCoord, yCoord - 1, zCoord, getTact(), type);
fillFluid(xCoord, yCoord + 3, zCoord, getTact(), type);
}
@Override
public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) {
Library.transmitFluid(x, y, z, newTact, this, worldObj, type);
}
@Override
public boolean getTact() {
return worldObj.getTotalWorldTime() % 20 < 10;
}
private List<IFluidAcceptor> consumers = new ArrayList();
@Override
public List<IFluidAcceptor> getFluidList(FluidType type) {
return consumers;
}
@Override
public void clearFluidList(FluidType type) {
consumers.clear();
}
}

View File

@ -234,8 +234,10 @@ container.machineCMB=CMB-Stahl Hochofen
container.machineCoal=Verbrennungsgenerator
container.machineDiesel=Dieselgenerator
container.machineElectricBoiler=Elektrischer Boiler
container.machineFEL=FEL
container.machineITER=Kernfusionsreaktor
container.machineLargeTurbine=Industrielle Dampfturbine
container.machineLiquefactor=Verflüssiger
container.machineRefinery=Ölraffinerie
container.machineSelenium=Hochleistungs-Sternmotor
container.machineShredder=Brecher
@ -438,6 +440,7 @@ hazard.particleFine=Feinstaub
hazard.sand=Augenreizstoffe
hbm.key=NTM Hotkeys
hbm.key.calculator=Taschenrechner
hbm.key.craneLoad=Kran laden/entladen
hbm.key.craneMoveDown=Kran rückwärts
hbm.key.craneMoveLeft=Kran nach links
@ -1530,6 +1533,7 @@ item.hev_boots.name=HEV Mark IV Stiefel
item.hev_plate.name=HEV Mark IV Brustpanzer
item.hev_helmet.name=HEV Mark IV Helm
item.hev_legs.name=HEV Mark IV Beinschutz
item.holotape_image.name=Holoband
item.horseshoe_magnet.name=Hufeisenmagnet
item.hull_big_aluminium.name=Große Aluminiumhülle
item.hull_big_steel.name=Große Stahlhülle
@ -1657,6 +1661,15 @@ item.key.name=Schlüssel
item.key_fake.name=Gefälschter Schlüssel
item.key_kit.name=Schlüssel-Imitationskit
item.key_red.name=Roter Schlüssel
item.laser_crystal_bismuth.desc=Bismuth-Samarium-Uran-Thorium-Kristallmatrix
item.laser_crystal_bismuth.name=BiSmUTh-Laserkristall
item.laser_crystal_cmb.desc=Antischrabidium in einem CMB-Schrabidat Legierungsgitter
item.laser_crystal_cmb.name=CMB-Schrabidat-Antimaterie-Laserkristall
item.laser_crystal_co2.desc=Kohlenstoffdioxid in kristallinem Desh
item.laser_crystal_co2.name=CO2-Desh-Laserkristall
item.laser_crystal_digamma.name=Digamma-Laserkristall
item.laser_crystal_dnt.desc=Dineutronium-Spark Fermion Superkristall
item.laser_crystal_dnt.name=Spark-Laserkristall
item.lead_gavel.name=Bleierner Richterhammer
item.lemon.name="Zitrone"
item.letter.name=Eilbrief
@ -3058,6 +3071,7 @@ tile.fireworks.color=Farbe: %s
tile.flame_war.name=Flamewar aus der Box
tile.float_bomb.name=Schwebebombe
tile.fluid_duct.name=Universelles Flüssigkeitsrohr
tile.fluid_duct_solid.name=Geschirmtes universelles Flüssigkeitsrohr
tile.foam_layer.name=Schaumdecke
tile.fraction_spacer.name=Fraktionierungsturm-Teiler
tile.frozen_dirt.name=Gefrorene Erde
@ -3187,6 +3201,7 @@ tile.machine_drill.name=Automatischer Minenbohrer
tile.machine_electric_furnace_off.name=Elektrischer Ofen
tile.machine_electric_furnace_on.name=Elektrischer Ofen
tile.machine_epress.name=Hydraulische Presse
tile.machine_fel.name=FEL
tile.machine_fensu.name=FEnSU
tile.machine_flare.name=Abfackelturm
tile.machine_fluidtank.name=Tank
@ -3587,6 +3602,17 @@ tool.ability.shredder=Auto-Brecher
tool.ability.silktouch=Behutsamkeit
tool.ability.smelter=Auto-Ofen
wavelengths.name.ir=Infrarot
wavelengths.name.visible=Sichtbares Licht
wavelengths.name.uv=Ultraviolett
wavelengths.name.gamma=Gamma
wavelengths.name.drx=Digamma
wavelengths.waveRange.ir=780nm-1mm
wavelengths.waveRange.visible=400nm-780nm
wavelengths.waveRange.uv=100nm-400nm
wavelengths.waveRange.gamma=<100pm
wavelengths.waveRange.drx=1916169 Plancklängen
weapon.ability.beheader=Köpfer
weapon.ability.bobble=Glück des Sammlers
# Should rhyme with the translation for "chainsaw"

View File

@ -367,8 +367,10 @@ container.machineCMB=CMB Steel Furnace
container.machineCoal=Combustion Generator
container.machineDiesel=Diesel Generator
container.machineElectricBoiler=Electric Boiler
container.machineFEL=FEL
container.machineITER=Fusion Reactor
container.machineLargeTurbine=Industrial Steam Turbine
container.machineLiquefactor=Liquefactor
container.machineRefinery=Oil Refinery
container.machineSelenium=Radial Performance Engine
container.machineShredder=Shredder
@ -575,6 +577,7 @@ hazard.particleFine=Particulates
hazard.sand=Eye Irritants
hbm.key=NTM Hotkeys
hbm.key.calculator=Calculator
hbm.key.craneLoad=Load/Unload Crane
hbm.key.craneMoveDown=Move Crane Backward
hbm.key.craneMoveLeft=Move Crane Left
@ -1702,6 +1705,7 @@ item.hev_boots.name=HEV Mark IV Boots
item.hev_plate.name=HEV Mark IV Chestplate
item.hev_helmet.name=HEV Mark IV Helmet
item.hev_legs.name=HEV Mark IV Leggings
item.holotape_image.name=Holotape
item.horseshoe_magnet.name=Horseshoe Magnet
item.hull_big_aluminium.name=Big Aluminium Shell
item.hull_big_steel.name=Big Steel Shell
@ -1849,6 +1853,15 @@ item.key_kit.name=Key Imitation Kit
item.key_red.name=Red Key
item.key_red.desc=Explore the other side.
item.key_red.desc.P11=§4e§r
item.laser_crystal_bismuth.desc=Bismuth-Samarium-Uranium-Thorium crystal matrix
item.laser_crystal_bismuth.name=BiSmUTh Laser Crystal
item.laser_crystal_cmb.desc=Antischrabidium Suspended in a CMB-Schrabidate Alloy Lattice
item.laser_crystal_cmb.name=CMB-Schrabidate Antimatter Laser Crystal
item.laser_crystal_co2.desc=Carbon Dioxide encased in Crystalline Desh
item.laser_crystal_co2.name=CO2-Desh Laser Crystal
item.laser_crystal_digamma.name=Digamma Laser Crystal
item.laser_crystal_dnt.desc=Dineutronium-Spark Fermion Supercrystal
item.laser_crystal_dnt.name=Spark Laser Crystal
item.lead_gavel.name=Leaden Gavel
item.lemon.name="Lemon"
item.letter.name=Express Mail
@ -3375,6 +3388,7 @@ tile.fireworks.color=Color: %s
tile.flame_war.name=Flame War in a Box
tile.float_bomb.name=Levitation Bomb
tile.fluid_duct.name=Universal Fluid Duct
tile.fluid_duct_solid.name=Coated Universal Fluid Duct
tile.foam_layer.name=Foam layer
tile.fraction_spacer.name=Fractioning Tower Separator
tile.frozen_dirt.name=Frozen Dirt
@ -3504,6 +3518,7 @@ tile.machine_drill.name=Automatic Mining Drill
tile.machine_electric_furnace_off.name=Electric Furnace
tile.machine_electric_furnace_on.name=Electric Furnace
tile.machine_epress.name=Electric Press
tile.machine_fel.name=FEL
tile.machine_fensu.name=FEnSU
tile.machine_flare.name=Gas Flare
tile.machine_fluidtank.name=Tank
@ -3902,6 +3917,17 @@ tool.ability.shredder=Auto-Shredder
tool.ability.silktouch=Silk Touch
tool.ability.smelter=Auto-Smelter
wavelengths.name.ir=Infrared
wavelengths.name.visible=Visible Light
wavelengths.name.uv=Ultraviolet
wavelengths.name.gamma=Gamma
wavelengths.name.drx=Digamma
wavelengths.waveRange.ir=780nm-1mm
wavelengths.waveRange.visible=400nm-780nm
wavelengths.waveRange.uv=100nm-400nm
wavelengths.waveRange.gamma=<100pm
wavelengths.waveRange.drx=1916169 planck lengths
weapon.ability.beheader=Decapitator
weapon.ability.bobble=Luck of the Collector
# Should rhyme with the translation for "chainsaw"

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 348 B

After

Width:  |  Height:  |  Size: 339 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB