hue hue hue

This commit is contained in:
Boblet 2026-07-28 11:45:09 +02:00
parent d3fe5c479d
commit ab5e5d9be2
21 changed files with 237 additions and 78 deletions

View File

@ -1,62 +1,14 @@
## Added
* New Chicago Pile
* Assembled multiblock, similar to the PWR
* Requires new chicago pile graphite bricks
* Assembled with a hand drill out of a box made from graphite bricks, at least 5x5x5, and at most 15x15x15 blocks large
* Drilling the assembled reactor will add channels at the selected locations
* Drilling along the reactor's orientation will add a fuel channel
* Drilling perpendicular to fuel channels will add a ventilation channel
* Drilling vertically will add a control rod channel
* Fuel insertion is now done with a dedicated fuel loader which can be operated by hand or automated with hopper IO and redstone
* Ventilation channels need chicago pile vents which are powered with compressed air at 1 PU
* Chicago pile control rods can either be fully withdrawn with redstone or fine tuned with RoR
* Additionally, channels can be drilled by right clicking a pile addon device with the hand drill, the addon doesn't need to be removed beforehand
* This is mainly for convenience when disassembling and reassembling the reactor, which requires all channels to be drilled again
* Piles that overheat will explode, throwing flaming graphite everywhere
* Satelllite Ground Station
* Can relay RoR commands to connected satellites and satellite info back to RoR
* Platemetal
* Decorative connected texture metal block
* Comes in all colors except brown
* NTM poop theory debunked
* Make a nice clanking noise when placing and breaking
* Wideband Radio Emission Detector Satellite
* Detects high-energy events like nuclear explosions, particle accelerator operations and radar from the entire map
* Not terribly accurate, positioning may be off by hundreds or thousands of blocks depending on the emission intensity
* Narrowband Emission Scanning Satellite
* Detects high-energy events like radar, particle accelerator operations, nuclear or fusion reactors
* Can pinpoint exact locations, but is limited in its field of view
## Changed
* Updated all oil well GUI textures
* There's now only two upgrade slots instead of three
* All legacy pixel gauges have been replaced with smooth ones (watz, ZIRNOX, CCGT) making them more accurate
* Updated the diesel generator's GUI
* The diesel gen now also has an in-GUI button for turning it on and off like the industrial combustion engine
* MS-ESv1.1 `split` instruction now supports variable substitution
* Multiblocks now display a wireframe preview of how much space they take up
* 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
* Removed the satellite interface item for being basically completely useless
* Updated the satellite ID manager texture and recipe
* Satellite ID chips are now soldered
* Overhauled all satellites
* Satellites now use one item ID with meta, most satellites now have new textures
* Satellites can now be connected to ground stations and controlled with RoR commands
* Satellites now have manual pages detailing the commands
* The recipes have been updated, they now use mostly common parts and no longer feature the satellite base and heads items which are welded together
* Legacy satellites still function and can still be launched
* The PWR's coolant levels can now be read with RoR
* Soyuz and related assembly recipes now use 25kHE/t instead of just 100
* Updated the GUI textures for the refinery, various particle accelerator parts and a few other machines
* Glyphid hive blocks now use state-of-the-fart flesh sounds
* AUTOCAL's `first` and `last` instructions now support variable substitution
## 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
* Fixed backface rendering of the capacitor frames when inserted in the battery socket
* Fixed pile fuel loader temperature reading not working
* Fixed mining satellite NEI handling

View File

@ -5,13 +5,13 @@ import codechicken.nei.PositionedStack;
import codechicken.nei.recipe.TemplateRecipeHandler;
import com.hbm.blocks.ModBlocks;
import com.hbm.handler.imc.ICompatNHNEI;
import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.itempool.ItemPool;
import com.hbm.itempool.ItemPoolsSatellite;
import com.hbm.items.ModItems;
import com.hbm.items.special.ItemSatellite.EnumSatType;
import com.hbm.lib.RefStrings;
import com.hbm.saveddata.satellites.SatelliteMiner;
import com.hbm.util.ItemStackUtil;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.WeightedRandomChestContent;
@ -45,15 +45,24 @@ public class SatelliteHandler extends TemplateRecipeHandler implements ICompatNH
return RefStrings.MODID + ":textures/gui/nei/gui_nei_anvil.png";
}
public static ComparableStack[] getMiningSatellites() {
return new ComparableStack[] {
new ComparableStack(ModItems.satellite, 1, EnumSatType.MINER_ASTRO),
new ComparableStack(ModItems.satellite, 1, EnumSatType.MINER_LUNAR),
new ComparableStack(ModItems.sat_miner),
new ComparableStack(ModItems.sat_lunar_miner),
};
}
@Override
public void loadCraftingRecipes(String outputId, Object... results) {
if(outputId.equals("ntmSatellite")) {
for(Item satelliteItem : new Item[]{ModItems.sat_miner, ModItems.sat_lunar_miner}) {
for(ComparableStack satelliteItem : getMiningSatellites()) {
String poolName = SatelliteMiner.getCargoForItem(satelliteItem);
if(poolName == null) {
continue;
}
this.addRecipeToList(satelliteItem, ItemPool.getPool(poolName));
this.addRecipeToList(satelliteItem.toStack(), ItemPool.getPool(poolName));
}
} else {
super.loadCraftingRecipes(outputId, results);
@ -62,7 +71,7 @@ public class SatelliteHandler extends TemplateRecipeHandler implements ICompatNH
@Override
public void loadCraftingRecipes(ItemStack result) {
for(Item satelliteItem : new Item[]{ModItems.sat_miner, ModItems.sat_lunar_miner}) {
for(ComparableStack satelliteItem : getMiningSatellites()) {
String poolName = SatelliteMiner.getCargoForItem(satelliteItem);
if(poolName == null) {
continue;
@ -70,7 +79,7 @@ public class SatelliteHandler extends TemplateRecipeHandler implements ICompatNH
WeightedRandomChestContent[] pool = ItemPool.getPool(poolName);
for(WeightedRandomChestContent poolEntry : pool) {
if(NEIServerUtils.areStacksSameTypeCrafting(poolEntry.theItemId, result)) {
this.addRecipeToList(satelliteItem, pool);
this.addRecipeToList(satelliteItem.toStack(), pool);
break;
}
}
@ -88,15 +97,18 @@ public class SatelliteHandler extends TemplateRecipeHandler implements ICompatNH
@Override
public void loadUsageRecipes(ItemStack ingredient) {
if(ingredient.getItem() == ModItems.sat_miner) {
this.addRecipeToList(ModItems.sat_miner, ItemPool.getPool(ItemPoolsSatellite.POOL_SAT_MINER));
} else if(ingredient.getItem() == ModItems.sat_lunar_miner) {
this.addRecipeToList(ModItems.sat_lunar_miner, ItemPool.getPool(ItemPoolsSatellite.POOL_SAT_LUNAR));
for(ComparableStack satelliteItem : getMiningSatellites()) {
if(satelliteItem.matchesRecipe(ingredient, true)) {
String poolName = SatelliteMiner.getCargoForItem(satelliteItem);
if(poolName == null) continue;
WeightedRandomChestContent[] pool = ItemPool.getPool(poolName);
this.addRecipeToList(satelliteItem.toStack(), pool);
}
}
}
private void addRecipeToList(Item poolItem, WeightedRandomChestContent[] poolEntries) {
private void addRecipeToList(ItemStack poolItem, WeightedRandomChestContent[] poolEntries) {
List<ItemStack> outs = new ArrayList<>();
int weight = Arrays.stream(poolEntries).mapToInt(poolEntry -> poolEntry.itemWeight).sum();
@ -109,7 +121,7 @@ public class SatelliteHandler extends TemplateRecipeHandler implements ICompatNH
outs.add(stack);
}
this.arecipes.add(new RecipeSet(new ItemStack(poolItem), outs));
this.arecipes.add(new RecipeSet(poolItem, outs));
}
@Override

View File

@ -1021,6 +1021,20 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
new ComparableStack(ModItems.circuit, 24, EnumCircuitType.BISMOID),
new ComparableStack(ModItems.part_generic, 4, EnumPartType.LDE),
new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_ADVANCED)));
this.register(new GenericRecipe("ass.detectorsat").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.DETECTOR.ordinal()))
.inputItems(new OreDictStack(GOLD.plateCast(), 16),
new ComparableStack(ModItems.photo_panel, 64),
new OreDictStack(BSCCO.wireDense(), 16),
new ComparableStack(ModItems.circuit, 24, EnumCircuitType.BISMOID),
new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE),
new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_ADVANCED)));
this.register(new GenericRecipe("ass.detectorsat").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.RAY_SCAN.ordinal()))
.inputItems(new OreDictStack(BIGMT.shell(), 16),
new ComparableStack(ModItems.photo_panel, 32),
new OreDictStack(SBD.wireDense(), 16),
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.QUANTUM),
new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE),
new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER_ADVANCED)));
this.register(new GenericRecipe("ass.satlink").setup(100, 1_000).outputItems(new ItemStack(ModBlocks.machine_satlink))
.inputItems(new ComparableStack(ModBlocks.steel_scaffold, 16),

View File

@ -26,6 +26,7 @@ public class ItemSatellite extends ItemEnumMulti implements ISatChip {
XENIUM_RESONATOR,
RELAY,
DETECTOR,
RAY_SCAN,
}
@Override

View File

@ -49,6 +49,7 @@ import com.hbm.packet.toclient.SerializableRecipePacket;
import com.hbm.particle.helper.BlackPowderCreator;
import com.hbm.potion.HbmPotion;
import com.hbm.saveddata.satellites.SatelliteDetector;
import com.hbm.saveddata.satellites.SatelliteRayScan;
import com.hbm.tileentity.machine.TileEntityMachineRadarNT;
import com.hbm.tileentity.machine.rbmk.RBMKDials;
import com.hbm.tileentity.network.RTTYSystem;
@ -636,6 +637,8 @@ public class ModEventHandler {
TimedGenerator.automaton(world, 100);
SatelliteDetector.updateSystem(world);
if(world.getTotalWorldTime() % 20 == 10)
SatelliteRayScan.updateSystem(world);
}
}

View File

@ -17,10 +17,7 @@ public class SatelliteDetector extends SatelliteBase {
public SatelliteDetector() { }
@Override
public String getType() {
return "RAY_DETECTOR";
}
@Override public String getType() { return "UWB_EMISSION_DETECTOR"; }
@Override
public void onCommandImpl(World world, String... cmd) {

View File

@ -1,8 +1,8 @@
package com.hbm.saveddata.satellites;
import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.itempool.ItemPoolsSatellite;
import com.hbm.util.WeightedRandomObject;
import net.minecraft.item.Item;
import net.minecraft.nbt.NBTTagCompound;
import java.util.HashMap;
@ -48,7 +48,7 @@ public class SatelliteMiner extends SatelliteBase {
* @param satelliteItem - Satellite item
* @return - Returns {@link com.hbm.itempool.ItemPool} key or null if the item is not a mining satellite.
*/
public static String getCargoForItem(Item satelliteItem) {
public static String getCargoForItem(ComparableStack satelliteItem) {
Class<? extends SatelliteBase> satelliteClass = XSatelliteRegistry.itemToClass.getOrDefault(satelliteItem, null);
return satelliteClass != null ? CARGO.getOrDefault(satelliteClass, null) : null;
}

View File

@ -0,0 +1,109 @@
package com.hbm.saveddata.satellites;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map.Entry;
import com.hbm.util.fauxpointtwelve.DimPos;
import api.hbm.redstoneoverradio.IRORInteractive;
import net.minecraft.world.World;
public class SatelliteRayScan extends SatelliteBase {
public List<RayEvent> cachedResults = new ArrayList();
public static final int MAX_SCAN_RANGE = 250;
public static final String CMD_SURVEY = "survey";
public static final String CMD_COUNT = "count";
public static final String CMD_GETINFO = "getinfo";
public static final String CMD_GETPOSITION = "getposition";
public SatelliteRayScan() { }
@Override public String getType() { return "NB_RAY_SCANNER"; }
@Override
public void onCommandImpl(World world, String... cmd) {
if(cmd.length <= 0) return;
if(cmd[0].equals(CMD_SURVEY)) {
this.cachedResults.clear();
for(Entry<DimPos, RayEvent> entry : rayEvent.entrySet()) {
DimPos pos = entry.getKey();
RayEvent event = entry.getValue();
if(pos.getDim() != world.provider.dimensionId) continue;
int dX = pos.getX() - this.targetX;
int dZ = pos.getZ() - this.targetZ;
if(dX * dX + dZ * dZ <= MAX_SCAN_RANGE * MAX_SCAN_RANGE) {
this.cachedResults.add(event);
}
}
return;
}
if(cmd[0].equals(CMD_COUNT)) {
this.tx = "" + cachedResults.size();
return;
}
if(cmd[0].equals(CMD_GETINFO) && cmd.length == 2) {
RayEvent event = getEventFromIndex(cmd[1]);
if(event == null) { this.tx = ""; return; }
this.tx = "" + event.info;
return;
}
if(cmd[0].equals(CMD_GETPOSITION) && cmd.length == 2) {
RayEvent event = getEventFromIndex(cmd[1]);
if(event == null) { this.tx = ""; return; }
this.tx = event.x + ";" + event.z;
return;
}
}
public RayEvent getEventFromIndex(String cmd) {
if(cachedResults.size() <= 0) return null;
int index = IRORInteractive.parseInt(cmd, 0, cachedResults.size()) - 1;
return cachedResults.get(index);
}
public static LinkedHashMap<DimPos, RayEvent> rayEvent = new LinkedHashMap();
public static void reportEvent(World world, int x, int y, int z, String info, int lifetime) {
rayEvent.put(new DimPos(x, y, z, world.provider.dimensionId), new RayEvent(world, lifetime, x, z, info));
}
// only once per second
public static void updateSystem(World world) {
rayEvent.entrySet().removeIf(entry -> {
return world.provider.dimensionId == entry.getKey().getDim() && world.getTotalWorldTime() > entry.getValue().expiresOn;
});
}
public static class RayEvent {
public static final String INFO_ARC_FLASH = "ARC_FLASH";
public static final String INFO_NUCLEAR = "NEUTRON_EMISSION";
public static final String INFO_PARTICLE = "HIGH_ENERGY_PARTICLES";
public static final String INFO_RADAR = "RADAR_WAVES";
public static final String INFO_RADIO = "RADIO_WAVES";
public long expiresOn;
public String info;
public int x;
public int z;
public RayEvent(World world, int lifetime, int x, int z, String info) {
this.expiresOn = world.getTotalWorldTime() + lifetime;
this.x = x;
this.z = z;
this.info = info;
}
}
}

View File

@ -30,6 +30,7 @@ public class XSatelliteRegistry {
registerSatellite(SatelliteHorizons.class, ModItems.sat_gerald);
registerSatellite(SatellitePrecisionLaser.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.PRECISION_LASER));
registerSatellite(SatelliteDetector.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.DETECTOR));
registerSatellite(SatelliteRayScan.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.RAY_SCAN));
registerSatellite(SatelliteMapper.class, ModItems.sat_mapper);

View File

@ -18,6 +18,8 @@ import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemCatalyst;
import com.hbm.lib.Library;
import com.hbm.lib.ModDamageSource;
import com.hbm.saveddata.satellites.SatelliteRayScan;
import com.hbm.saveddata.satellites.SatelliteRayScan.RayEvent;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.ArmorUtil;
@ -136,8 +138,11 @@ public class TileEntityCore extends TileEntityMachineBase implements IGUIProvide
else
color = 0;
if(heat > 0)
if(heat > 0) {
radiation();
if(worldObj.getTotalWorldTime() % 100 == 0)
SatelliteRayScan.reportEvent(worldObj, xCoord, yCoord, zCoord, RayEvent.INFO_PARTICLE, 200);
}
networkPackNT(250);

View File

@ -14,6 +14,8 @@ import com.hbm.items.machine.ItemICFPellet;
import com.hbm.lib.Library;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.saveddata.satellites.SatelliteRayScan;
import com.hbm.saveddata.satellites.SatelliteRayScan.RayEvent;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.CompatEnergyControl;
@ -112,6 +114,10 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider
markDirty = true;
}
if(worldObj.getTotalWorldTime() % 20 == 15) {
SatelliteRayScan.reportEvent(worldObj, xCoord, yCoord, zCoord, RayEvent.INFO_PARTICLE, 200);
}
tanks[2].setFill(tanks[2].getFill() + (int) Math.ceil(this.heat * 10D / this.maxHeat));
if(tanks[2].getFill() > tanks[2].getMaxFill()) tanks[2].setFill(tanks[2].getMaxFill());

View File

@ -21,6 +21,8 @@ import com.hbm.main.MainRegistry;
import com.hbm.saveddata.SatelliteSavedData;
import com.hbm.saveddata.satellites.SatelliteBase;
import com.hbm.saveddata.satellites.SatelliteDetector;
import com.hbm.saveddata.satellites.SatelliteRayScan;
import com.hbm.saveddata.satellites.SatelliteRayScan.RayEvent;
import com.hbm.saveddata.satellites.SatelliteDetector.BurstIntensity;
import com.hbm.tileentity.IConfigurableMachine;
import com.hbm.tileentity.IGUIProvider;
@ -362,8 +364,10 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
}
}
if(worldObj.getTotalWorldTime() % 20 == 0)
if(worldObj.getTotalWorldTime() % 20 == 0) {
SatelliteDetector.reportEvent(worldObj, SatelliteDetector.DURATION_MEDIUM, BurstIntensity.MEDIUM, xCoord, zCoord);
SatelliteRayScan.reportEvent(worldObj, xCoord, yCoord, zCoord, RayEvent.INFO_RADAR, 200);
}
}
public int getRedPower() {

View File

@ -2,6 +2,8 @@ package com.hbm.tileentity.machine;
import com.hbm.saveddata.SatelliteSavedData;
import com.hbm.saveddata.satellites.SatelliteBase;
import com.hbm.saveddata.satellites.SatelliteRayScan;
import com.hbm.saveddata.satellites.SatelliteRayScan.RayEvent;
import com.hbm.tileentity.TileEntityTickingBase;
import api.hbm.redstoneoverradio.IRORInteractive;
@ -160,6 +162,7 @@ public class TileEntityMachineSatLink extends TileEntityTickingBase implements I
if(sat != null) {
sat.onCommand(worldObj, cmd);
}
SatelliteRayScan.reportEvent(worldObj, xCoord, yCoord, zCoord, RayEvent.INFO_RADIO, 300);
this.markChanged();
}

View File

@ -22,6 +22,8 @@ import com.hbm.items.machine.ItemPWRFuel.EnumPWRFuel;
import com.hbm.items.machine.ItemPWRPrinter;
import com.hbm.main.MainRegistry;
import com.hbm.main.NTMSounds;
import com.hbm.saveddata.satellites.SatelliteRayScan;
import com.hbm.saveddata.satellites.SatelliteRayScan.RayEvent;
import com.hbm.sound.AudioWrapper;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase;
@ -255,6 +257,9 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG
this.amountLoaded--;
this.markChanged();
}
if(worldObj.getTotalWorldTime() % 100 == 0)
SatelliteRayScan.reportEvent(worldObj, xCoord, yCoord, zCoord, RayEvent.INFO_NUCLEAR, 200);
}
if(this.amountLoaded <= 0) {

View File

@ -22,6 +22,8 @@ import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemZirnoxRod;
import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType;
import com.hbm.main.MainRegistry;
import com.hbm.saveddata.satellites.SatelliteRayScan;
import com.hbm.saveddata.satellites.SatelliteRayScan.RayEvent;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.CompatEnergyControl;
@ -226,6 +228,8 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC
this.heat -= 10;
}
if(worldObj.getTotalWorldTime() % 100 == 0)
SatelliteRayScan.reportEvent(worldObj, xCoord, yCoord, zCoord, RayEvent.INFO_NUCLEAR, 200);
}
if(!this.tilted) for(DirPos pos : getConPos()) {

View File

@ -11,7 +11,9 @@ import com.hbm.items.ModItems;
import com.hbm.lib.Library;
import com.hbm.main.MainRegistry;
import com.hbm.saveddata.satellites.SatelliteDetector;
import com.hbm.saveddata.satellites.SatelliteRayScan;
import com.hbm.saveddata.satellites.SatelliteDetector.BurstIntensity;
import com.hbm.saveddata.satellites.SatelliteRayScan.RayEvent;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.machine.albion.TileEntityPASource.PAState;
import com.hbm.tileentity.machine.albion.TileEntityPASource.Particle;
@ -163,6 +165,7 @@ public class TileEntityPADetector extends TileEntityCooledBase implements IGUIPr
}
SatelliteDetector.reportEvent(worldObj, SatelliteDetector.DURATION_MEDIUM, BurstIntensity.MEDIUM, xCoord, zCoord);
SatelliteRayScan.reportEvent(worldObj, xCoord, yCoord, zCoord, RayEvent.INFO_PARTICLE, 600);
particle.crash(PAState.SUCCESS);
return;
}

View File

@ -14,6 +14,8 @@ import com.hbm.lib.Library;
import com.hbm.main.MainRegistry;
import com.hbm.main.NTMSounds;
import com.hbm.module.machine.ModuleMachineFusion;
import com.hbm.saveddata.satellites.SatelliteRayScan;
import com.hbm.saveddata.satellites.SatelliteRayScan.RayEvent;
import com.hbm.sound.AudioWrapper;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityLoadedBase;
@ -188,6 +190,10 @@ public class TileEntityFusionTorus extends TileEntityCooledBase implements IGUIP
r = recipe.r;
g = recipe.g;
b = recipe.b;
if(worldObj.getTotalWorldTime() % 20 == 15) {
SatelliteRayScan.reportEvent(worldObj, xCoord, yCoord, zCoord, RayEvent.INFO_PARTICLE, 200);
}
}
double outputIntensity = this.getOuputIntensity(receiverCount);

View File

@ -15,6 +15,8 @@ import com.hbm.inventory.container.ContainerRBMKRod;
import com.hbm.inventory.gui.GUIRBMKRod;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemRBMKRod;
import com.hbm.saveddata.satellites.SatelliteRayScan;
import com.hbm.saveddata.satellites.SatelliteRayScan.RayEvent;
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType;
import com.hbm.util.BufferUtil;
import com.hbm.util.CompatEnergyControl;
@ -118,6 +120,9 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM
if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) {
if(this.fluxQuantity > 0 && worldObj.getTotalWorldTime() % 200 == 0)
SatelliteRayScan.reportEvent(worldObj, xCoord, yCoord, zCoord, RayEvent.INFO_NUCLEAR, 300);
ItemRBMKRod rod = ((ItemRBMKRod)slots[0].getItem());
this.rodColor = rod.colorTint;

View File

@ -0,0 +1,28 @@
package com.hbm.util.fauxpointtwelve;
public class DimPos extends BlockPos {
private int dimension;
public DimPos(double x, double y, double z, int dim) {
super(x, y, z);
this.dimension = dim;
}
public DimPos(int x, int y, int z, int dim) {
super(x, y, z);
this.dimension = dim;
}
public int getDim() {
return this.dimension;
}
@Override
public int hashCode() {
return getDimIdentity(this.getX(), this.getY(), this.getZ(), this.getDim());
}
public static int getDimIdentity(int x, int y, int z, int dim) {
return ((y + dim * 27644437) + z * 27644437) * 27644437 + x;
}
}

View File

@ -4415,6 +4415,7 @@ item.satellite.miner_astro.name=Asteroid Mining Ship
item.satellite.miner_lunar.name=Lunar Mining Ship
item.satellite.precision_laser.name=Orbital Precision Laser
item.satellite.radar.name=Radar Satellite
item.satellite.ray_scan.name=Narrowband Emission Scanning Satellite
item.satellite.relay.name=Relay Satellite
item.satellite.scanner.name=Depth Scanning Satellite
item.satellite.spy.name=Spy Satellite

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B