emergency push

This commit is contained in:
HbmMods 2026-07-24 15:35:59 +02:00
parent 26982be0f2
commit 77f044ebdd
19 changed files with 213 additions and 41 deletions

View File

@ -25,9 +25,17 @@
* This preview is green if it can be placed and red if it can not
* On some machines, this preview might not be perfect, but the check on whether it can be placed should always be accurate
* This makes it easier to anticipate how much space a machine takes up, as well as lining up large parts like fusion reactor components which were notoriously hard to place down right
* Updated the small pylon model
* The small pylon now has a steel variant
* Items in the battery socket which previously didn't show up in the socket's model are now rendered
* Reduced the cost for the heavy stirling engine
## Fixed
* Fixed held block being placed when not sneaking when opening the cable diode's GUI
* Fixed an issue where the diesel generator's fuel capacity is the original 4,000mB instead of the intended new 16,000mB
* This means that explosive barrels and universal barrels can now be loaded into the diesel generator
* Fixed RoR terminal's `set` command not working
* Fixed a longstanding issue where the transparent part of beams from tile entity models would often have incorrect render order, sometimes rendering things behind them invisible
* This also fixes the same phenomenon for other types of beams, such as those from hitscan laser and tesla weapons
* Fixed some issues regarding the new crane structure
* Fixed skeletonizer ashes floating over the floor after landing

View File

@ -1512,7 +1512,7 @@ public class ModBlocks {
lightstone = new BlockLightstone(Material.rock, LightstoneType.class, true, true).setBlockName("lightstone").setCreativeTab(MainRegistry.blockTab).setHardness(2F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":lightstone");
brick_forgotten = new BlockForgottenBrick().setBlockName("brick_forgotten").setBlockUnbreakable().setResistance(666_666F).setBlockTextureName(RefStrings.MODID + ":brick_forgotten");
brick_forgotten_lock = new BlockForgottenLock(Material.rock, RefStrings.MODID + ":brick_forgotten_top").setBlockName("brick_forgotten_lock").setBlockUnbreakable().setResistance(666_666F).setBlockTextureName(RefStrings.MODID + ":brick_forgotten_lock");
brick_forgotten_lock = new BlockForgottenLock().setBlockName("brick_forgotten_lock").setBlockUnbreakable().setResistance(666_666F).setBlockTextureName(RefStrings.MODID + ":brick_forgotten_lock");
concrete_slab = new BlockMultiSlab(null, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_slab").setCreativeTab(MainRegistry.blockTab);
concrete_double_slab = new BlockMultiSlab(concrete_slab, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_double_slab").setCreativeTab(MainRegistry.blockTab);
@ -1902,7 +1902,7 @@ public class ModBlocks {
crane_splitter = new CraneSplitter().setBlockName("crane_splitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_side");
crane_partitioner = new CranePartitioner().setBlockName("crane_partitioner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_partitioner_side");
fan = new MachineFan().setBlockName("fan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel");
drone_waypoint = new DroneWaypoint().setBlockName("drone_waypoint").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint");
drone_crate = new DroneCrate().setBlockName("drone_crate").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);

View File

@ -3,6 +3,7 @@ package com.hbm.blocks.generic;
import java.util.List;
import com.hbm.blocks.BlockMulti;
import com.hbm.items.ModItems;
import com.hbm.lib.RefStrings;
import cpw.mods.fml.relauncher.Side;
@ -10,9 +11,11 @@ import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
public class BlockForgottenBrick extends BlockMulti {
@ -24,6 +27,13 @@ public class BlockForgottenBrick extends BlockMulti {
private IIcon iconEmpty;
private IIcon iconPlanks;
public static final int META_DEFAULT = 0;
public static final int META_BW = 1;
public static final int META_NULLSTONE = 2;
public static final int META_HOLE = 3;
public static final int META_HOLE_EMPTY = 4;
public static final int META_NULLROOM_WOOD = 5;
public BlockForgottenBrick() {
super(Material.rock);
}
@ -45,22 +55,22 @@ public class BlockForgottenBrick extends BlockMulti {
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta) {
if(meta == 1) {
if(meta == META_BW) {
if(side == 0 || side == 1) return this.iconAltTop;
return this.iconAlt;
}
if(meta == 2) {
if(meta == META_NULLSTONE) {
return this.iconStone;
}
if(meta == 3) {
if(meta == META_HOLE) {
if(side == 0 || side == 1) return this.iconTop;
return this.iconHole;
}
if(meta == 4) {
if(meta == META_HOLE_EMPTY) {
if(side == 0 || side == 1) return this.iconTop;
return this.iconEmpty;
}
if(meta == 5) {
if(meta == META_NULLROOM_WOOD) {
return this.iconPlanks;
}
@ -68,6 +78,22 @@ public class BlockForgottenBrick extends BlockMulti {
return this.blockIcon;
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
int meta = world.getBlockMetadata(x, y, z);
if(meta == META_HOLE) {
if(player.getHeldItem() == null) {
player.inventory.mainInventory[player.inventory.currentItem] = new ItemStack(ModItems.coal_eternal);
world.setBlockMetadataWithNotify(x, y, z, META_HOLE_EMPTY, 3);
return true;
}
return false;
}
return false;
}
@Override public int getSubCount() { return 6; }
@Override

View File

@ -1,22 +1,83 @@
package com.hbm.blocks.generic;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.machine.BlockPillar;
import com.hbm.items.ModItems;
import java.util.List;
import com.hbm.blocks.BlockMulti;
import com.hbm.blocks.ModBlocks;
import com.hbm.items.ModItems;
import com.hbm.lib.RefStrings;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class BlockForgottenLock extends BlockPillar {
public class BlockForgottenLock extends BlockMulti {
public BlockForgottenLock(Material mat, String top) {
super(mat, top);
private IIcon iconTop;
private IIcon iconAlt;
private IIcon iconAltTop;
private IIcon iconStone;
private IIcon iconStoneTop;
public static final int META_DEFAULT = 0;
public static final int META_BW = 1;
public static final int META_NULLSTONE = 2;
public static final int META_THE_BLOCK_THAT_FUCKING_KILLS_YOU = 3;
public BlockForgottenLock() {
super(Material.rock);
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister reg) {
super.registerBlockIcons(reg);
this.iconTop = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_top");
this.iconAlt = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_bw_lock");
this.iconStone = reg.registerIcon(RefStrings.MODID + ":playground/nullstone_demo_2_wip");
this.iconStoneTop = reg.registerIcon(RefStrings.MODID + ":playground/nullstone_demo_1_wip");
this.iconAltTop = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_bw_top");
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta) {
if(meta == META_BW) {
if(side == 0 || side == 1) return this.iconAltTop;
return this.iconAlt;
}
if(meta == META_NULLSTONE) {
if(side == 0 || side == 1) return this.iconStoneTop;
return this.iconStone;
}
if(side == 0 || side == 1) return this.iconTop;
return this.blockIcon;
}
/*
* A red herring is something that misleads or distracts from a relevant or important question.[1]
* It may be either a logical fallacy or a literary device that leads readers or audiences toward a
* false conclusion. A red herring may be used intentionally, as in mystery fiction or as part of
* rhetorical strategies (e.g., in politics), or may be used in argumentation inadvertently.[2]
*
* The expression was popularized in 1807 by the English polemicist William Cobbett, who told a
* story of having used a strong-smelling smoked herring to divert and distract hounds from
* chasing a rabbit.[3]
*/
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
@ -49,4 +110,14 @@ public class BlockForgottenLock extends BlockPillar {
world.setBlock(x - dir.offsetX * d + rot.offsetX * w, y + h, z - dir.offsetZ * d + rot.offsetZ * w, b);
}
}
@Override public int getSubCount() { return 3; }
@Override
@SideOnly(Side.CLIENT)
public void getSubBlocks(Item item, CreativeTabs tab, List list) {
for(int i = 0; i < getSubCount(); ++i) {
list.add(new ItemStack(item, 1, i));
}
}
}

View File

@ -39,6 +39,7 @@ public class FuelHandler implements IFuelHandler {
if(fuel.getItem() == Item.getItemFromBlock(ModBlocks.block_coke)) return single * 160;
if(fuel.getItem() == ModItems.book_guide) return single;
if(fuel.getItem() == ModItems.coal_infernal) return 4800;
if(fuel.getItem() == ModItems.coal_eternal) return single * 16;
if(fuel.getItem() == ModItems.crystal_coal) return 6400;
if(fuel.getItem() == ModItems.powder_sawdust) return single / 2;

View File

@ -333,8 +333,8 @@ public class AnvilRecipes extends SerializableRecipe {
new AStack[] {
new OreDictStack(STEEL.plate(), 16),
new OreDictStack(BE.ingot(), 6),
new OreDictStack(CU.ingot(), 8),
new ComparableStack(ModItems.coil_gold, 16),
new OreDictStack(CU.ingot(), 4),
new ComparableStack(ModItems.coil_gold, 8),
new ComparableStack(ModItems.gear_large, 1, 1)
}, new AnvilOutput(new ItemStack(ModBlocks.machine_stirling_steel))).setTier(2));
@ -698,8 +698,8 @@ public class AnvilRecipes extends SerializableRecipe {
new AnvilOutput[] {
new AnvilOutput(new ItemStack(ModItems.plate_steel, 16)),
new AnvilOutput(new ItemStack(ModItems.ingot_beryllium, 6)),
new AnvilOutput(new ItemStack(ModItems.ingot_copper, 8)),
new AnvilOutput(new ItemStack(ModItems.coil_gold, 16)),
new AnvilOutput(new ItemStack(ModItems.ingot_copper, 4)),
new AnvilOutput(new ItemStack(ModItems.coil_gold, 8)),
new AnvilOutput(new ItemStack(ModItems.gear_large,1, 1)),
}
@ -725,8 +725,8 @@ public class AnvilRecipes extends SerializableRecipe {
new AnvilOutput[] {
new AnvilOutput(new ItemStack(ModItems.plate_steel, 16)),
new AnvilOutput(new ItemStack(ModItems.ingot_beryllium, 6)),
new AnvilOutput(new ItemStack(ModItems.ingot_copper, 8)),
new AnvilOutput(new ItemStack(ModItems.coil_gold, 16)),
new AnvilOutput(new ItemStack(ModItems.ingot_copper, 4)),
new AnvilOutput(new ItemStack(ModItems.coil_gold, 8)),
}
).setTier(2));

View File

@ -105,6 +105,7 @@ public class ModItems {
public static Item powder_lignite;
public static Item briquette;
public static Item coal_infernal;
public static Item coal_eternal;
public static Item cinnebar;
public static Item powder_ash;
public static Item powder_limestone;
@ -2338,6 +2339,7 @@ public class ModItems {
briquette = new ItemEnumMulti(EnumBriquetteType.class, true, true).setUnlocalizedName("briquette").setCreativeTab(MainRegistry.partsTab);
powder_lignite = new Item().setUnlocalizedName("powder_lignite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_lignite");
coal_infernal = new Item().setUnlocalizedName("coal_infernal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coal_infernal");
coal_eternal = new Item().setUnlocalizedName("coal_eternal").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":coal_eternal");
cinnebar = new Item().setUnlocalizedName("cinnebar").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":cinnebar");
powder_ash = new ItemEnumMulti(EnumAshType.class, true, true).setUnlocalizedName("powder_ash").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_ash");
powder_limestone = new Item().setUnlocalizedName("powder_limestone").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_limestone");
@ -4406,6 +4408,8 @@ public class ModItems {
BucketHandler.INSTANCE.buckets.put(ModBlocks.schrabidic_block, ModItems.bucket_schrabidic_acid);
BucketHandler.INSTANCE.buckets.put(ModBlocks.sulfuric_acid_block, ModItems.bucket_sulfuric_acid);
MinecraftForge.EVENT_BUS.register(BucketHandler.INSTANCE);
coal_eternal.setContainerItem(coal_eternal);
}
private static void registerItem() {
@ -4605,6 +4609,7 @@ public class ModItems {
GameRegistry.registerItem(coke, coke.getUnlocalizedName());
GameRegistry.registerItem(lignite, lignite.getUnlocalizedName());
GameRegistry.registerItem(coal_infernal, coal_infernal.getUnlocalizedName());
GameRegistry.registerItem(coal_eternal, coal_eternal.getUnlocalizedName());
GameRegistry.registerItem(briquette, briquette.getUnlocalizedName());
GameRegistry.registerItem(sulfur, sulfur.getUnlocalizedName());
GameRegistry.registerItem(niter, niter.getUnlocalizedName());

View File

@ -299,7 +299,6 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(ModBlocks.furnace_iron), new Object[] { "III", "IFI", "BBB", 'I', IRON.ingot(), 'F', Blocks.furnace, 'B', Blocks.stonebrick });
addRecipeAuto(new ItemStack(ModBlocks.machine_mixer), new Object[] { "PIP", "GCG", "PMP", 'P', STEEL.plate(), 'I', DURA.ingot(), 'G', KEY_ANYPANE, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'M', ModItems.motor });
addRecipeAuto(new ItemStack(ModBlocks.fan), new Object[] { "BPB", "PRP", "BPB", 'B', STEEL.bolt(), 'P', IRON.plate(), 'R', REDSTONE.dust() });
addRecipeAuto(new ItemStack(ModBlocks.piston_inserter), new Object[] { "ITI", "TPT", "ITI", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', IRON.plate(), 'T', STEEL.bolt() });
addRecipeAuto(new ItemStack(ModItems.upgrade_muffler, 16), new Object[] { "III", "IWI", "III", 'I', ANY_RUBBER.ingot(), 'W', Blocks.wool });
addRecipeAuto(new ItemStack(ModItems.upgrade_template, 1), new Object[] { "WIW", "PCP", "WIW", 'W', CU.wireFine(), 'I', IRON.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'P', ModItems.plate_polymer });

View File

@ -72,14 +72,15 @@ public class ParticleAshes extends EntityFXRotating {
float pZ = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ);
Vec3NT vec = new Vec3NT(particleScale, 0, particleScale).rotateAroundYDeg(this.rotationPitch);
double yOff = 0.09;
tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMaxV());
tess.addVertexWithUV(pX + vec.xCoord, pY - yOff, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMaxV());
vec.rotateAroundYDeg(90);
tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMinV());
tess.addVertexWithUV(pX + vec.xCoord, pY - yOff, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMinV());
vec.rotateAroundYDeg(90);
tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMinV());
tess.addVertexWithUV(pX + vec.xCoord, pY - yOff, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMinV());
vec.rotateAroundYDeg(90);
tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMaxV());
tess.addVertexWithUV(pX + vec.xCoord, pY - yOff, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMaxV());
} else {
renderParticleRotated(tess, interp, sX, sY, sZ, dX, dZ, this.particleScale);
}

View File

@ -94,7 +94,7 @@ public class RenderBatterySocket extends TileEntitySpecialRenderer implements II
GL11.glPushMatrix();
GL11.glTranslated(0, 0.5, 0);
GL11.glScaled(1.5, 1.5, 1.5);
GL11.glRotated((socket.getWorldObj().getTotalWorldTime() % 360 + interp) * 25D, 0, -1, 0);
GL11.glRotated((socket.getWorldObj().getTotalWorldTime() % 360 + interp) * 2.5D, 0, -1, 0);
if(dummy == null || dummy.worldObj != tile.getWorldObj()) {
dummy = new EntityItem(tile.getWorldObj(), 0, 0, 0, render);

View File

@ -2,7 +2,6 @@ package com.hbm.render.tileentity;
import org.lwjgl.opengl.GL11;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ModBlocks;
import com.hbm.main.ResourceManager;
import com.hbm.render.item.ItemRenderBase;

View File

@ -7,6 +7,7 @@ import com.hbm.util.Compat;
import api.hbm.redstoneoverradio.IRORInteractive;
import io.netty.buffer.ByteBuf;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraftforge.common.util.ForgeDirection;
@ -98,6 +99,22 @@ public class TileEntityPileControl extends TileEntityPileDeviceBase implements I
if(this.syncLevel != lastSync) this.turnProgress = 2;
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
this.level = nbt.getDouble("level");
this.targetLevel = nbt.getDouble("targetLevel");
this.wasRedstone = nbt.getBoolean("redstone");
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
nbt.setDouble("level", level);
nbt.setDouble("targetLevel", targetLevel);
nbt.setBoolean("wasRedstone", wasRedstone);
}
@Override
public String[] getFunctionInfo() {
return new String[] {

View File

@ -16,6 +16,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
@ -167,6 +168,35 @@ public class TileEntityPileLoader extends TileEntityPileDeviceBase implements IS
if(this.syncLevel != lastSync) this.turnProgress = 2;
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
this.loading = nbt.getBoolean("loading");
this.level = nbt.getDouble("level");
this.delay = nbt.getInteger("delay");
this.wasRedstone = nbt.getBoolean("redstone");
if(nbt.hasKey("stack")) {
this.stack = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("stack"));
}
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
nbt.setBoolean("loading", loading);
nbt.setDouble("level", level);
nbt.setInteger("delay", delay);
nbt.setBoolean("wasRedstone", wasRedstone);
if(this.stack != null) {
NBTTagCompound stackTag = new NBTTagCompound();
this.stack.writeToNBT(stackTag);
nbt.setTag("stack", stackTag);
}
}
public static boolean isItemLoadable(ItemStack stack) {
return stack.getItem() == ModItems.pile_rod;
}

View File

@ -11,6 +11,7 @@ import com.hbm.util.Compat;
import api.hbm.fluidmk2.IFluidStandardReceiverMK2;
import io.netty.buffer.ByteBuf;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
@ -99,4 +100,16 @@ public class TileEntityPileVent extends TileEntityPileDeviceBase implements IFlu
super.deserialize(buf);
this.isActive = buf.readBoolean();
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
compair.readFromNBT(nbt, "t");
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
compair.writeToNBT(nbt, "t");
}
}

View File

@ -4,7 +4,6 @@ import com.google.common.collect.Sets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
@ -62,10 +61,6 @@ public class ShadyUtil {
"ccd9aa1c-26b9-4dde-8f37-b96f8d99de22", //kakseao
});
// simple cryptographic utils
@Deprecated public static String encode(String msg) { return Base64.getEncoder().encodeToString(msg.getBytes()); }
@Deprecated public static String decode(String msg) { return new String(Base64.getDecoder().decode(msg)); }
/** complete fucking shit */
public static String smoosh(String s1, String s2, String s3, String s4) {
@ -81,18 +76,12 @@ public class ShadyUtil {
s += s1;
rand.setSeed(b1[0]);
s += rand.nextInt(0xffffff);
s += s2;
s += rand.nextInt(0xffffff) + s2;
rand.setSeed(rand.nextInt(0xffffff) + b2[0]);
rand.setSeed(b2[0]);
s += rand.nextInt(0xffffff);
s += s3;
s += rand.nextInt(0xffffff) + s3;
rand.setSeed(rand.nextInt(0xffffff) + b3[0]);
rand.setSeed(b3[0]);
s += rand.nextInt(0xffffff);
s += s4;
s += rand.nextInt(0xffffff) + s4;
rand.setSeed(rand.nextInt(0xffffff) + b4[0]);
rand.setSeed(b4[0]);
s += rand.nextInt(0xffffff);
return getHash(s);
}

View File

@ -1733,6 +1733,7 @@ item.cmb_pickaxe.name=CMB-Stahlspitzhacke
item.cmb_plate.name=CMB-Stahlbrustpanzer
item.cmb_shovel.name=CMB-Stahlschaufel
item.cmb_sword.name=CMB-Stahlschwert
item.coal_eternal.name=Ewige Kohle
item.coal_infernal.name=Höllische Kohle
item.cobalt_axe.name=Kobaltaxt
item.cobalt_boots.name=Kobaltstiefel

View File

@ -2526,6 +2526,7 @@ item.cmb_pickaxe.name=CMB Steel Pickaxe
item.cmb_plate.name=CMB Steel Chestplate
item.cmb_shovel.name=CMB Steel Shovel
item.cmb_sword.name=CMB Steel Sword
item.coal_eternal.name=Eternal Coal
item.coal_infernal.name=Infernal Coal
item.cobalt_axe.name=Cobalt Axe
item.cobalt_boots.name=Cobalt Boots

View File

@ -0,0 +1,11 @@
{
"name": "Eternal Coal",
"icon": ["hbm:item.nothing"],
"trigger": [["hbm:item.coal_eternal"]],
"title": {
"en_US": "█ █ █ █ █ █"
},
"content": {
"en_US": "████████████ ███ ███ ██ ████████ ████████ ██ ████ ████ ████████ ████ ██████████ █ ████ █████ ██████ ████████ ████ █████ ██ ██ ███ ██████"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B