mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
what the fuck - is happening - in this world of pure imagination
This commit is contained in:
parent
82d3523ea1
commit
d4a25205a7
55
changelog
55
changelog
@ -1,54 +1,7 @@
|
||||
## Added
|
||||
* Infinite ammo bag
|
||||
* Identical to the regular ammo bag, but ammo is never depleted
|
||||
* Provides 9,999 units of ammo for the purposes of reloading/belts, meaning that even a single bullet in the bag allows a full reload
|
||||
* Obviously creative-only
|
||||
* Redstone-over-radio reader
|
||||
* Can read certain values from connected machines and send them as signals
|
||||
* Currently supports batteries, capacitors and tanks
|
||||
* Redstone-over-radio controller
|
||||
* Can receive control signals to perform certain actions within the connected machine
|
||||
* Currently supports mode and priority changes for batteries and tanks
|
||||
|
||||
## Changed
|
||||
* Nerfed AP and DU round damage multiplier
|
||||
* Effective damage is still much higher than on gunmetal ammo due to the armor piercing effect
|
||||
* Increased flamethrower turret detection range from 32 to 48 blocks
|
||||
* Flamethrower turrets and chemthrower now use the green fire effect when using balefire fuel
|
||||
* Flamethrower turret projectile damage is now capped to 20
|
||||
* Balefire fuel should no longer instantly vaporize bosses
|
||||
* Tobacco and Hemp plants are now biome tinted and are no longer radioactive green
|
||||
* Most chemthrower ammo types with variable damage output are now capped to 15 damage per shot (that is still a ton)
|
||||
* Chemthrower combustible liquids now use SEDNA type fire particles
|
||||
* Halved recoil on the zebra rifle
|
||||
* The laser pistols now make a click when dry firing
|
||||
* Solid fuel in the rotary furnace no longer ticks down if no recipe is actually being done
|
||||
* Pneumatic tube round robin will now progress even if a destination is not accessible, preventing cases where the tubes are stuck if one of the containers has run full
|
||||
* Tesla cannons now accept low-wavelength capacitors
|
||||
* The resulting beam is non-penetrating and 20% less powerful than standard capacitor beams
|
||||
* In addition to the splash damage, the beam will split and fire smaller beams at any living entity in a 20 block radius, with half damage
|
||||
* Sub-beams do not cause splash damage
|
||||
* Sub-beams will strike the initially hit entity again, meaning that the more sub-beams there are, the more powerful the initial strike ends up being
|
||||
* Renamed the default capacitor ammo to "capacitor (standard)" to avoid confusion
|
||||
* Low wavelength capacitors now need niobium instead of silicon to make
|
||||
* Bayonets can now be applied to the carbine, making it the first standard arsenal gun that can take the mod
|
||||
* VNT type explosions with smooth damage falloff (used by guns, mines, etc) no longer calculate entity distance using the entity's origin position (i.e. in the center at the ground) but rather the closest hitbox intercept
|
||||
* This means that shooting entities directly with explosives should deal roughly the same damage no matter where they are hit, instead of dealing more damage closer to the feet
|
||||
* This also fixes an issue where entities with large hitboxes (eg. mas man) are unaffected by small explosions that deal direct hits (like explosive buckshot)
|
||||
* VNT type explosions with smooth damage falloff should no longer deal any damage if more than 1 in 8 blocks between the source and the target are solid
|
||||
* This prevents any damage taken if the target is behind a wall
|
||||
* This also means that thin walls do not protect against sufficiently large explosions
|
||||
* Added circuits to the turbofan recipe
|
||||
* Simplified the industrial combustion engine recipe
|
||||
* Removed the old hadron core recipe
|
||||
* Changed the old pylon and energy storage block textures to use standardized red copper connectors instead of the non-standard three prong outlets
|
||||
* Increased bayonet damage from 5 to 7.5 hearts
|
||||
* Two numeric redstone over radio signals sent over the same channel will now be added together instead of one signal replacing the other
|
||||
* This means that reading the fill state of multiple batteries over the same channel should result the combined fill state of all batteries
|
||||
|
||||
## Fixed
|
||||
* Fixed a potential crash caused by cargo dropships landing on cargo docks with no satellite chip installed
|
||||
* Fixed potential crash related to hazard handling for dropped items
|
||||
* Fixed errors thrown when loading in old system bullet entities
|
||||
* Fixed dupe regarding breaking transport drones
|
||||
* Fixed 12 gauge flechette DT negation not being the intended value
|
||||
* Fixed carbine mistakenly showing a round being chambered even after firing the last loaded round
|
||||
* Fixed `any` OD prefix not registering correctly, breaking some recipe compatibility as well as older recipe configs
|
||||
* Fixed bug where changing a pipe's type with a fluid ID will keep a "zombie" pipe of the previous type around, which keeps a connection up even when the pipe nets end up separated
|
||||
* Fixed RoR controller having the wrong recipe
|
||||
@ -1,6 +1,8 @@
|
||||
package com.hbm.blocks.network;
|
||||
|
||||
import api.hbm.energymk2.PowerNetMK2;
|
||||
import api.hbm.redstoneoverradio.IRORValueProvider;
|
||||
|
||||
import com.hbm.blocks.IBlockMultiPass;
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
import com.hbm.blocks.ITooltipProvider;
|
||||
@ -103,7 +105,7 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass,
|
||||
}
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public static class TileEntityCableGauge extends TileEntityCableBaseNT implements SimpleComponent, CompatHandler.OCComponent {
|
||||
public static class TileEntityCableGauge extends TileEntityCableBaseNT implements SimpleComponent, CompatHandler.OCComponent, IRORValueProvider {
|
||||
|
||||
private long deltaTick = 0;
|
||||
private long deltaSecond = 0;
|
||||
@ -160,5 +162,20 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass,
|
||||
public Object[] getInfo(Context context, Arguments args) {
|
||||
return new Object[] {deltaTick, deltaSecond, xCoord, yCoord, zCoord};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getFunctionInfo() {
|
||||
return new String[] {
|
||||
PREFIX_VALUE + "deltatick",
|
||||
PREFIX_VALUE + "deltasecond",
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String provideRORValue(String name) {
|
||||
if((PREFIX_VALUE + "deltatick").equals(name)) return "" + deltaTick;
|
||||
if((PREFIX_VALUE + "deltasecond").equals(name)) return "" + deltaSecond;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.hbm.blocks.network;
|
||||
|
||||
import api.hbm.fluidmk2.FluidNetMK2;
|
||||
import api.hbm.redstoneoverradio.IRORValueProvider;
|
||||
|
||||
import com.hbm.blocks.IBlockMultiPass;
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
@ -107,7 +108,7 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL
|
||||
}
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements SimpleComponent, CompatHandler.OCComponent {
|
||||
public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements SimpleComponent, CompatHandler.OCComponent, IRORValueProvider {
|
||||
|
||||
private long deltaTick = 0;
|
||||
private long deltaSecond = 0;
|
||||
@ -167,5 +168,20 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL
|
||||
public Object[] getInfo(Context context, Arguments args) {
|
||||
return new Object[] {deltaTick, deltaSecond, getType().getName(), xCoord, yCoord, zCoord};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getFunctionInfo() {
|
||||
return new String[] {
|
||||
PREFIX_VALUE + "deltatick",
|
||||
PREFIX_VALUE + "deltasecond",
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String provideRORValue(String name) {
|
||||
if((PREFIX_VALUE + "deltatick").equals(name)) return "" + deltaTick;
|
||||
if((PREFIX_VALUE + "deltasecond").equals(name)) return "" + deltaSecond;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -49,7 +49,7 @@ public class WeaponModCarbineBayonet extends WeaponModBase {
|
||||
MovingObjectPosition mop = EntityDamageUtil.getMouseOver(ctx.getPlayer(), 3.0D);
|
||||
if(mop != null) {
|
||||
if(mop.typeOfHit == mop.typeOfHit.ENTITY) {
|
||||
float damage = 10F;
|
||||
float damage = 15F;
|
||||
mop.entityHit.attackEntityFrom(DamageSource.causePlayerDamage(ctx.getPlayer()), damage);
|
||||
mop.entityHit.motionX *= 2;
|
||||
mop.entityHit.motionZ *= 2;
|
||||
|
||||
@ -49,7 +49,7 @@ public class WeaponModMASBayonet extends WeaponModBase {
|
||||
MovingObjectPosition mop = EntityDamageUtil.getMouseOver(ctx.getPlayer(), 3.0D);
|
||||
if(mop != null) {
|
||||
if(mop.typeOfHit == mop.typeOfHit.ENTITY) {
|
||||
float damage = 10F;
|
||||
float damage = 15F;
|
||||
mop.entityHit.attackEntityFrom(DamageSource.causePlayerDamage(ctx.getPlayer()), damage);
|
||||
mop.entityHit.motionX *= 2;
|
||||
mop.entityHit.motionZ *= 2;
|
||||
|
||||
@ -221,7 +221,7 @@ public class CraftingManager {
|
||||
addRecipeAuto(new ItemStack(ModBlocks.radio_torch_logic, 4), new Object[] { "G", "R", "I", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP) });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.radio_torch_counter, 4), new Object[] { "G", "R", "I", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.radio_torch_reader, 4), new Object[] { " G ", "IRI", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.radio_torch_controller, 4), new Object[] { " G ", "IRI", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.radio_torch_controller, 4), new Object[] { " G ", "IRI", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP) });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.radio_telex, 2), new Object[] { "SCR", "W#W", "WWW", 'S', ModBlocks.radio_torch_sender, 'C', ModItems.crt_display, 'R', ModBlocks.radio_torch_receiver, 'W', KEY_PLANKS, '#', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG) });
|
||||
|
||||
addRecipeAuto(DictFrame.fromOne(ModItems.conveyor_wand, ConveyorType.REGULAR, 16), new Object[] { "LLL", "I I", "LLL", 'L', Items.leather, 'I', IRON.ingot() });
|
||||
|
||||
@ -374,6 +374,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I
|
||||
return new String[] {
|
||||
PREFIX_VALUE + "fill",
|
||||
PREFIX_VALUE + "fillpercent",
|
||||
PREFIX_VALUE + "delta",
|
||||
PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode",
|
||||
PREFIX_FUNCTION + "setmode" + NAME_SEPARATOR + "mode" + PARAM_SEPARATOR + "fallback",
|
||||
PREFIX_FUNCTION + "setredmode" + NAME_SEPARATOR + "mode",
|
||||
@ -386,6 +387,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I
|
||||
public String provideRORValue(String name) {
|
||||
if((PREFIX_VALUE + "fill").equals(name)) return "" + power;
|
||||
if((PREFIX_VALUE + "fillpercent").equals(name)) return "" + getPowerRemainingScaled(100);
|
||||
if((PREFIX_VALUE + "delta").equals(name)) return "" + delta;
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@ -3,6 +3,9 @@ package com.hbm.tileentity.network;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
|
||||
import com.hbm.interfaces.NotableComments;
|
||||
import com.hbm.util.NoteBuilder;
|
||||
import com.hbm.util.NoteBuilder.Instrument;
|
||||
import com.hbm.util.NoteBuilder.Note;
|
||||
@ -22,6 +25,19 @@ public class RTTYSystem {
|
||||
/** Pushes a new signal to be used next tick. Only the last signal pushed will be used. */
|
||||
public static void broadcast(World world, String channelName, Object signal) {
|
||||
Pair identifier = new Pair(world, channelName);
|
||||
|
||||
if(NumberUtils.isNumber("" + signal) && newMessages.containsKey(identifier)) {
|
||||
Object existing = newMessages.get(identifier);
|
||||
if(NumberUtils.isNumber("" + existing)) {
|
||||
try {
|
||||
int first = Integer.parseInt("" + signal);
|
||||
int second = Integer.parseInt("" + existing);
|
||||
newMessages.put(identifier, "" + (first + second));
|
||||
return;
|
||||
} catch(Exception ex) { }
|
||||
}
|
||||
}
|
||||
|
||||
newMessages.put(identifier, signal);
|
||||
}
|
||||
|
||||
@ -57,6 +73,7 @@ public class RTTYSystem {
|
||||
newMessages.clear();
|
||||
}
|
||||
|
||||
@NotableComments
|
||||
public static class RTTYChannel {
|
||||
public long timeStamp = -1; //the totalWorldTime at the time of publishing, happens in the server tick event's PRE-phase. the publishing timestamp is that same number minus one
|
||||
public Object signal; // a signal can be anything, a number, an encoded string, an entire blue whale, Steve from accounting, the concept of death, 7492 hot dogs, etc.
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 587 B |
Loading…
x
Reference in New Issue
Block a user