now's your chance to take a [BIG SHIT]

This commit is contained in:
Bob 2025-07-18 23:34:43 +02:00
parent 6bbb002e34
commit b7641dcd54
30 changed files with 154 additions and 102 deletions

View File

@ -9,8 +9,18 @@
* Replace the journals
* Instead of opening them and making a template, they act as a multi template
* Blueprints need to remain in the slot, removing them will disable the recipes again
* More paintables
* Paintable pneumatic tube
* Behaves the exact same as a regular pneumatic tube
* Can also be used as in and outputs
* Full block
* Paintable OpenComputers cable
* Only enabled if OpenComputers is installed
* Full block
* Also supports OC wire colors
## Changed
* Updated chinese and ukrainian localization
* Removed levitation unit
* Many of NTM's regular building blocks now have forge microblock support
* RBMK crane models now conform to the dimensions of the room they're in
@ -19,9 +29,22 @@
* Electric attacks (i.e. tesla cannon) are now in the "energy damage" category
* This means that armors that have energy resistance actually properly work against the tesla cannon
* Heavy components are being deprecated
* Flow control pumps can now be interfaced with OpenComputers
* The electrolyzer now remembers the last visited GUI screen
* Retextured many fluid containers such as universal tanks, canisters and gas tanks
* Removed the legacy assembler and chemical plant recipes from the template folder
* Removed journals from various loot pools
* Drinking whiskey now gives strength III, resistance III and nausea
* Chemical artillery shell recipes have now been moved to the assembler
* The chemical plant and factory now scale their max power based on the recipe, similar to how the arc welder works
* The chemical plant's default max power is now 100kHE again instead of 1MHE
## Fixed
* Fixed gas centrifuge sound persisting when broken or when unloaded
* Fixed all centrifuge sounds trying to play even when the player is far away, using up audio slots
* Fixed guns that don't have durability always displaying a condition of 0%
* Fixed GL state leak caused by skeletons
* Fixed GL state leak caused by skeletons
* Fixed OpenComputers integration for the CCGT
* Fixed rotated RBMK consoles not behaving correctly when trying to change rod insertion levels
* Fixed crash caused by piston inserters on servers
* Fixed flare gun not having a firing sound

View File

@ -113,7 +113,7 @@ public class ToolRecipes {
//Utility
CraftingManager.addRecipeAuto(new ItemStack(ModItems.rangefinder, 1), new Object[] { "GRC", " S", 'G', KEY_ANYPANE, 'R', REDSTONE.dust(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'S' ,STEEL.plate() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.designator, 1), new Object[] { " A", "#B#", "#B#", '#', IRON.plate(), 'A', STEEL.plate(), 'B', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.designator, 1), new Object[] { " A", "#B#", "#B#", '#', ANY_PLASTIC.ingot(), 'A', STEEL.plate(), 'B', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) });
CraftingManager.addShapelessAuto(new ItemStack(ModItems.designator_range, 1), new Object[] { ModItems.rangefinder, ModItems.designator, ANY_PLASTIC.ingot() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.designator_manual, 1), new Object[] { " A", "#C#", "#B#", '#', ANY_PLASTIC.ingot(), 'A', PB.plate(), 'B', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'C', ModItems.designator });
CraftingManager.addShapelessAuto(new ItemStack(ModItems.designator_arty_range, 1), new Object[] { ModItems.rangefinder, DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), ANY_PLASTIC.ingot() });

View File

@ -1,7 +1,6 @@
package com.hbm.handler;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.network.BlockOpenComputersCablePaintable;
import com.hbm.inventory.RecipesCommon;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids;
@ -17,7 +16,6 @@ import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.*;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.oredict.OreDictionary;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

View File

@ -10,16 +10,11 @@ import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.recipes.AssemblerRecipes;
import com.hbm.inventory.recipes.AssemblerRecipes.AssemblerRecipe;
import com.hbm.inventory.recipes.ChemplantRecipes;
import com.hbm.inventory.recipes.ChemplantRecipes.ChemRecipe;
import com.hbm.inventory.recipes.CrucibleRecipes;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemAssemblyTemplate;
import com.hbm.items.machine.ItemCassette;
import com.hbm.items.machine.ItemStamp;
import com.hbm.items.machine.ItemStamp.StampType;
@ -83,22 +78,8 @@ public class GUIScreenTemplateFolder extends GuiScreen {
}
}
}
// Assembly Templates
for(int i = 0; i < AssemblerRecipes.recipeList.size(); i++) {
ComparableStack comp = AssemblerRecipes.recipeList.get(i);
AssemblerRecipe recipe = AssemblerRecipes.recipes.get(comp);
if(recipe != null && recipe.folders.contains(item)) {
allStacks.add(ItemAssemblyTemplate.writeType(new ItemStack(ModItems.assembly_template, 1, i), comp));
}
}
if(!this.isJournal) {
// Chemistry Templates
for(int i = 0; i < ChemplantRecipes.recipes.size(); i++) {
ChemRecipe chem = ChemplantRecipes.recipes.get(i);
allStacks.add(new ItemStack(ModItems.chemistry_template, 1, chem.getId()));
}
// Crucible Templates
for(int i = 0; i < CrucibleRecipes.recipes.size(); i++) {

View File

@ -16,6 +16,7 @@ import com.hbm.inventory.OreDictManager.DictFrame;
import com.hbm.inventory.RecipesCommon.AStack;
import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.inventory.RecipesCommon.OreDictStack;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.material.Mats;
import com.hbm.inventory.recipes.loader.GenericRecipe;
@ -233,7 +234,7 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
this.register(new GenericRecipe("ass.epress").setup(100, 100).outputItems(new ItemStack(ModBlocks.machine_epress, 1))
.inputItems(new OreDictStack(STEEL.plate(), 8), new OreDictStack(ANY_RUBBER.ingot(), 4), new ComparableStack(ModItems.part_generic, 2, EnumPartType.PISTON_HYDRAULIC.ordinal()), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC)));
this.register(new GenericRecipe("ass.fel").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_fel, 1))
.inputItems(new ComparableStack(ModBlocks.machine_lithium_battery, 1), new OreDictStack(ALLOY.wireDense(), 64), new OreDictStack(STEEL.plateCast(), 12), new OreDictStack(ANY_PLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC)));
.inputItems(new ComparableStack(ModBlocks.machine_lithium_battery, 1), new OreDictStack(ALLOY.wireDense(), 64), new OreDictStack(STEEL.plateCast(), 12), new OreDictStack(ANY_PLASTIC.ingot(), 16), new ComparableStack(ModItems.part_generic, 4, EnumPartType.GLASS_POLARIZED), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC)));
this.register(new GenericRecipe("ass.silex").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_silex, 1))
.inputItems(new ComparableStack(ModBlocks.glass_quartz, 16), new OreDictStack(STEEL.plateCast(), 8), new OreDictStack(DESH.ingot(), 4), new OreDictStack(RUBBER.ingot(), 8), new OreDictStack(STEEL.pipe(), 8)));
this.register(new GenericRecipe("ass.excavator").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_excavator, 1))
@ -669,6 +670,15 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
this.register(new GenericRecipe("ass.50bmgbypass").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_secret, 12, EnumAmmoSecret.BMG50_BLACK.ordinal()))
.inputItems(new ComparableStack(ModItems.casing, 2, EnumCasingType.LARGE_STEEL), new OreDictStack(ANY_SMOKELESS.dust(), 24), new ComparableStack(ModItems.item_secret, 1, EnumSecretType.SELENIUM_STEEL), new ComparableStack(ModItems.black_diamond))
.setPools(GenericRecipes.POOL_PREFIX_SECRET + "psalm"));
this.register(new GenericRecipe("chem.shellchlorine").setup(100, 1_000).outputItems(new ItemStack(ModItems.ammo_arty, 1, 9))
.inputItems(new ComparableStack(ModItems.ammo_arty, 1, 0), new OreDictStack(ANY_PLASTIC.ingot(), 1))
.inputFluids(new FluidStack(Fluids.CHLORINE, 4_000)));
this.register(new GenericRecipe("ass.shellphosgene").setup(100, 1_000).outputItems(new ItemStack(ModItems.ammo_arty, 1, 10))
.inputItems(new ComparableStack(ModItems.ammo_arty, 1, 0), new OreDictStack(ANY_PLASTIC.ingot(), 1))
.inputFluids(new FluidStack(Fluids.PHOSGENE, 4_000)));
this.register(new GenericRecipe("ass.shellmustard").setup(100, 1_000).outputItems(new ItemStack(ModItems.ammo_arty, 1, 11))
.inputItems(new ComparableStack(ModItems.ammo_arty, 1, 0), new OreDictStack(ANY_PLASTIC.ingot(), 1))
.inputFluids(new FluidStack(Fluids.MUSTARDGAS, 4_000)));
// tools
this.register(new GenericRecipe("ass.multitool").setup(100, 100).outputItems(new ItemStack(ModItems.multitool_hit, 1))
@ -773,6 +783,19 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE),
new ComparableStack(ModItems.circuit, 64, EnumCircuitType.CONTROLLER_QUANTUM),
new ComparableStack(ModItems.coin_ufo, 1)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "gerald"));
this.register(new GenericRecipe("ass.emptypackage").setup(40, 100).outputItems(new ItemStack(ModItems.fluid_pack_empty, 1))
.inputItems(new OreDictStack(TI.plate(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 2)));
FluidType[] order = Fluids.getInNiceOrder();
for(int i = 1; i < order.length; ++i) {
FluidType type = order[i];
if(type.hasNoContainer()) continue;
this.register(new GenericRecipe("ass.package" + type.getUnlocalizedName()).setup(100, 100).outputItems(new ItemStack(ModItems.fluid_pack_full, 1, type.getID()))
.inputItems(new ComparableStack(ModItems.fluid_pack_empty)).inputFluids(new FluidStack(type, 32_000)));
this.register(new GenericRecipe("ass.unpackage" + type.getUnlocalizedName()).setup(100, 100).setIcon(ItemFluidIcon.make(type, 32_000)).outputItems(new ItemStack(ModItems.fluid_pack_empty))
.inputItems(new ComparableStack(ModItems.fluid_pack_full, 1, type.getID())).outputFluids(new FluidStack(type, 32_000)));
}
if(GeneralConfig.enableMekanismChanges && Loader.isModLoaded("Mekanism")) {
Block mb = (Block) Block.blockRegistry.getObject("Mekanism:MachineBlock");

View File

@ -268,21 +268,6 @@ public class ChemicalPlantRecipes extends GenericRecipes<GenericRecipe> {
.inputFluids(new FluidStack(Fluids.UNSATURATEDS, 500, GeneralConfig.enable528 ? 1 : 0))
.outputItems(new ItemStack(ModItems.ingot_c4, 4)));
this.register(new GenericRecipe("chem.shellchlorine").setup(100, 1_000)
.inputItems(new ComparableStack(ModItems.ammo_arty, 1, 0), new OreDictStack(ANY_PLASTIC.ingot(), 1))
.inputFluids(new FluidStack(Fluids.CHLORINE, 4_000))
.outputItems(new ItemStack(ModItems.ammo_arty, 1, 9)));
this.register(new GenericRecipe("chem.shellphosgene").setup(100, 1_000)
.inputItems(new ComparableStack(ModItems.ammo_arty, 1, 0), new OreDictStack(ANY_PLASTIC.ingot(), 1))
.inputFluids(new FluidStack(Fluids.PHOSGENE, 4_000))
.outputItems(new ItemStack(ModItems.ammo_arty, 1, 10)));
this.register(new GenericRecipe("chem.shellmustard").setup(100, 1_000)
.inputItems(new ComparableStack(ModItems.ammo_arty, 1, 0), new OreDictStack(ANY_PLASTIC.ingot(), 1))
.inputFluids(new FluidStack(Fluids.MUSTARDGAS, 4_000))
.outputItems(new ItemStack(ModItems.ammo_arty, 1, 11)));
/// GLASS ///
this.register(new GenericRecipe("chem.laminate").setup(20, 100)
.inputFluids(new FluidStack(Fluids.XYLENE, 50), new FluidStack(Fluids.PHOSGENE, 50))

View File

@ -130,8 +130,6 @@ public class ItemPoolsLegacy {
weighted(ModItems.bomb_caller, 1, 1, 1, 1),
weighted(ModItems.bomb_caller, 2, 1, 1, 1),
weighted(ModItems.gas_mask_filter, 0, 1, 1, 4),
weighted(ModItems.journal_pip, 0, 1, 1, 1),
weighted(ModItems.journal_bj, 0, 1, 1, 1),
weighted(ModItems.launch_code_piece, 0, 1, 1, 1),
weighted(ModItems.gun_double_barrel, 0, 1, 1, 1),
};

View File

@ -844,6 +844,8 @@ public class ModItems {
public static Item fluid_barrel_full;
public static Item fluid_barrel_empty;
public static Item fluid_barrel_infinite;
public static Item fluid_pack_full;
public static Item fluid_pack_empty;
public static Item pipette;
public static Item pipette_boron;
public static Item pipette_laboratory;
@ -1181,12 +1183,12 @@ public class ModItems {
public static Item blueprints;
public static Item template_folder;
public static Item journal_pip;
public static Item journal_bj;
public static Item journal_silver;
public static Item assembly_template;
public static Item chemistry_template;
public static Item chemistry_icon;
@Deprecated public static Item journal_pip;
@Deprecated public static Item journal_bj;
@Deprecated public static Item journal_silver;
@Deprecated public static Item assembly_template;
@Deprecated public static Item chemistry_template;
@Deprecated public static Item chemistry_icon;
public static Item crucible_template;
public static Item fluid_identifier;
public static Item fluid_identifier_multi;
@ -4115,6 +4117,8 @@ public class ModItems {
fluid_barrel_empty = new Item().setUnlocalizedName("fluid_barrel_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel");
fluid_barrel_full = new ItemFluidTank().setUnlocalizedName("fluid_barrel_full").setContainerItem(ModItems.fluid_barrel_empty).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel");
fluid_barrel_infinite = new ItemInfiniteFluid(null, 1_000_000_000).setUnlocalizedName("fluid_barrel_infinite").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_barrel_infinite");
fluid_pack_empty = new Item().setUnlocalizedName("fluid_pack_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_pack");
fluid_pack_full = new ItemFluidTank().setUnlocalizedName("fluid_pack_full").setContainerItem(ModItems.fluid_pack_empty).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fluid_pack");
pipette = new ItemPipette().setUnlocalizedName("pipette").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pipette");
pipette_boron = new ItemPipette().setUnlocalizedName("pipette_boron").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pipette_boron");
pipette_laboratory = new ItemPipette().setUnlocalizedName("pipette_laboratory").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pipette_laboratory");
@ -5686,6 +5690,10 @@ public class ModItems {
GameRegistry.registerItem(fluid_barrel_empty, fluid_barrel_empty.getUnlocalizedName());
GameRegistry.registerItem(fluid_barrel_full, fluid_barrel_full.getUnlocalizedName());
GameRegistry.registerItem(fluid_barrel_infinite, fluid_barrel_infinite.getUnlocalizedName());
//Packaged fluids
GameRegistry.registerItem(fluid_pack_empty, fluid_pack_empty.getUnlocalizedName());
GameRegistry.registerItem(fluid_pack_full, fluid_pack_full.getUnlocalizedName());
//Pipette
GameRegistry.registerItem(pipette, pipette.getUnlocalizedName());

View File

@ -24,6 +24,7 @@ import net.minecraft.util.IIcon;
import net.minecraft.util.StatCollector;
import net.minecraftforge.oredict.OreDictionary;
@Deprecated
public class ItemAssemblyTemplate extends Item {
@SideOnly(Side.CLIENT)
@ -157,6 +158,7 @@ public class ItemAssemblyTemplate extends Item {
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
list.add(EnumChatFormatting.RED + "Deprecated");
if(!(stack.getItem() instanceof ItemAssemblyTemplate))
return;
@ -198,9 +200,6 @@ public class ItemAssemblyTemplate extends Item {
a++;
}
list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("info.templatefolder", String.join(" / ", names)));
list.add("");
if(out == null) {
list.add("I AM ERROR");
return;

View File

@ -56,13 +56,19 @@ public class ItemBlueprints extends Item {
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, List list) {
for(Entry<String, List<String>> pool : GenericRecipes.blueprintPools.entrySet()) {
list.add(make(pool.getKey()));
String poolName = pool.getKey();
if(!poolName.startsWith(GenericRecipes.POOL_PREFIX_SECRET)) list.add(make(poolName));
}
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
if(world.isRemote) return stack;
if(!stack.hasTagCompound()) return stack;
String poolName = stack.stackTagCompound.getString("pool");
if(poolName.startsWith(GenericRecipes.POOL_PREFIX_SECRET)) return stack;
if(!player.inventory.hasItem(Items.paper)) return stack;
player.inventory.consumeInventoryItem(Items.paper);
@ -94,7 +100,6 @@ public class ItemBlueprints extends Item {
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
list.add(EnumChatFormatting.RED + "Right-click to copy (requires paper)");
if(!stack.hasTagCompound()) {
return;
@ -106,6 +111,11 @@ public class ItemBlueprints extends Item {
if(pool == null || pool.isEmpty()) {
return;
}
if(poolName.startsWith(GenericRecipes.POOL_PREFIX_SECRET)) {
list.add(EnumChatFormatting.RED + "Cannot be copied!");
} else {
list.add(EnumChatFormatting.YELLOW + "Right-click to copy (requires paper)");
}
for(String name : pool) {
GenericRecipe recipe = GenericRecipes.pooledBlueprints.get(name);

View File

@ -15,6 +15,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.util.StatCollector;
@Deprecated
public class ItemChemistryIcon extends Item {
@SideOnly(Side.CLIENT)

View File

@ -16,6 +16,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.StatCollector;
@Deprecated
public class ItemChemistryTemplate extends Item {
public ItemChemistryTemplate() {
@ -51,6 +52,7 @@ public class ItemChemistryTemplate extends Item {
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
list.add(EnumChatFormatting.RED + "Deprecated");
if(!(stack.getItem() instanceof ItemChemistryTemplate))
return;
@ -61,9 +63,6 @@ public class ItemChemistryTemplate extends Item {
return;
}
list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("info.templatefolder", I18nUtil.resolveKey(ModItems.template_folder.getUnlocalizedName() + ".name")));
list.add("");
try {
list.add(EnumChatFormatting.BOLD + I18nUtil.resolveKey("info.template_out_p"));
for(int i = 0; i < 4; i++) {

View File

@ -30,9 +30,7 @@ public class ItemFluidTank extends Item {
for(int i = 1; i < order.length; ++i) {
FluidType type = order[i];
if(type.hasNoContainer())
continue;
if(type.hasNoContainer()) continue;
int id = type.getID();
if(type.needsLeadContainer()) {
@ -46,14 +44,10 @@ public class ItemFluidTank extends Item {
}
}
@Override
public String getItemStackDisplayName(ItemStack stack) {
String s = ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim();
String s1 = ("" + StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getConditionalName())).trim();
if(s1 != null) {
s = s + " " + s1;
}
String s = ("" + StatCollector.translateToLocalFormatted(this.getUnlocalizedName() + ".name", s1)).trim();
return s;
}
@ -68,12 +62,10 @@ public class ItemFluidTank extends Item {
public void registerIcons(IIconRegister p_94581_1_) {
super.registerIcons(p_94581_1_);
if(this == ModItems.fluid_tank_full)
this.overlayIcon = p_94581_1_.registerIcon("hbm:fluid_tank_overlay");
if(this == ModItems.fluid_tank_lead_full)
this.overlayIcon = p_94581_1_.registerIcon("hbm:fluid_tank_lead_overlay");
if(this == ModItems.fluid_barrel_full)
this.overlayIcon = p_94581_1_.registerIcon("hbm:fluid_barrel_overlay");
if(this == ModItems.fluid_tank_full) this.overlayIcon = p_94581_1_.registerIcon("hbm:fluid_tank_overlay");
if(this == ModItems.fluid_tank_lead_full) this.overlayIcon = p_94581_1_.registerIcon("hbm:fluid_tank_lead_overlay");
if(this == ModItems.fluid_barrel_full) this.overlayIcon = p_94581_1_.registerIcon("hbm:fluid_barrel_overlay");
if(this == ModItems.fluid_pack_full) this.overlayIcon = p_94581_1_.registerIcon("hbm:fluid_pack_overlay");
}
@Override
@ -84,18 +76,13 @@ public class ItemFluidTank extends Item {
@Override
@SideOnly(Side.CLIENT)
public int getColorFromItemStack(ItemStack stack, int p_82790_2_) {
if(p_82790_2_ == 0) {
public int getColorFromItemStack(ItemStack stack, int pass) {
if(pass == 0) {
return 16777215;
} else {
int j = Fluids.fromID(stack.getItemDamage()).getColor();
if(j < 0) {
j = 16777215;
}
if(j < 0) j = 16777215;
return j;
}
}
}

View File

@ -27,6 +27,8 @@ import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.DamageSource;
import net.minecraft.util.MovingObjectPosition;
@ -942,7 +944,7 @@ public class Orchestras {
if(timer == 2) {
SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory);
if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? -0.0625 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, -10F + (float)entity.getRNG().nextGaussian() * 2.5F, (float)entity.getRNG().nextGaussian() * -20F + 15F, casing.getName(), false, 60, 0.5D, 20);
if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? -0.0625 : -0.125, aiming ? -0.125 : -0.25D, 0, 0.18, -0.12, 0.01, -10F + (float)entity.getRNG().nextGaussian() * 2.5F, (float)entity.getRNG().nextGaussian() * -20F + 15F, casing.getName(), false, 60, 0.5D, 20);
}
}
@ -969,6 +971,11 @@ public class Orchestras {
if(timer == 30) entity.worldObj.playSoundAtEntity(entity, "hbm:player.gulp", 1F, 1F);
if(timer == 35) entity.worldObj.playSoundAtEntity(entity, "hbm:player.gulp", 1F, 1F);
if(timer == 50) entity.worldObj.playSoundAtEntity(entity, "hbm:player.groan", 1F, 1F);
if(timer == 60) {
entity.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 30 * 20, 2));
entity.addPotionEffect(new PotionEffect(Potion.resistance.id, 30 * 20, 2));
entity.addPotionEffect(new PotionEffect(Potion.confusion.id, 10 * 20, 0));
}
}
};

View File

@ -375,7 +375,7 @@ public class XFactory12ga {
).setUnlocalizedName("gun_autoshotgun_shredder");
ModItems.gun_autoshotgun_sexy = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig()
.dura(5_000).draw(20).inspect(33).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).hideCrosshair(false).smoke(Lego.LAMBDA_STANDARD_SMOKE)
.dura(5_000).draw(20).inspect(65).reloadSequential(true).inspectCancel(false).crosshair(Crosshair.L_CIRCLE).hideCrosshair(false).smoke(Lego.LAMBDA_STANDARD_SMOKE)
.rec(new Receiver(0)
.dmg(64F).delay(4).auto(true).dryfireAfterAuto(true).reload(110).jam(19).sound("hbm:weapon.fire.shotgunAuto", 1.0F, 1.0F)
.mag(new MagazineFullReload(0, 100).addConfigs(g12_equestrian_bj, g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus))

View File

@ -3,6 +3,7 @@ package com.hbm.module.machine;
import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.recipes.AssemblyMachineRecipes;
import com.hbm.inventory.recipes.loader.GenericRecipe;
import com.hbm.util.BobMathUtil;
import api.hbm.energymk2.IEnergyHandlerMK2;
import net.minecraft.item.ItemStack;
@ -21,6 +22,14 @@ public class ModuleMachineAssembler extends ModuleMachineBase {
public GenericRecipe getRecipe() {
return AssemblyMachineRecipes.INSTANCE.recipeNameMap.get(this.recipe);
}
@Override
public void setupTanks(GenericRecipe recipe) {
super.setupTanks(recipe);
if(recipe == null) return;
for(int i = 0; i < inputTanks.length; i++) if(recipe.inputFluid != null && recipe.inputFluid.length > i) inputTanks[i].changeTankSize(BobMathUtil.max(inputTanks[i].getFill(), recipe.inputFluid[i].fill * 2, 4_000));
for(int i = 0; i < outputTanks.length; i++) if(recipe.outputFluid != null && recipe.outputFluid.length > i) outputTanks[i].changeTankSize(BobMathUtil.max(outputTanks[i].getFill(), recipe.outputFluid[i].fill * 2, 4_000));
}
public ModuleMachineAssembler itemInput(int from) { for(int i = 0; i < inputSlots.length; i++) inputSlots[i] = from + i; return this; }
public ModuleMachineAssembler itemOutput(int a) { outputSlots[0] = a; return this; }

View File

@ -13,13 +13,11 @@ import com.hbm.tileentity.machine.TileEntityMachineAssemblyMachine;
import com.hbm.util.BobMathUtil;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
@ -109,7 +107,6 @@ public class RenderAssemblyMachine extends TileEntitySpecialRenderer implements
GL11.glRotated(90, 0, 1, 0);
GL11.glTranslated(0, 1.0625, 0);
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
ItemStack stack = recipe.getIcon();
stack.stackSize = 1;

View File

@ -11,6 +11,8 @@ import com.hbm.inventory.container.ContainerMachineAssemblyMachine;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.gui.GUIMachineAssemblyMachine;
import com.hbm.inventory.recipes.AssemblyMachineRecipes;
import com.hbm.inventory.recipes.loader.GenericRecipe;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemMachineUpgrade;
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
@ -44,7 +46,7 @@ public class TileEntityMachineAssemblyMachine extends TileEntityMachineBase impl
public FluidTank outputTank;
public long power;
public long maxPower = 1_000_000;
public long maxPower = 100_000;
public boolean didProcess = false;
public boolean frame = false;
@ -63,8 +65,8 @@ public class TileEntityMachineAssemblyMachine extends TileEntityMachineBase impl
public TileEntityMachineAssemblyMachine() {
super(17);
this.inputTank = new FluidTank(Fluids.NONE, 32_000);
this.outputTank = new FluidTank(Fluids.NONE, 32_000);
this.inputTank = new FluidTank(Fluids.NONE, 4_000);
this.outputTank = new FluidTank(Fluids.NONE, 4_000);
for(int i = 0; i < this.arms.length; i++) this.arms[i] = new AssemblerArm();
@ -85,6 +87,12 @@ public class TileEntityMachineAssemblyMachine extends TileEntityMachineBase impl
if(!worldObj.isRemote) {
GenericRecipe recipe = AssemblyMachineRecipes.INSTANCE.recipeNameMap.get(assemblerModule.recipe);
if(recipe != null) {
this.maxPower = recipe.power * 100;
}
this.maxPower = BobMathUtil.max(this.power, this.maxPower, 100_000);
this.power = Library.chargeTEFromItems(slots, 0, power, maxPower);
upgradeManager.checkSlots(slots, 2, 3);

View File

@ -10,6 +10,8 @@ import com.hbm.inventory.container.ContainerMachineChemicalFactory;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.gui.GUIMachineChemicalFactory;
import com.hbm.inventory.recipes.ChemicalPlantRecipes;
import com.hbm.inventory.recipes.loader.GenericRecipe;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemMachineUpgrade;
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
@ -49,7 +51,7 @@ public class TileEntityMachineChemicalFactory extends TileEntityMachineBase impl
public FluidTank lps;
public long power;
public long maxPower = 10_000_000;
public long maxPower = 1_000_000;
public boolean[] didProcess = new boolean[4];
public boolean frame = false;
@ -130,6 +132,16 @@ public class TileEntityMachineChemicalFactory extends TileEntityMachineBase impl
if(!worldObj.isRemote) {
long nextMaxPower = 0;
for(int i = 0; i < 4; i++) {
GenericRecipe recipe = ChemicalPlantRecipes.INSTANCE.recipeNameMap.get(chemplantModule[i].recipe);
if(recipe != null) {
nextMaxPower += recipe.power * 100;
}
}
this.maxPower = nextMaxPower;
this.maxPower = BobMathUtil.max(this.power, this.maxPower, 1_000_000);
this.power = Library.chargeTEFromItems(slots, 0, power, maxPower);
upgradeManager.checkSlots(slots, 1, 3);

View File

@ -10,6 +10,8 @@ import com.hbm.inventory.container.ContainerMachineChemicalPlant;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.gui.GUIMachineChemicalPlant;
import com.hbm.inventory.recipes.ChemicalPlantRecipes;
import com.hbm.inventory.recipes.loader.GenericRecipe;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemMachineUpgrade;
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
@ -43,7 +45,7 @@ public class TileEntityMachineChemicalPlant extends TileEntityMachineBase implem
public FluidTank[] outputTanks;
public long power;
public long maxPower = 1_000_000;
public long maxPower = 100_000;
public boolean didProcess = false;
public boolean frame = false;
@ -83,6 +85,12 @@ public class TileEntityMachineChemicalPlant extends TileEntityMachineBase implem
if(!worldObj.isRemote) {
GenericRecipe recipe = ChemicalPlantRecipes.INSTANCE.recipeNameMap.get(chemplantModule.recipe);
if(recipe != null) {
this.maxPower = recipe.power * 100;
}
this.maxPower = BobMathUtil.max(this.power, this.maxPower, 100_000);
this.power = Library.chargeTEFromItems(slots, 0, power, maxPower);
upgradeManager.checkSlots(slots, 2, 3);

View File

@ -144,8 +144,8 @@ public class ShadyUtil {
Field field = ReflectionHelper.findField(test, decode(offset(checksum, -2)));
if(field != null) {
System.out.println("TEST SECTION START");
Class toLoad = Class.forName(decode(offset(testCase, -2)));
Field toRead = ReflectionHelper.findField(toLoad, decode(offset(testValue, -2)));
//Class toLoad = Class.forName(decode(offset(testCase, -2)));
//Field toRead = ReflectionHelper.findField(toLoad, decode(offset(testValue, -2)));
//ModEventHandler.reference = toRead;
System.out.println("TEST SECTION END");
}

View File

@ -7,7 +7,6 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
import java.util.ArrayList;
import java.util.LinkedHashMap;
@ -22,13 +21,8 @@ public class LogicBlockInteractions {
public static LinkedHashMap<String, Consumer<Object[]>> interactions = new LinkedHashMap<>();
public static Consumer<Object[]> TEST = (array) -> {
World world = (World) array[0];
LogicBlock.TileEntityLogicBlock logic = (LogicBlock.TileEntityLogicBlock) array[1];
int x = (int) array[2];
int y = (int) array[3];
int z = (int) array[4];
EntityPlayer player = (EntityPlayer) array[5];
int side = (int) array[6];
if(logic.phase > 1) return;

View File

@ -1966,7 +1966,7 @@ item.fleija_igniter.name=Impulszünder
item.fleija_kit.name=F.L.E.I.J.A. Kit
item.fleija_propellant.name=Schrabidiumtreibladung
item.fluid_barrel_empty.name=Leeres Fass
item.fluid_barrel_full.name=Flüssigkeitsfass:
item.fluid_barrel_full.name=Flüssigkeitsfass: %s
item.fluid_barrel_infinite.name=Unendliches Fass
item.fluid_duct.name=Flüssigkeitsrohr:
item.fluid_identifier.name=Flüssigkeits-Kennzeichnung
@ -1977,10 +1977,12 @@ item.fluid_identifier.usage2=einer maximalen Reichweite von 64 Rohren zuzuweisen
item.fluid_identifier_multi.name=Multi-Flüssigkeits-Kennzeichnung
item.fluid_identifier_multi.info=Universelle Flüssigkeits-Kennzeichnung für:
item.fluid_identifier_multi.info2=Sekundärer Typ:
item.fluid_pack_empty.name=Großer Flüssigkeitsbehälter
item.fluid_pack_full.name=%s (Abgepackt)
item.fluid_tank_empty.name=Leere universelle Flüssigkeitszelle
item.fluid_tank_full.name=Universelle Flüssigkeitszelle:
item.fluid_tank_full.name=Universelle Flüssigkeitszelle: %s
item.fluid_tank_lead_empty.name=Leere Gefahrenstoffzelle
item.fluid_tank_lead_full.name=Gefahrenstoffzelle:
item.fluid_tank_lead_full.name=Gefahrenstoffzelle: %s
item.fluorite.name=Fluorit
item.flywheel_beryllium.name=Berylliumschwungscheibe
item.fmn.name=Flunitrazepamtablette

View File

@ -2772,7 +2772,7 @@ item.fleija_igniter.name=Pulse Igniter
item.fleija_kit.name=F.L.E.I.J.A. Kit
item.fleija_propellant.name=Schrabidium Propellant
item.fluid_barrel_empty.name=Empty Fluid Barrel
item.fluid_barrel_full.name=Fluid Barrel:
item.fluid_barrel_full.name=Fluid Barrel: %s
item.fluid_barrel_infinite.name=Infinite Fluid Barrel
item.fluid_duct.name=Fluid Duct:
item.fluid_identifier.name=Fluid Identifier
@ -2783,10 +2783,12 @@ item.fluid_identifier.usage2=up to a maximum range of 64 ducts.
item.fluid_identifier_multi.name=Multi Fluid Identifier
item.fluid_identifier_multi.info=Universal fluid identifier for:
item.fluid_identifier_multi.info2=Secondary type:
item.fluid_pack_empty.name=Large Fluid Container
item.fluid_pack_full.name=Packaged %s
item.fluid_tank_empty.name=Empty Universal Fluid Tank
item.fluid_tank_full.name=Universal Fluid Tank:
item.fluid_tank_full.name=Universal Fluid Tank: %s
item.fluid_tank_lead_empty.name=Empty Hazardous Material Tank
item.fluid_tank_lead_full.name=Hazardous Material Tank:
item.fluid_tank_lead_full.name=Hazardous Material Tank: %s
item.fluorite.name=Fluorite
item.flywheel_beryllium.name=Beryllium Flywheel
item.fmn.name=Flunitrazepam Tablet

View File

@ -222,6 +222,7 @@
"weapon.explosionSmallNear": {"category": "player", "sounds": ["weapon/explosionSmallNear1", "weapon/explosionSmallNear2", "weapon/explosionSmallNear3"]},
"weapon.explosionSmallFar": {"category": "player", "sounds": ["weapon/explosionSmallFar1", "weapon/explosionSmallFar2"]},
"weapon.explosionTiny": {"category": "player", "sounds": ["weapon/explosionTiny1", "weapon/explosionTiny2"]},
"weapon.hkShoot": {"category": "player", "sounds": [{"name": "weapon/hkShoot", "stream": false}]},
"weapon.dFlash": {"category": "player", "sounds": [{"name": "weapon/dFlash", "stream": false}]},

Binary file not shown.

After

Width:  |  Height:  |  Size: 477 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 B

After

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 180 B