From 64c6c077e0991af70f51af2c3f566e5708fc0c86 Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 16 Apr 2026 21:56:23 +0200 Subject: [PATCH] the electric arcs are your friends, touch them --- .../hbm/blocks/machine/rbmk/RBMKLever.java | 27 +++++++++++++ src/main/java/com/hbm/main/ClientProxy.java | 8 ++-- src/main/java/com/hbm/main/NTMSounds.java | 3 ++ .../java/com/hbm/particle/ParticleHadron.java | 10 ++++- .../java/com/hbm/particle/ParticleSpark.java | 9 +++++ .../machine/rbmk/TileEntityRBMKLever.java | 36 ++++++++++++++++++ .../assets/hbm/manual/ror/panelbutton.json | 2 +- .../assets/hbm/manual/ror/panelgauge.json | 2 +- .../assets/hbm/manual/ror/panelgraph.json | 2 +- .../assets/hbm/manual/ror/panellever.json | 2 +- .../assets/hbm/manual/ror/panelnumitron.json | 2 +- src/main/resources/assets/hbm/sounds.json | 5 ++- .../assets/hbm/sounds/block/leverStart.ogg | Bin 0 -> 8070 bytes .../assets/hbm/sounds/block/leverStop.ogg | Bin 0 -> 6789 bytes .../assets/hbm/sounds/block/spark1.ogg | Bin 0 -> 4043 bytes .../assets/hbm/sounds/block/spark2.ogg | Bin 0 -> 3015 bytes .../assets/hbm/sounds/block/spark3.ogg | Bin 0 -> 4448 bytes .../assets/hbm/sounds/block/spark4.ogg | Bin 0 -> 4725 bytes .../assets/hbm/sounds/block/spark5.ogg | Bin 0 -> 4171 bytes .../assets/hbm/sounds/block/spark6.ogg | Bin 0 -> 4242 bytes 20 files changed, 98 insertions(+), 10 deletions(-) create mode 100644 src/main/resources/assets/hbm/sounds/block/leverStart.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/leverStop.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/spark1.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/spark2.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/spark3.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/spark4.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/spark5.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/spark6.ogg diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKLever.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKLever.java index 92efd07d2..99c1e4210 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKLever.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKLever.java @@ -1,10 +1,15 @@ package com.hbm.blocks.machine.rbmk; +import org.lwjgl.opengl.GL11; + import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKLever; import api.hbm.block.IToolable; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -46,4 +51,26 @@ public class RBMKLever extends RBMKMiniPanelBase implements IToolable { return true; } + + @Override + public void renderInventoryBlock(Block block, int meta, int modelId, Object renderBlocks) { + super.renderInventoryBlock(block, meta, modelId, renderBlocks); + + GL11.glPushMatrix(); + GL11.glTranslated(0, -0.5, 0); + GL11.glRotated(-90, 0, 1, 0); + + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.rbmk_lever_tex); + + for(int i = 0; i < 2; i++) { + + GL11.glPushMatrix(); + GL11.glTranslated(0.25, 0, i * -0.5 + 0.25); + ResourceManager.rbmk_lever.renderPart("Base"); + ResourceManager.rbmk_lever.renderPart("Lever"); + GL11.glPopMatrix(); + } + + GL11.glPopMatrix(); + } } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index f1dd3c567..e81a6ae09 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -1758,10 +1758,12 @@ public class ClientProxy extends ServerProxy { } if("tau".equals(type)) { + boolean small = data.getBoolean("small"); - for(int i = 0; i < data.getByte("count"); i++) - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleSpark(world, x, y, z, rand.nextGaussian() * 0.05, 0.05, rand.nextGaussian() * 0.05)); - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleHadron(man, world, x, y, z)); + for(int i = 0; i < data.getByte("count"); i++) { + Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleSpark(world, x, y, z, rand.nextGaussian() * 0.05, 0.05, rand.nextGaussian() * 0.05).makeSmall(small)); + } + Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleHadron(man, world, x, y, z).makeSmall(small)); } if("vanish".equals(type)) { diff --git a/src/main/java/com/hbm/main/NTMSounds.java b/src/main/java/com/hbm/main/NTMSounds.java index 03b6eb62d..79a6a1768 100644 --- a/src/main/java/com/hbm/main/NTMSounds.java +++ b/src/main/java/com/hbm/main/NTMSounds.java @@ -100,6 +100,9 @@ public class NTMSounds { public static final String BLOCK_PLUSHY = "hbm:block.squeakyToy"; // squee public static final String BLOCK_HUNDUNS_MAGNIFICENT_HOWL = "hbm:block.hunduns_magnificent_howl"; // tragic yuri public static final String BLOCK_FALLOUT_3_POPUP = "hbm:block.bobble"; + public static final String LEVER_START = "hbm:block.leverStart"; + public static final String LEVER_STOP = "hbm:block.leverStop"; + public static final String SPARK = "hbm:block.spark"; /// MACHINE SOUNDS, MOSTLY LOOPS /// public static final String ELECTRIC_MOTOR_LOOP = "hbm:block.motor"; diff --git a/src/main/java/com/hbm/particle/ParticleHadron.java b/src/main/java/com/hbm/particle/ParticleHadron.java index 46b5e3d7c..3693aad33 100644 --- a/src/main/java/com/hbm/particle/ParticleHadron.java +++ b/src/main/java/com/hbm/particle/ParticleHadron.java @@ -25,11 +25,19 @@ public class ParticleHadron extends EntityFX { super(world, x, y, z); this.theRenderEngine = texman; this.particleMaxAge = 10; + this.particleScale = 1F; } public int getFXLayer() { return 3; } + + public ParticleHadron makeSmall(boolean small) { + if(!small) return this; + this.particleScale = 0.5F; + this.particleMaxAge = 5; + return this; + } public void renderParticle(Tessellator tess, float interp, float x, float y, float z, float tx, float tz) { @@ -49,7 +57,7 @@ public class ParticleHadron extends EntityFX { tess.setBrightness(240); this.particleAlpha = 1 - (((float)this.particleAge + interp) / (float)this.particleMaxAge); - float scale = (this.particleAge + interp) * 0.15F; + float scale = (this.particleAge + interp) * 0.15F * this.particleScale; tess.setColorRGBA_F(1.0F, 1.0F, 1.0F, this.particleAlpha); diff --git a/src/main/java/com/hbm/particle/ParticleSpark.java b/src/main/java/com/hbm/particle/ParticleSpark.java index 386bd3678..d32dda6a1 100644 --- a/src/main/java/com/hbm/particle/ParticleSpark.java +++ b/src/main/java/com/hbm/particle/ParticleSpark.java @@ -25,6 +25,15 @@ public class ParticleSpark extends EntityFX { public int getFXLayer() { return 3; } + + public ParticleSpark makeSmall(boolean small) { + if(!small) return this; + this.setSize(0.01F, 0.01F); + this.thresh = 3; + this.particleMaxAge = 2 + rand.nextInt(3); + this.motionY = -Math.abs(motionY); + return this; + } public void onUpdate() { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKLever.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKLever.java index b02150762..865fae9ba 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKLever.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKLever.java @@ -1,17 +1,22 @@ package com.hbm.tileentity.machine.rbmk; +import com.hbm.handler.threading.PacketThreading; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.gui.GUIScreenRBMKLever; +import com.hbm.main.NTMSounds; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.network.RTTYSystem; import com.hbm.util.BufferUtil; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public class TileEntityRBMKLever extends TileEntityLoadedBase implements IGUIProvider, IControlReceiver { @@ -49,6 +54,7 @@ public class TileEntityRBMKLever extends TileEntityLoadedBase implements IGUIPro public class LeverUnit { + public int index; /** If the output should be per tick, allows the lever to lock in place */ public boolean polling; /** Label on the lever as rendered on the panel */ @@ -70,19 +76,26 @@ public class TileEntityRBMKLever extends TileEntityLoadedBase implements IGUIPro public static final float FLIP_SPEED = 1F / 10F; // 0.5s public LeverUnit(int initialIndex) { + this.index = initialIndex; label = "Lever " + (initialIndex + 1); } public void click() { if(!active) return; + if(this.flipProgress <= 0 || this.flipProgress >= 1) + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, NTMSounds.LEVER_START, 1F, 1F); + this.isTurningOn = !isTurningOn; TileEntityRBMKLever.this.markDirty(); } public void update() { + this.prevFlipProgress = this.flipProgress; if(!active) return; + boolean arcFlash = false; + if(polling) { if(this.flipProgress >= 1F && canSend(commandOn)) RTTYSystem.broadcast(worldObj, rtty, commandOn); if(this.flipProgress <= 0F && canSend(commandOff)) RTTYSystem.broadcast(worldObj, rtty, commandOff); @@ -95,15 +108,38 @@ public class TileEntityRBMKLever extends TileEntityLoadedBase implements IGUIPro this.flipProgress = 1F; // for non-polling levers, send one message if(!polling && canSend(commandOn)) RTTYSystem.broadcast(worldObj, rtty, commandOn); + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, NTMSounds.LEVER_STOP, 0.5F, 1F); + arcFlash = true; } // turning off... } else if(!this.isTurningOn && this.flipProgress > 0F) { + if(this.prevFlipProgress >= 1) arcFlash = true; this.flipProgress -= FLIP_SPEED; if(this.flipProgress <= 0F) { this.flipProgress = 0F; // for non-polling levers, send the off message once upon return if(!polling && canSend(commandOff)) RTTYSystem.broadcast(worldObj, rtty, commandOff); + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, NTMSounds.LEVER_STOP, 0.5F, 1F); + } + } + + if(arcFlash) { + + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, NTMSounds.SPARK, 1F, 1F); + ForgeDirection dir = ForgeDirection.getOrientation(getBlockMetadata()); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + for(int i = 0; i < 2; i++) { + double x = xCoord + 0.5 + dir.offsetX * 0.4 - rot.offsetX * (index - 0.5) * (i == 0 ? 0.375 : 0.625); + double y = yCoord + 0.4375 - 0.03125; + double z = zCoord + 0.5 + dir.offsetZ * 0.4 - rot.offsetZ * (index - 0.5) * (i == 0 ? 0.375 : 0.625); + + NBTTagCompound dPart = new NBTTagCompound(); + dPart.setString("type", "tau"); + dPart.setByte("count", (byte)5); + dPart.setBoolean("small", true); + PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(dPart, x, y, z), new TargetPoint(worldObj.provider.dimensionId, x, y, z, 25)); } } } diff --git a/src/main/resources/assets/hbm/manual/ror/panelbutton.json b/src/main/resources/assets/hbm/manual/ror/panelbutton.json index 683e9a4b2..bcc889a2d 100644 --- a/src/main/resources/assets/hbm/manual/ror/panelbutton.json +++ b/src/main/resources/assets/hbm/manual/ror/panelbutton.json @@ -6,6 +6,6 @@ "en_US": "Redstone-over-Radio Keypad" }, "content": { - "en_US": "Interactive [[redstone over radio|Redstone over Radio]] transmitting device, needs to be configured with a scredriver first. Up to four buttons can be enabled using the red buttons, each button can transmit one value over its own RoR channel. This is useful for [RoR controllers|Redstone-over-Radio Controller], allowing things like RBMK settings to be adjusted with the push of a button.

The color setting accepts hexadecimal values, i.e. up to six characters with groups of two representing red, green and blue color components respectively. As a rule of thumb: FF is full color, 80 is half color and 00 is no color. FF8000 (full red, half green and no blue) is therefore orange.

The polling setting on the keypad turns the button into a locking one, the button remains pressed, sending the RoR signal each tick, until it is unpressed. State change buttons only send the command once when initially pressed.

See also:
[Redstone-over-Radio Gauge]
[Redstone-over-Radio Numeric Display]
[Redstone-over-Radio Graph]
[Redstone-over-Radio Lever]" + "en_US": "Interactive [[redstone over radio|Redstone over Radio]] transmitting device, needs to be configured with a scredriver first. Up to four buttons can be enabled using the red buttons, each button can transmit one value over its own RoR channel. This is useful for [RoR controllers|Redstone-over-Radio Controller], allowing things like RBMK settings to be adjusted with the push of a button.

The color setting accepts hexadecimal values, i.e. up to six characters with groups of two representing red, green and blue color components respectively. As a rule of thumb: FF is full color, 80 is half color and 00 is no color. FF8000 (full red, half green and no blue) is therefore orange.

The polling setting on the keypad turns the button into a locking one, the button remains pressed, sending the RoR signal each tick, until it is unpressed. State change buttons only send the command once when initially pressed.

See also:
[[Redstone-over-Radio Gauge]]
[[Redstone-over-Radio Numeric Display]]
[[Redstone-over-Radio Graph]]
[[Redstone-over-Radio Lever]]" } } diff --git a/src/main/resources/assets/hbm/manual/ror/panelgauge.json b/src/main/resources/assets/hbm/manual/ror/panelgauge.json index 8208ea5e2..354ba369b 100644 --- a/src/main/resources/assets/hbm/manual/ror/panelgauge.json +++ b/src/main/resources/assets/hbm/manual/ror/panelgauge.json @@ -6,6 +6,6 @@ "en_US": "Redstone-over-Radio Gauge" }, "content": { - "en_US": "Aesthetic [[redstone over radio|Redstone over Radio]] receiving device, needs to be configured with a scredriver first. Can represent numeric RoR values using a gauge needle. Up to four gauges can be enabled using the red buttons, each gauge can receive one value over its own RoR channel. Minimum and maximum values need to be configured before the gauge can be used, if the minimum is set to a higher value than the maximum, then the needle will run in reverse. The needle can exceed the maximum value by up to 50%, entering the red section of the gauge.

See also:
[Redstone-over-Radio Keypad]
[Redstone-over-Radio Numeric Display]
[Redstone-over-Radio Graph]
[Redstone-over-Radio Lever]" + "en_US": "Aesthetic [[redstone over radio|Redstone over Radio]] receiving device, needs to be configured with a scredriver first. Can represent numeric RoR values using a gauge needle. Up to four gauges can be enabled using the red buttons, each gauge can receive one value over its own RoR channel. Minimum and maximum values need to be configured before the gauge can be used, if the minimum is set to a higher value than the maximum, then the needle will run in reverse. The needle can exceed the maximum value by up to 50%, entering the red section of the gauge.

See also:
[[Redstone-over-Radio Keypad]]
[[Redstone-over-Radio Numeric Display]]
[[Redstone-over-Radio Graph]]
[[Redstone-over-Radio Lever]]" } } diff --git a/src/main/resources/assets/hbm/manual/ror/panelgraph.json b/src/main/resources/assets/hbm/manual/ror/panelgraph.json index c0cdab766..6597ac27a 100644 --- a/src/main/resources/assets/hbm/manual/ror/panelgraph.json +++ b/src/main/resources/assets/hbm/manual/ror/panelgraph.json @@ -6,6 +6,6 @@ "en_US": "Redstone-over-Radio Graph" }, "content": { - "en_US": "Aesthetic [[redstone over radio|Redstone over Radio]] receiving device, needs to be configured with a scredriver first. Can represent numeric RoR values over time using a line graph. Values are updated every half second, and the graph can log up to 15 seconds of input. Up to two graphs can be enabled using the red buttons, each graphs can receive one value over its own RoR channel. Useful for displaying values where the change over time is important, such as temperature curves.

See also:
[Redstone-over-Radio Keypad]
[Redstone-over-Radio Gauge]
[Redstone-over-Radio Numeric Display]
[Redstone-over-Radio Lever]" + "en_US": "Aesthetic [[redstone over radio|Redstone over Radio]] receiving device, needs to be configured with a scredriver first. Can represent numeric RoR values over time using a line graph. Values are updated every half second, and the graph can log up to 15 seconds of input. Up to two graphs can be enabled using the red buttons, each graphs can receive one value over its own RoR channel. Useful for displaying values where the change over time is important, such as temperature curves.

See also:
[[Redstone-over-Radio Keypad]]
[[Redstone-over-Radio Gauge]]
[[Redstone-over-Radio Numeric Display]]
[[Redstone-over-Radio Lever]]" } } diff --git a/src/main/resources/assets/hbm/manual/ror/panellever.json b/src/main/resources/assets/hbm/manual/ror/panellever.json index ace275fef..371e19bad 100644 --- a/src/main/resources/assets/hbm/manual/ror/panellever.json +++ b/src/main/resources/assets/hbm/manual/ror/panellever.json @@ -6,6 +6,6 @@ "en_US": "Redstone-over-Radio Lever" }, "content": { - "en_US": "Interactive [[redstone over radio|Redstone over Radio]] transmitting device, needs to be configured with a scredriver first. Up to two large breaker switches can be enabled using the red buttons, each button can transmit one value over its own RoR channel. Levers behave similar to keypad buttons, except that they can transmit different values depending on whether they have been turned on or off. With polling enabled, the switch will continuously send the signal corresponding to whichevever state it is in, except when the lever is currently being flipped. State change causes it to only send a single pulse after it has been flipped.

See also:
[Redstone-over-Radio Keypad]
[Redstone-over-Radio Gauge]
[Redstone-over-Radio Numeric Display]
[Redstone-over-Radio Graph]" + "en_US": "Interactive [[redstone over radio|Redstone over Radio]] transmitting device, needs to be configured with a scredriver first. Up to two large breaker switches can be enabled using the red buttons, each button can transmit one value over its own RoR channel. Levers behave similar to keypad buttons, except that they can transmit different values depending on whether they have been turned on or off. With polling enabled, the switch will continuously send the signal corresponding to whichevever state it is in, except when the lever is currently being flipped. State change causes it to only send a single pulse after it has been flipped.

See also:
[[Redstone-over-Radio Keypad]]
[[Redstone-over-Radio Gauge]]
[[Redstone-over-Radio Numeric Display]]
[[Redstone-over-Radio Graph]]" } } diff --git a/src/main/resources/assets/hbm/manual/ror/panelnumitron.json b/src/main/resources/assets/hbm/manual/ror/panelnumitron.json index ecd21f2e4..37ededf7d 100644 --- a/src/main/resources/assets/hbm/manual/ror/panelnumitron.json +++ b/src/main/resources/assets/hbm/manual/ror/panelnumitron.json @@ -6,6 +6,6 @@ "en_US": "Redstone-over-Radio Numeric Display" }, "content": { - "en_US": "Aesthetic [[redstone over radio|Redstone over Radio]] receiving device, needs to be configured with a scredriver first. Can represent numeric RoR values using a seven segment number display. Up to two displays can be enabled using the red buttons, each display can receive one value over its own RoR channel. Large values displayed will be shortened, using SI suffixes. Also useful for displaying item counts provided by an [[RoR item counter|Redstone-over-Radio Item Counter]].

See also:
[Redstone-over-Radio Keypad]
[Redstone-over-Radio Gauge]
[Redstone-over-Radio Graph]
[Redstone-over-Radio Lever]" + "en_US": "Aesthetic [[redstone over radio|Redstone over Radio]] receiving device, needs to be configured with a scredriver first. Can represent numeric RoR values using a seven segment number display. Up to two displays can be enabled using the red buttons, each display can receive one value over its own RoR channel. Large values displayed will be shortened, using SI suffixes. Also useful for displaying item counts provided by an [[RoR item counter|Redstone-over-Radio Item Counter]].

See also:
[[Redstone-over-Radio Keypad]]
[[Redstone-over-Radio Gauge]]
[[Redstone-over-Radio Graph]]
[[Redstone-over-Radio Lever]]" } } diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 571f1d7a2..05cc4631d 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -74,6 +74,9 @@ "block.assemblerStart": {"category": "block", "sounds": [{"name": "block/assemblerStart", "stream": false}]}, "block.assemblerStop": {"category": "block", "sounds": [{"name": "block/assemblerStop", "stream": false}]}, "block.assemblerCut": {"category": "block", "sounds": [{"name": "block/assemblerCut", "stream": false}]}, + "block.leverStart": {"category": "block", "sounds": [{"name": "block/leverStart", "stream": false}]}, + "block.leverStop": {"category": "block", "sounds": [{"name": "block/leverStop", "stream": false}]}, + "block.spark": {"category": "block", "sounds": ["block/spark1", "block/spark2", "block/spark3", "block/spark4", "block/spark5", "block/spar6"]}, "door.TransitionSealOpen": {"category": "block", "sounds": [{"name": "block/door/transition_seal_open", "stream": true}]}, "door.wghStart": {"category": "block", "sounds": [{"name": "block/door/wgh_start", "stream": true}]}, @@ -338,7 +341,7 @@ "entity.siegeIdle": {"category": "hostile", "sounds": ["entity/siegeIdle1"]}, "entity.siegeHurt": {"category": "hostile", "sounds": ["entity/siegeHurt1", "entity/siegeHurt2"]}, "entity.siegeDeath": {"category": "hostile", "sounds": ["entity/siegeDeath1", "entity/siegeDeath2", "entity/siegeDeath3"]}, - "entity.meteoriteFallingLoop": {"category": "block", "sounds": [{"name": "entity/meteoriteFallingLoop", "stream": false}]}, + "entity.meteoriteFallingLoop": {"category": "block", "sounds": [{"name": "entity/meteoriteFallingLoop", "stream": false}]}, "step.metal": {"category": "player", "sounds": [{"name": "footsteps/metal", "stream": false}]}, "step.iron_jump": {"category": "player", "sounds": [{"name": "footsteps/iron_jump", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/block/leverStart.ogg b/src/main/resources/assets/hbm/sounds/block/leverStart.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1e264bdcaf3975d84e6ab08fc54aa98f8635b9d6 GIT binary patch literal 8070 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/block/leverStop.ogg b/src/main/resources/assets/hbm/sounds/block/leverStop.ogg new file mode 100644 index 0000000000000000000000000000000000000000..40ed9fa299f23419ec08aca4a96288932dcde941 GIT binary patch literal 6789 zcmaiZc|4Tg_xLl}iEL?TXlN`WWEjgRLfOVXi+#uz(zF<(6qy)HBa*F5L_+r6gwl%a z5<^J5Q?{hVyGCjGJu`jY@89S9$M^NUuRHfS_iXpvbI*Owd0yij5`qV|0RL%Gp3|0G zQ0KZ(3PcGKbs{1ljKW1g4pnm>0B}+Y!h5ztoVk+!Hm)R>l9i4#lBoavUrmbdj~XqI z>JfG_RL40Y1b!?mz>TLIZU@)XMH%R#bPeDdudmbp?MOb5Ul;u0PaKIn?H>_rYH`}( zAUq1Cqqh%#;&@mf-1-Fdcu+(%9M64%vxtyjxS@{j9#H1siIdS0VIiTBraU4A{x2dp z2p;f{$e|M<6diGponS|Burj3{KkiQs4uS~$u~)_Npc@1*2LJ>Gs%c$Hk)um0Sh~p1 z!z_owSLH1oq~c+E4&ME$lnmvPBFhwSjSJ5*hyYh0+2V{WonaxYOjkAa$V^Z-1)&rS zhzsN5BrX3LtT3S<)k0X2KCf%MHQ}xC28?cn@sI>@OK|!&%T{JWH3nox7}&Zb2x69C z^v7BnjQCF7RyjJqfySlyH@ZDz31XHh%mh1w4F!6L#TmIjYalFaGZF+XdZ2V`3(x{V zOsg!t-=bWBu89%eMTet|hdH_Ju+*S7JDOm3nSZ@PNOjz7g z06cd<8052Ml-Q=fvCTwyW~%b~!o^Ch{zhKcfQ#!^t5dQnM5H2!ilzK2q zLm7)H>B97+>MZ~b0QkXW&(85Dg;w>`Q!z8 z=Kz{PlVa$0(*AKW4T_a07OBC^=Fb;-N-(hv7{z?smgvmuj5f?-K4qwPAs;maLdE%> zTbUr=Vt!|lr|2I@y&?J;Q1*N8&7aUltx8&&l9^%_Wo4{9hu4pD%{Ot)&7K z^p-6+OS&Qo3Hg>QBTJzr*(SoOIj3+~^*;{Z0+Ol#`$leaPEI@mS4@ z^5RQ+{aQ@}yuoC(x=CW+R#d0t!96vdI6T>4+#`Gqv&c+ncJm6aX~AKUrP(-9p8w#W z?=1!8gECyXngddhxAP-JHOv3F6V5#v0C4^c85N*TZ`A+ja^*(P|Pz)4vf zUcA{gBJ7_d2A^v=ucMu1OkHKIM$yEP?Ic$tva4b6r~wIYNFutC-E+y_Eb8>t;Au|m z?0Z=8v+%Tx`^42jMy&top< z-O#M$u>g`>7H(sdoncg*VU(XqUrNag&C4yXVD9NFTWzm>_kVRUUVtM2AQE8{fv~|L ztZ*Q}^Db>G*SoMMD1=pnR{wMKpFNJqn1T*54|F zf_Xklow-tmk$bV0=7;fImwObdVJwsSeDYgbik)9c5J=WvrZKNo*M_ zb`E+FZQx2EI?6h-2}DmhM|O^?qrRh~EDM=gNX#WpvV)1aRKG|f$(=MYL3IBbJ2@Up8mIb0xtb@~RALm>Z=5`Pl}hqZ<5@)_ zf>s%TnnA0`pepzO*i4-KLS<9QBpIs-u4XG@4hfW<%?ak&%%$R~R1%9Ec#Z76!wIw* zr26NOX0B4Fp~p#_v_Uj^I+8>(BDqhHNk&PY6R~~-qMv*4q>-EFSMVM-P-mgmL^c&4 zmFPze_G_j3c^)S%-eaX5+w4QVyRZMlI?~TLm(4=f9T$62{chv&n%3QqdrU{0siQ>d z41wf#mFz8loMgjO>bc?Q{x#8iB5i&=HbkCuwYINuZ*^n!);k||K3Us*+&INLHNZ*_ zf7jQri4ErD1fL;KyB{H`544kEckA@e`-8dQA&n0(r-=j?@xmh?01`4NDM;Zf0bue& zCQ9NM(1Z+(x@w>k7OC3ef;}n~D5?3hBxuM^q_kNU8-~n&?uArkxnNUkTDU$3Ru~b|@Buc1SW*y)8WThRf zI9TL&eWyUC&HD{78&>URyY7$fli+)I|04)c{xFFx<;3XTBF23c27xAa!-FJoJ#adh zPm%O&9GH>>VF0kjL4%KHb}{(QSE+6p_X?~5hg2>UUIV5~Uf%p)2MBHi2COoRJa^#<>C0K*fT_l?I{hRLE$6`vC2pM< zKNX>c(znGdXc_V=3$zh!kzLJ4tmWUf5=E6u&_Pb9pps56N(FcVKs+d}3;_g%MUMcq zN07&h@FjlXbVC5JNEwj4n3Op8u}B)OQnrQG$)D&0l-IY~-fgAn@cBIJ0+YS4rDVJZ z%p4+OZ2VV}`m2xho%uz0!U`PJ3uaJY4g$=z0xBxZCq2(z%q@M~07SsV2sS9N0RYB_ zXelWRx_W3sW0U=6=9XYg{An~AjR%;6BaO!Uy5Sc;$U_0#uNyAotw+FN#a)`}>Wa#H zkeyFZtN`cmdST=>0nn;Y$d^f#MXCE+iQyhp&$bN3%SnMj}f z3I|r7(TrB2CU?Qv`*K6B9_Tpqm*D3cu{)fd3e#`PG|ArHH|nkOSL$z_5%JZ5G4c## zRpuf4Q-AQcsIXu6D)UVXj$#_KcI%pCbJRBaPM%_4Lu&PJ75xwwo7=8!ck*ms$O9uH z8^PHXc(0qNHDCK)BW|GZyzMJb2+Zy$;;xMk$tXjaRu7@W{Jiqs;Ze9Pe^^&(ItrP?|l8&yNR+Lt17N2ky8z%wdt8F z3g551>C$26c~X#VV+5Oq69wX;9gzL@;*u`AT2{x8#h-lsJNcqu0zohEW$&p^v2)mN z8`WssrqPFAJp-4vFfS?&`CVY~>1UO?-FeW;aW9Pf_Q4F7ey#AG%DLn4D}*Gh{N6Y3 zy<=jN4cwpXce~!Ba#~^CDy&d2mM_;O;j>(!I4#cPvMIZ9$)Y|n4(TUnJE8yicBt9= z!%ZwciHKfQ$S1V59dUm&!;H_~ntulw*ni$y!fzME8KacK+t@uE!RybE< zG9{f6{X`)|0owC!%uVK7(ollG66Ztl)RfRz-8cT6cGhnE_d_p#wihYW)2oK@mC1Oe ziq~u3OOIw)eUcG7`P3IGW!y2?xT&H2L2!<*(@e9=(P}~+{e*JR0F%Bwa^jj~d|c~L zix%*?;7op-<8$cUBIeH%)^(>oDk`AU(8Z$knTOJ;zX-9rFB}>rCu)(hoeK(g-QEvMS9J&63s5JejE7m=J&!&Z*OSi4AbKE{O9RMuCFXcLB4Go@W33-Fy}|A^RV;fTGJ0* zJDimCl#7ri+UEij`%MN6>}>Hl>`Mj+%5HdRwD(M@u+*i$?!E3xm82wK7-EMN=8)6}5;d z+mAoo6#Lt5JXPs!dK^>3S*|wGmO0CJ$+G&m;PfuxxqIx4+YO&NQi->IG(<};@dfk} z(zZn-o3Z*1!R|W!$)tN+&JIS z&|cZutGW`f*}~oe@(YOrB8bh8oo>LyKE)og&tvF@(iG9bXLr&^qisahqQIYcte61s zOOz-g*r+G{sCXoE#i+4*8FeUXhW#O(uzT$uax2Mcfv z-;rvy)UW96;73WAy5UYa(}m2d(?{-7nlqZ;ILzMs9gQwjDgl7G?@#eFLmCP@XH72; zJ#w3!9Phh%b@a=n%cf!Slgrm4%3gb?5Wc3Q`(BC}AvG5t5E}d#ni5|Or_$d1JRJgs zePs*uR+daT-lXPqJWxUp99=8QJk)(kBWk1#J3Bb67MZ@*!U(ycpef6jeB+$hUGFc9 z7cQ`=6S`MI#YQ}RU-1LJo1M~pP|2wP`bO`fr0rIe-qh=H4@&N`Mz-#uLe%YFv+sXa zour&m`~AeAKaV=`ebZHM@z!4ATJJ$b&5BfEGBvCxP58$0GQ@cWeC6r}QYly!_XTiG4rg1g^WUmzTURBQM57K-04Y zEpdQiO5qtxhQXLkl3@7Z%K|hnv^KL$&=)9Q<_ByGztw*|R}pjYK@VeVpG&`P$D
F^>gR4cZ+hP<&cL8I*_Es$dr2}R(;)4 zaQ){8o1^}G{x6#Zd`K&Bb7>M?x$4?PGivowby6|p)kml>kBa@=orcEak(854slmLYWe&AaH4U0Vz1`D zIctwvmqS;tPcT`f<~u)4XeS*zoJ>1klV?$U(TBgJ65y{h%70mO;bzF_f$#iG^w@RU z&n>{KZ~OqCgLzW>Yf@REeZz(B>Q~Plc8VgJr9G?Cckd4#w_h`R@axlTSm$8fb-&At z#PM8(8KTMZ$lZ0Lweh$sb<+|rrM2a%H4ZYbJ-Dx@rrWI)!7-k8ZE1J>ZqJS>nI_i< z3#G0Eeyx}3-afN!agteEW5B##uE-P?E7SAX(oo?xRkoh&AL3nHft99usl^adXy|bg zwWxOfh%{PYN?&O^5kfm@RV?Z&8tk>@(}i-c^6;h8JE9KO4b0GdX4(eM3(*8JBA?4L z=Pv!utX({2D)T%?_&Yq^iy$PywfXWsNIL_8o6r)rn8P8QrnE63D%HWe?m-`N)R zV4-xau?fF0qj$&A$i~0bI#Mb9dJF>BH-DaK8(P$t@$qv=%OU-RG1I5s=Id4}m4wzj z0tYiNv2yla$WHB@{4o39*$yJ+!XMp+X{}17SwZK8f9QSzS^>6J5#)yO+Y7=Py85!o zn_&S#(l5l!gb=lDduOZv)r;rwN@kLX=WA3XDI{OZ0mLb=B)3UN!F&qQO ziacUZZ-V-5yXNNxA}{;oPGW4NcPIPeEv#o&k91{i224(W8f*@fr(LY?&w4Fy>X0}2 z{{8Jm3h}T|?|fkvBq2Md0`dEU%;S_~oxMczK&f^8<1&_?ex{Q&Q~Hd_W;rLN*Gc+E z*L+KB8&Liv&H=d3X%1cG69f_i58QcgIB9z6TRXW4Z9kjJ3bVq?ivS;|pBhd0{+e`t zlhwI?cEt3YX3JbAKa~mq=g+~K4s*g_ry{9ocNcaRoWE+n7<#ZywM3N>ncTX;*72R) zuJfkl%>AIZnU|ajP^;6f!WJ0hdvW+x^zW+olnORVd^NQ zw(%eK9VcRLciBT5pADl96pRjg^AFrTJ^wvw5ZY^9u)d=CcU-Z6kN9R-PD`0yxT|US z*XjM@>wh=LRDX+pm%mqFc)+2FjessOVTWC5^()T&#^j}ixOP1Nxb`rBDGrA`o7hza L0X7r10OJ1-_L<)g literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/block/spark1.ogg b/src/main/resources/assets/hbm/sounds/block/spark1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e92614b80794a33d752abc0416d8f0f21c578c0b GIT binary patch literal 4043 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/block/spark4.ogg b/src/main/resources/assets/hbm/sounds/block/spark4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8090e726013f18ce5f167187af6913ff7289cebc GIT binary patch literal 4725 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 AivR!s literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/block/spark5.ogg b/src/main/resources/assets/hbm/sounds/block/spark5.ogg new file mode 100644 index 0000000000000000000000000000000000000000..973abd718d5fde03eb1a394ce3bbde5a8c53416e GIT binary patch literal 4171 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 Kp0AYw^?v}%_B@;b literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/block/spark6.ogg b/src/main/resources/assets/hbm/sounds/block/spark6.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6f85c42eabba9a437e0c9782f4601d0aa1947e40 GIT binary patch literal 4242 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 literal 0 HcmV?d00001