From 2430fec8c6468ecd13352643c0dd38622cdbc2da Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 4 Dec 2025 15:55:00 +0100 Subject: [PATCH] ough --- changelog | 2 + src/main/java/com/hbm/blocks/ModBlocks.java | 3 ++ .../blocks/machine/MachineAnnihilator.java | 31 ++++++++++++++ .../inventory/gui/GUIScreenRadioTorch.java | 2 +- .../weapon/sedna/factory/XFactory10ga.java | 40 +++++++++++++++++- .../java/com/hbm/tileentity/TileMappings.java | 1 + .../machine/TileEntityMachineAnnihilator.java | 21 +++++++++ .../gui/processing/gui_annihilator.png | Bin 0 -> 1437 bytes 8 files changed, 97 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineAnnihilator.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineAnnihilator.java create mode 100644 src/main/resources/assets/hbm/textures/gui/processing/gui_annihilator.png diff --git a/changelog b/changelog index 424c110a3..86c641480 100644 --- a/changelog +++ b/changelog @@ -25,6 +25,8 @@ * Chance output stacks no longer do an RNG call to determine if the whole stack is provided or none, rather, each single item of the stack has its own RNG call * Hiperf bedrock ore processing of heavy metals now yields tantalium * Bedrock coltan is no longer a dedicated bedrock ore type +* Alt fire is now available for 10ga double barrel shotguns, allowing only a single barrel to be fired at once +* The custom mapping function on RoR torches now supports up to 32 characters instead of 15 ## Fixed * Fixed gamebreaking issue causing crashes and world corruption where the multi detonator had its tooltip misspelled diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 745872741..0d1dfb832 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1009,6 +1009,7 @@ public class ModBlocks { public static Block machine_excavator; public static Block machine_ore_slopper; + public static Block machine_annihilator; public static Block machine_autosaw; public static Block machine_mining_laser; @@ -2252,6 +2253,7 @@ public class ModBlocks { machine_autosaw = new MachineAutosaw().setBlockName("machine_autosaw").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_excavator = new MachineExcavator().setBlockName("machine_excavator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_ore_slopper = new MachineOreSlopper().setBlockName("machine_ore_slopper").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_annihilator = new MachineAnnihilator().setBlockName("machine_annihilator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_mining_laser = new MachineMiningLaser(Material.iron).setBlockName("machine_mining_laser").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_mining_laser"); barricade = new BlockNoDrop(Material.sand).setBlockName("barricade").setHardness(1.0F).setResistance(2.5F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":barricade"); machine_assembler = new MachineAssembler(Material.iron).setBlockName("machine_assembler").setHardness(5.0F).setResistance(30.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":machine_assembler"); @@ -3374,6 +3376,7 @@ public class ModBlocks { register(machine_autosaw); register(machine_excavator); register(machine_ore_slopper); + register(machine_annihilator); register(machine_mining_laser); register(barricade); register(machine_turbofan); diff --git a/src/main/java/com/hbm/blocks/machine/MachineAnnihilator.java b/src/main/java/com/hbm/blocks/machine/MachineAnnihilator.java new file mode 100644 index 000000000..1330bd9e6 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineAnnihilator.java @@ -0,0 +1,31 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.machine.TileEntityMachineAnnihilator; + +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class MachineAnnihilator extends BlockDummyable { + + public MachineAnnihilator() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachineAnnihilator(); + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 0, 0, 0, 0}; + } + + @Override + public int getOffset() { + return 0; + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java b/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java index cfd090b59..9300e8e60 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java @@ -71,7 +71,7 @@ public class GUIScreenRadioTorch extends GuiScreen { this.remap[i].setTextColor(0x00ff00); this.remap[i].setDisabledTextColour(0x00ff00); this.remap[i].setEnableBackgroundDrawing(false); - this.remap[i].setMaxStringLength(15); + this.remap[i].setMaxStringLength(32); this.remap[i].setText(radio.mapping[i] == null ? "" : radio.mapping[i]); } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java index 9a4764b5c..9c9388d27 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java @@ -11,6 +11,7 @@ import com.hbm.items.weapon.sedna.Crosshair; import com.hbm.items.weapon.sedna.GunConfig; import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; @@ -22,6 +23,8 @@ import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.BusAnimationKeyframe.IType; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.MovingObjectPosition; @@ -54,7 +57,7 @@ public class XFactory10ga { .mag(new MagazineFullReload(0, 2).addConfigs(g10, g10_shrapnel, g10_du, g10_slug, g10_explosive)) .offset(0.75, -0.0625, -0.1875) .setupStandardFire().recoil(LAMBDA_RECOIL_DOUBLE_BARREL)) - .setupStandardConfiguration() + .setupStandardConfiguration().ps(LAMBDA_DOUBLE_SECONDARY) .anim(LAMBDA_DOUBLE_BARREL_ANIMS).orchestra(Orchestras.ORCHESTRA_DOUBLE_BARREL) ).setDefaultAmmo(EnumAmmo.G10, 6).setUnlocalizedName("gun_double_barrel"); ModItems.gun_double_barrel_sacred_dragon = new ItemGunBaseNT(WeaponQuality.B_SIDE, new GunConfig() @@ -64,7 +67,7 @@ public class XFactory10ga { .mag(new MagazineFullReload(0, 2).addConfigs(g10, g10_shrapnel, g10_du, g10_slug, g10_explosive)) .offset(0.75, -0.0625, -0.1875) .setupStandardFire().recoil(LAMBDA_RECOIL_DOUBLE_BARREL)) - .setupStandardConfiguration() + .setupStandardConfiguration().ps(LAMBDA_DOUBLE_SECONDARY) .anim(LAMBDA_DOUBLE_BARREL_ANIMS).orchestra(Orchestras.ORCHESTRA_DOUBLE_BARREL) ).setDefaultAmmo(EnumAmmo.G10_DU, 6).setUnlocalizedName("gun_double_barrel_sacred_dragon"); @@ -84,6 +87,39 @@ public class XFactory10ga { ItemGunBaseNT.setupRecoil(10, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5)); }; + public static BiConsumer LAMBDA_DOUBLE_SECONDARY = (stack, ctx) -> { + + EntityLivingBase entity = ctx.entity; + EntityPlayer player = ctx.getPlayer(); + Receiver rec = ctx.config.getReceivers(stack)[0]; + int index = ctx.configIndex; + GunState state = ItemGunBaseNT.getState(stack, index); + + if(state == GunState.IDLE) { + + if(rec.getCanFire(stack).apply(stack, ctx)) { + rec.getOnFire(stack).accept(stack, ctx); + + if(rec.getFireSound(stack) != null) + entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, rec.getFireSound(stack), rec.getFireVolume(stack), rec.getFirePitch(stack)); + + ItemGunBaseNT.setState(stack, index, GunState.COOLDOWN); + ItemGunBaseNT.setTimer(stack, index, rec.getDelayAfterFire(stack)); + } else { + + if(rec.getDoesDryFire(stack)) { + ItemGunBaseNT.playAnimation(player, stack, GunAnimation.CYCLE_DRY, index); + ItemGunBaseNT.setState(stack, index, rec.getRefireAfterDry(stack) ? GunState.COOLDOWN : GunState.DRAWING); + ItemGunBaseNT.setTimer(stack, index, rec.getDelayAfterDryFire(stack)); + } + } + } + + if(state == GunState.RELOADING) { + ItemGunBaseNT.setReloadCancel(stack, true); + } + }; + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_DOUBLE_BARREL_ANIMS = (stack, type) -> { switch(type) { case EQUIP: return new BusAnimation() diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index f663451d1..8da9a1a55 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -108,6 +108,7 @@ public class TileMappings { put(TileEntityMachineRTG.class, "tileentity_machine_rtg"); put(TileEntityMachineExcavator.class, "tileentity_ntm_excavator"); put(TileEntityMachineOreSlopper.class, "tileentity_ore_slopper"); + put(TileEntityMachineAnnihilator.class, "tileentity_annihilator"); put(TileEntityMachineDrain.class, "tileentity_fluid_drain"); put(TileEntityMachineFluidTank.class, "tileentity_fluid_tank"); put(TileEntityMachineTurbofan.class, "tileentity_machine_turbofan"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAnnihilator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAnnihilator.java new file mode 100644 index 000000000..98e75e7e9 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAnnihilator.java @@ -0,0 +1,21 @@ +package com.hbm.tileentity.machine; + +import com.hbm.tileentity.TileEntityMachineBase; + +public class TileEntityMachineAnnihilator extends TileEntityMachineBase { + + public TileEntityMachineAnnihilator() { + super(8); + } + + @Override + public String getName() { + return "container.annihilator"; + } + + @Override + public void updateEntity() { + + } + +} diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_annihilator.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_annihilator.png new file mode 100644 index 0000000000000000000000000000000000000000..ace5467c1e82d01164003ecf42809b9eb2bf37bd GIT binary patch literal 1437 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIE+9tRbE* zjv*Cu-rhavs~joPb}@QwAG1;clY&x0c2Yv`kuHWCLLE1S7=>6Ka40YYt%%$*W8qyn zsRGfjr~X_1-nUKa-t(eH{aD`h@`-A{7ta30`C<3M{R)4-e*Jnt`KEYyczCGNg(>pP z=Zbz*UjO;Ca;o-`Wq)L{KU}_iIb!k5mD8tBx3acgeKqUqbnQkpo=Vma`t9=15~naQ zd{$r(@L^Dx!Qf!P*pR@)aFB(eiIagvn1Mr$D2c^uS)V_C_wHTUyp0h$S$pHmO`kt_ zknr5H$D2V4C{p(8ySlpi*0}YvXC>R#{NBS#njN(ayb(HLrA0-X%8N7NjTt4fw9m$%%M?8*C-nR!lTzgXrhPKT=o(S>%qTGNazg6j`&+j8=_+X5M1)&!s1e1D?% zC3}zlN;{Uk_}qya&}7ZjyE{pd2s9K=g*&0`gvzRV){`3?*04MA3l7D zmh)!Ga1CL&x9^jGrD%XE)0Ra2_l$Gq&AWE@?%nNo*l#>lu(!AW9cekaYbVo_181(d-d<%zsvjiKimxeusxh7?(fW~GolB!ZD$Vtx8lOX<*e1x4Zs+&*ZX*1 zuA*I@={}RsUv4Kpd)-d%18VZss*y1aX8e2j87AheXWo#zv6Y$sf2JBka?V0a3yT>? z8}oA~_xCzj&f+`}!}nSu>h_al<$%64rU~no`r4T>J-u=JJ~P8VKN2EyGyej{wYi@* z3Tm`7m?W&o^;mm$VeLI8U{ZJxy=TuJpT8nE7D-pc)z{U%>pr_XY<1|>5BIBU4obwg z{Co2zr)A?C=Jx%%$+e2VCO$K&=d%Z6iS??|VO=w<(DY zS7mDc5y)q6{Q1L&fTvxh06R&8lDzK0<({`eTU_<3(MB6`nB)<>R0FO`SX+~Sn8g+d55C}{6@hHn|F*PWvMf63dOVLAFjw@FbP0l+XkKkS-S9 literal 0 HcmV?d00001