mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-08-10 17:55:44 +00:00
Merge branch 'HbmMods:master' into DipoleGUI
This commit is contained in:
commit
b3e054f654
@ -97,10 +97,6 @@ repositories {
|
||||
name = "CurseMaven"
|
||||
url = "https://cursemaven.com"
|
||||
}
|
||||
maven {
|
||||
name = "OpenComputers"
|
||||
url = "https://maven.cil.li/"
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@ -115,7 +111,7 @@ dependencies {
|
||||
|
||||
compileOnly("inventorytweaks:InventoryTweaks:1.59-dev:deobf") { transitive = false }
|
||||
|
||||
compileOnly("li.cil.oc:OpenComputers:MC1.7.10-1.5.+:api") { transitive = false }
|
||||
compileOnly("com.github.MightyPirates:OpenComputers:1.7.10-forge~1.8.9:api") { transitive = false }
|
||||
|
||||
compileOnly("com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta.56-GTNH:dev") { transitive = false }
|
||||
}
|
||||
|
||||
78
changelog
78
changelog
@ -1,62 +1,26 @@
|
||||
## 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
|
||||
* Updated russian and chinese localization
|
||||
* AUTOCAL's `first` and `last` instructions now support variable substitution
|
||||
* Spy satellites now have the `getsmog` command, checking for soot pollution on the current target coordinate
|
||||
* The research reactor and breeding reactor have been deprecated
|
||||
* The reactors and the plate fuel no longer have recipes, but existing ones will continue to function until they run out of fuel
|
||||
|
||||
## 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
|
||||
* Fixed crash caused by non-miner satellite ID chips in the cargo landing pad
|
||||
* Potentially fixed ID-shift affecting satellites launched pre-update
|
||||
* Fixed xenium resonator item mapping being incorrect, creating a relay satellite instead
|
||||
* Fixed a potential crash caused by accessing out-of-range data on the radar satellite
|
||||
* Fixed QMAW manual pages not being able to be overwritten by resource packs
|
||||
* This feature was a major pain in the ass to actually make, and it apparently never even worked until now
|
||||
* Fixed satellite groundstation losing its frequency on relog
|
||||
* Added extra safeguarding preventing crashes caused by multiblock door tile entities not bound to the correct block
|
||||
@ -11,8 +11,11 @@ import com.hbm.interfaces.IBomb;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.weapon.sedna.factory.XFactoryCatapult;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.main.NTMSounds;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
||||
import com.hbm.saveddata.satellites.SatelliteDetector;
|
||||
import com.hbm.saveddata.satellites.SatelliteDetector.BurstIntensity;
|
||||
import com.hbm.tileentity.bomb.TileEntityLandmine;
|
||||
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
@ -205,7 +208,8 @@ public class Landmine extends BlockContainer implements IBomb {
|
||||
data.setBoolean("balefire", MainRegistry.polaroidID == 11 || world.rand.nextInt(100) == 0);
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x + 0.5, y + 0.5, z + 0.5), new TargetPoint(world.provider.dimensionId, x + 0.5, y + 0.5, z + 0.5, 250));
|
||||
|
||||
world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:weapon.mukeExplosion", 25.0F, 0.9F); // this has to be the single worst solution ever
|
||||
SatelliteDetector.reportEvent(world, SatelliteDetector.DURATION_LOW, BurstIntensity.LOW, x + 0.5, z + 0.5);
|
||||
world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, NTMSounds.GUN_MINI_NUKE_EXPLOSION, 25.0F, 0.9F); // this has to be the single worst solution ever
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -18,6 +18,8 @@ import com.hbm.explosion.ExplosionSolinium;
|
||||
import com.hbm.interfaces.Spaghetti;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
||||
import com.hbm.saveddata.satellites.SatelliteDetector;
|
||||
import com.hbm.saveddata.satellites.SatelliteDetector.BurstIntensity;
|
||||
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
@ -141,6 +143,7 @@ public class EntityNukeExplosionMK3 extends EntityExplosionChunkloading {
|
||||
sol = new ExplosionSolinium((int) this.posX, (int) this.posY, (int) this.posZ, this.worldObj, this.destructionRange, this.coefficient, this.coefficient2);
|
||||
}
|
||||
|
||||
SatelliteDetector.reportEvent(worldObj, SatelliteDetector.DURATION_HIGH, BurstIntensity.HIGH, posX, posZ);
|
||||
this.did = true;
|
||||
}
|
||||
|
||||
|
||||
@ -11,6 +11,8 @@ import com.hbm.entity.effect.EntityFalloutRain;
|
||||
import com.hbm.explosion.ExplosionNukeGeneric;
|
||||
import com.hbm.explosion.ExplosionNukeRayBatched;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.saveddata.satellites.SatelliteDetector;
|
||||
import com.hbm.saveddata.satellites.SatelliteDetector.BurstIntensity;
|
||||
import com.hbm.util.ContaminationUtil;
|
||||
import com.hbm.util.ContaminationUtil.ContaminationType;
|
||||
import com.hbm.util.ContaminationUtil.HazardType;
|
||||
@ -74,6 +76,8 @@ public class EntityNukeExplosionMK5 extends EntityExplosionChunkloading {
|
||||
//} else {
|
||||
explosion = new ExplosionNukeRayBatched(worldObj, (int) posX, (int) posY, (int) posZ, strength, speed, length);
|
||||
//}
|
||||
|
||||
SatelliteDetector.reportEvent(worldObj, SatelliteDetector.DURATION_HIGH, BurstIntensity.HIGH, posX, posZ);
|
||||
}
|
||||
|
||||
if(!explosion.isComplete()) {
|
||||
|
||||
@ -1,130 +0,0 @@
|
||||
package com.hbm.handler.nei;
|
||||
|
||||
import java.awt.Rectangle;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.handler.imc.ICompatNHNEI;
|
||||
import com.hbm.inventory.gui.GUIMachineReactorBreeding;
|
||||
import com.hbm.inventory.recipes.BreederRecipes;
|
||||
import com.hbm.inventory.recipes.BreederRecipes.BreederRecipe;
|
||||
|
||||
import codechicken.lib.gui.GuiDraw;
|
||||
import codechicken.nei.NEIServerUtils;
|
||||
import codechicken.nei.PositionedStack;
|
||||
import codechicken.nei.recipe.TemplateRecipeHandler;
|
||||
import net.minecraft.client.gui.inventory.GuiContainer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class BreederRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI {
|
||||
|
||||
@Override
|
||||
public ItemStack[] getMachinesForRecipe() {
|
||||
return new ItemStack[]{
|
||||
new ItemStack(ModBlocks.machine_reactor_breeding)};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRecipeID() {
|
||||
return "breeding";
|
||||
}
|
||||
public class BreedingSet extends TemplateRecipeHandler.CachedRecipe {
|
||||
|
||||
PositionedStack input;
|
||||
PositionedStack result;
|
||||
public int flux;
|
||||
|
||||
public BreedingSet(ItemStack input, ItemStack result, int flux) {
|
||||
input.stackSize = 1;
|
||||
this.input = new PositionedStack(input, 30, 24);
|
||||
this.result = new PositionedStack(result, 120, 24);
|
||||
this.flux = flux;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PositionedStack> getIngredients() {
|
||||
return getCycledIngredients(cycleticks / 48, Arrays.asList(new PositionedStack[] { input }));
|
||||
}
|
||||
|
||||
@Override
|
||||
public PositionedStack getResult() {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRecipeName() {
|
||||
return "Breeding Reactor";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGuiTexture() {
|
||||
return GUIMachineReactorBreeding.texture.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadCraftingRecipes(String outputId, Object... results) {
|
||||
|
||||
if((outputId.equals("breeding")) && getClass() == BreederRecipeHandler.class) {
|
||||
|
||||
Map<ItemStack, BreederRecipe> recipes = BreederRecipes.getAllRecipes();
|
||||
|
||||
for(Map.Entry<ItemStack, BreederRecipe> recipe : recipes.entrySet()) {
|
||||
this.arecipes.add(new BreedingSet(recipe.getKey(), recipe.getValue().output, recipe.getValue().flux));
|
||||
}
|
||||
} else {
|
||||
super.loadCraftingRecipes(outputId, results);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadCraftingRecipes(ItemStack result) {
|
||||
|
||||
Map<ItemStack, BreederRecipe> recipes = BreederRecipes.getAllRecipes();
|
||||
|
||||
for(Map.Entry<ItemStack, BreederRecipe> recipe : recipes.entrySet()) {
|
||||
if(NEIServerUtils.areStacksSameType(recipe.getValue().output, result))
|
||||
this.arecipes.add(new BreedingSet(recipe.getKey(), recipe.getValue().output, recipe.getValue().flux));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadUsageRecipes(String inputId, Object... ingredients) {
|
||||
if((inputId.equals("breeding")) && getClass() == BreederRecipeHandler.class) {
|
||||
loadCraftingRecipes("breeding", new Object[0]);
|
||||
} else {
|
||||
super.loadUsageRecipes(inputId, ingredients);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadUsageRecipes(ItemStack ingredient) {
|
||||
|
||||
Map<ItemStack, BreederRecipe> recipes = BreederRecipes.getAllRecipes();
|
||||
|
||||
for(Map.Entry<ItemStack, BreederRecipe> recipe : recipes.entrySet()) {
|
||||
if(NEIServerUtils.areStacksSameType(ingredient, (ItemStack) recipe.getKey()))
|
||||
this.arecipes.add(new BreedingSet(recipe.getKey(), recipe.getValue().output, recipe.getValue().flux));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends GuiContainer> getGuiClass() {
|
||||
return GUIMachineReactorBreeding.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadTransferRects() {
|
||||
transferRects.add(new RecipeTransferRect(new Rectangle(68, 9, 30, 37), "breeding"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawExtras(int recipe) {
|
||||
drawProgressBar(48, 21, 176, 0, 70, 20, 50, 0);
|
||||
|
||||
String flux = ((BreedingSet) this.arecipes.get(recipe)).flux + "";
|
||||
GuiDraw.drawString(flux, 83 - GuiDraw.fontRenderer.getStringWidth(flux) / 2, 10, 0x08FF00);
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
@ -44,16 +44,25 @@ public class SatelliteHandler extends TemplateRecipeHandler implements ICompatNH
|
||||
public String getGuiTexture() {
|
||||
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
|
||||
|
||||
@ -511,12 +511,6 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
|
||||
.inputItemsEx(new OreDictStack(KEY_PLANKS, 1), new OreDictStack(GRAPHITE.ingot(), 8), new OreDictStack(STEEL.plate(), 1)));
|
||||
|
||||
// reactors
|
||||
this.register(new GenericRecipe("ass.breedingreactor").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_reactor_breeding, 1))
|
||||
.inputItems(new ComparableStack(ModItems.reactor_core, 1), new OreDictStack(STEEL.ingot(), 12), new OreDictStack(PB.plate(), 16), new ComparableStack(ModBlocks.reinforced_glass, 4), new OreDictStack(ASBESTOS.ingot(), 4), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.crt_display, 1))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.LEAD_PLATING), new ComparableStack(ModItems.reactor_core, 1), new OreDictStack(ASBESTOS.ingot(), 16), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.crt_display, 1)));
|
||||
this.register(new GenericRecipe("ass.researchreactor").setup(200, 100).outputItems(new ItemStack(ModBlocks.reactor_research, 1))
|
||||
.inputItems(new OreDictStack(STEEL.ingot(), 8), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.motor_desh, 2), new OreDictStack(B.ingot(), 5), new OreDictStack(PB.plate(), 8), new ComparableStack(ModItems.crt_display, 3), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.FERRO_PLATING), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.crt_display, 3), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.CIRCUIT)));
|
||||
this.register(new GenericRecipe("ass.cirnox").setup(600, 100).outputItems(new ItemStack(ModBlocks.reactor_zirnox, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 4), new OreDictStack(STEEL.pipe(), 8), new OreDictStack(B.ingot(), 8), new OreDictStack(GRAPHITE.ingot(), 16), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(ANY_CONCRETE.any(), 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.LEAD_PLATING), new OreDictStack(GRAPHITE.ingot(), 16), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(ANY_CONCRETE.any(), 16), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.CIRCUIT)));
|
||||
@ -1021,6 +1015,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.rayscansat").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),
|
||||
|
||||
@ -553,14 +553,6 @@ public class AnvilRecipes extends SerializableRecipe {
|
||||
new OreDictStack(PU239.billet(), 3)
|
||||
}, new AnvilOutput(new ItemStack(ModItems.missile_doomsday))).setTier(5));
|
||||
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.ingot_u233, 1), new AnvilOutput(new ItemStack(ModItems.plate_fuel_u233))).setTier(4));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.ingot_u235, 1), new AnvilOutput(new ItemStack(ModItems.plate_fuel_u235))).setTier(4));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.ingot_mox_fuel, 1), new AnvilOutput(new ItemStack(ModItems.plate_fuel_mox))).setTier(4));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.ingot_pu239, 1), new AnvilOutput(new ItemStack(ModItems.plate_fuel_pu239))).setTier(4));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.ingot_schrabidium, 1), new AnvilOutput(new ItemStack(ModItems.plate_fuel_sa326))).setTier(4));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.billet_ra226be, 1), new AnvilOutput(new ItemStack(ModItems.plate_fuel_ra226be))).setTier(4));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.billet_pu238be, 1), new AnvilOutput(new ItemStack(ModItems.plate_fuel_pu238be))).setTier(4));
|
||||
|
||||
for(int i = 0; i < 15; i += 3) {
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(IRON.plate(), 1), new AnvilOutput(new ItemStack(ModBlocks.fluid_duct_box, 1, i))).setTier(2).setOverlay(OverlayType.CONSTRUCTION));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate(), 1), new AnvilOutput(new ItemStack(ModBlocks.fluid_duct_box, 1, i + 1))).setTier(2).setOverlay(OverlayType.CONSTRUCTION));
|
||||
|
||||
@ -959,13 +959,13 @@ public class ModItems {
|
||||
public static Item waste_schrabidium;
|
||||
public static Item waste_zfb_mox;
|
||||
|
||||
public static Item waste_plate_u233;
|
||||
public static Item waste_plate_u235;
|
||||
public static Item waste_plate_mox;
|
||||
public static Item waste_plate_pu239;
|
||||
public static Item waste_plate_sa326;
|
||||
public static Item waste_plate_ra226be;
|
||||
public static Item waste_plate_pu238be;
|
||||
@Deprecated public static Item waste_plate_u233;
|
||||
@Deprecated public static Item waste_plate_u235;
|
||||
@Deprecated public static Item waste_plate_mox;
|
||||
@Deprecated public static Item waste_plate_pu239;
|
||||
@Deprecated public static Item waste_plate_sa326;
|
||||
@Deprecated public static Item waste_plate_ra226be;
|
||||
@Deprecated public static Item waste_plate_pu238be;
|
||||
|
||||
@Deprecated public static Item pile_rod_uranium;
|
||||
@Deprecated public static Item pile_rod_pu239;
|
||||
@ -977,13 +977,13 @@ public class ModItems {
|
||||
|
||||
public static Item pile_rod;
|
||||
|
||||
public static Item plate_fuel_u233;
|
||||
public static Item plate_fuel_u235;
|
||||
public static Item plate_fuel_mox;
|
||||
public static Item plate_fuel_pu239;
|
||||
public static Item plate_fuel_sa326;
|
||||
public static Item plate_fuel_ra226be;
|
||||
public static Item plate_fuel_pu238be;
|
||||
@Deprecated public static Item plate_fuel_u233;
|
||||
@Deprecated public static Item plate_fuel_u235;
|
||||
@Deprecated public static Item plate_fuel_mox;
|
||||
@Deprecated public static Item plate_fuel_pu239;
|
||||
@Deprecated public static Item plate_fuel_sa326;
|
||||
@Deprecated public static Item plate_fuel_ra226be;
|
||||
@Deprecated public static Item plate_fuel_pu238be;
|
||||
|
||||
public static Item pwr_fuel;
|
||||
public static Item pwr_fuel_hot;
|
||||
@ -2998,13 +2998,13 @@ public class ModItems {
|
||||
|
||||
pile_rod = new ItemPileRodMK2().setUnlocalizedName("pile_rod").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pile_rod");
|
||||
|
||||
plate_fuel_u233 = new ItemPlateFuel(2200000).setFunction(FunctionEnum.SQUARE_ROOT, 50).setUnlocalizedName("plate_fuel_u233").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":plate_fuel_u233");
|
||||
plate_fuel_u235 = new ItemPlateFuel(2200000).setFunction(FunctionEnum.SQUARE_ROOT, 40).setUnlocalizedName("plate_fuel_u235").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":plate_fuel_u235");
|
||||
plate_fuel_mox = new ItemPlateFuel(2400000).setFunction(FunctionEnum.LOGARITHM, 50).setUnlocalizedName("plate_fuel_mox").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":plate_fuel_mox");
|
||||
plate_fuel_pu239 = new ItemPlateFuel(2000000).setFunction(FunctionEnum.NEGATIVE_QUADRATIC, 50).setUnlocalizedName("plate_fuel_pu239").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":plate_fuel_pu239");
|
||||
plate_fuel_sa326 = new ItemPlateFuel(2000000).setFunction(FunctionEnum.LINEAR, 80).setUnlocalizedName("plate_fuel_sa326").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":plate_fuel_sa326");
|
||||
plate_fuel_ra226be = new ItemPlateFuel(1300000).setFunction(FunctionEnum.PASSIVE, 30).setUnlocalizedName("plate_fuel_ra226be").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":plate_fuel_ra226be");
|
||||
plate_fuel_pu238be = new ItemPlateFuel(1000000).setFunction(FunctionEnum.PASSIVE, 50).setUnlocalizedName("plate_fuel_pu238be").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":plate_fuel_pu238be");
|
||||
plate_fuel_u233 = new ItemPlateFuel(2200000).setFunction(FunctionEnum.SQUARE_ROOT, 50).setUnlocalizedName("plate_fuel_u233").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":plate_fuel_u233");
|
||||
plate_fuel_u235 = new ItemPlateFuel(2200000).setFunction(FunctionEnum.SQUARE_ROOT, 40).setUnlocalizedName("plate_fuel_u235").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":plate_fuel_u235");
|
||||
plate_fuel_mox = new ItemPlateFuel(2400000).setFunction(FunctionEnum.LOGARITHM, 50).setUnlocalizedName("plate_fuel_mox").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":plate_fuel_mox");
|
||||
plate_fuel_pu239 = new ItemPlateFuel(2000000).setFunction(FunctionEnum.NEGATIVE_QUADRATIC, 50).setUnlocalizedName("plate_fuel_pu239").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":plate_fuel_pu239");
|
||||
plate_fuel_sa326 = new ItemPlateFuel(2000000).setFunction(FunctionEnum.LINEAR, 80).setUnlocalizedName("plate_fuel_sa326").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":plate_fuel_sa326");
|
||||
plate_fuel_ra226be = new ItemPlateFuel(1300000).setFunction(FunctionEnum.PASSIVE, 30).setUnlocalizedName("plate_fuel_ra226be").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":plate_fuel_ra226be");
|
||||
plate_fuel_pu238be = new ItemPlateFuel(1000000).setFunction(FunctionEnum.PASSIVE, 50).setUnlocalizedName("plate_fuel_pu238be").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":plate_fuel_pu238be");
|
||||
|
||||
pwr_fuel = new ItemPWRFuel().setUnlocalizedName("pwr_fuel").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pwr_fuel");
|
||||
pwr_fuel_hot = new ItemEnumMulti(EnumPWRFuel.class, true, false).setUnlocalizedName("pwr_fuel_hot").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pwr_fuel_hot");
|
||||
|
||||
@ -24,7 +24,9 @@ public class ItemSatellite extends ItemEnumMulti implements ISatChip {
|
||||
PRECISION_LASER,
|
||||
DEATH_RAY,
|
||||
XENIUM_RESONATOR,
|
||||
RELAY
|
||||
RELAY,
|
||||
DETECTOR,
|
||||
RAY_SCAN,
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -569,7 +569,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro
|
||||
EntityPlayerMP playerMP = (EntityPlayerMP) player;
|
||||
MovingObjectPosition mop = EntityDamageUtil.getMouseOver(playerMP, playerMP.theItemInWorldManager.getBlockReachDistance());
|
||||
|
||||
if(mop.typeOfHit == mop.typeOfHit.BLOCK) {
|
||||
if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) {
|
||||
// this is horrifying and won't always produce the correct results, but it beats not having anything
|
||||
// simply put, we check if we are aiming at a block, and if we do, we compare that block's onBlockActivated
|
||||
// method to the one from Block.class. If the declaring class doesn't match, it's overridden, and we
|
||||
|
||||
@ -33,6 +33,8 @@ import com.hbm.items.weapon.sedna.factory.XFactoryCatapult;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.main.NTMSounds;
|
||||
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
||||
import com.hbm.saveddata.satellites.SatelliteDetector;
|
||||
import com.hbm.saveddata.satellites.SatelliteDetector.BurstIntensity;
|
||||
import com.hbm.util.DamageResistanceHandler.DamageClass;
|
||||
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
@ -245,6 +247,7 @@ public class ItemGrenadeFilling extends ItemEnumMulti {
|
||||
}
|
||||
|
||||
public static void spawnMush(EntityGrenadeUniversal grenade) {
|
||||
SatelliteDetector.reportEvent(grenade.worldObj, SatelliteDetector.DURATION_LOW, BurstIntensity.LOW, grenade.posX, grenade.posZ);
|
||||
grenade.worldObj.playSoundEffect(grenade.posX, grenade.posY, grenade.posZ, NTMSounds.GUN_MINI_NUKE_EXPLOSION, 15.0F, 1.0F);
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "muke");
|
||||
|
||||
@ -33,6 +33,8 @@ import com.hbm.render.anim.AnimationEnums.GunAnimation;
|
||||
import com.hbm.render.anim.BusAnimation;
|
||||
import com.hbm.render.anim.BusAnimationSequence;
|
||||
import com.hbm.render.anim.BusAnimationKeyframe.IType;
|
||||
import com.hbm.saveddata.satellites.SatelliteDetector;
|
||||
import com.hbm.saveddata.satellites.SatelliteDetector.BurstIntensity;
|
||||
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@ -103,6 +105,7 @@ public class XFactoryCatapult {
|
||||
|
||||
incrementRad(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 1.5F);
|
||||
|
||||
SatelliteDetector.reportEvent(bullet.worldObj, SatelliteDetector.DURATION_LOW, BurstIntensity.LOW, bullet.posX, bullet.posZ);
|
||||
bullet.worldObj.playSoundEffect(mop.hitVec.xCoord, mop.hitVec.yCoord + 0.5, mop.hitVec.zCoord, NTMSounds.GUN_MINI_NUKE_EXPLOSION, 15.0F, 1.0F);
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "muke");
|
||||
@ -120,6 +123,7 @@ public class XFactoryCatapult {
|
||||
}
|
||||
|
||||
public static void spawnMush(EntityBulletBaseMK4 bullet, MovingObjectPosition mop) {
|
||||
SatelliteDetector.reportEvent(bullet.worldObj, SatelliteDetector.DURATION_LOW, BurstIntensity.LOW, bullet.posX, bullet.posZ);
|
||||
bullet.worldObj.playSoundEffect(mop.hitVec.xCoord, mop.hitVec.yCoord + 0.5, mop.hitVec.zCoord, NTMSounds.GUN_MINI_NUKE_EXPLOSION, 15.0F, 1.0F);
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "muke");
|
||||
@ -138,6 +142,7 @@ public class XFactoryCatapult {
|
||||
vnt.explode();
|
||||
|
||||
incrementRad(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 0.25F);
|
||||
SatelliteDetector.reportEvent(bullet.worldObj, SatelliteDetector.DURATION_LOW, BurstIntensity.LOW, bullet.posX, bullet.posZ);
|
||||
bullet.worldObj.playSoundEffect(mop.hitVec.xCoord, mop.hitVec.yCoord + 0.5, mop.hitVec.zCoord, NTMSounds.GUN_MINI_NUKE_EXPLOSION, 15.0F, 1.0F);
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "tinytot");
|
||||
|
||||
@ -48,6 +48,8 @@ import com.hbm.packet.toclient.PlayerInformPacket;
|
||||
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;
|
||||
@ -633,6 +635,10 @@ public class ModEventHandler {
|
||||
if(event.phase == Phase.START) {
|
||||
BossSpawnHandler.rollTheDice(world);
|
||||
TimedGenerator.automaton(world, 100);
|
||||
|
||||
SatelliteDetector.updateSystem(world);
|
||||
if(world.getTotalWorldTime() % 20 == 10)
|
||||
SatelliteRayScan.updateSystem(world);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -33,7 +33,6 @@ public class NEIRegistry {
|
||||
handlers.add(new RefineryRecipeHandler());
|
||||
handlers.add(new CentrifugeRecipeHandler());
|
||||
handlers.add(new GasCentrifugeRecipeHandler());
|
||||
handlers.add(new BreederRecipeHandler());
|
||||
handlers.add(new CyclotronRecipeHandler());
|
||||
handlers.add(new VacuumRecipeHandler());
|
||||
handlers.add(new CrackingHandler());
|
||||
|
||||
@ -93,7 +93,7 @@ public class ParseMSES1Ext1 extends ParseMSES1 {
|
||||
if(lower.startsWith("first ")) {
|
||||
if(line.length() <= 6) return EnumStatementReturn.PARAMETER_ERROR;
|
||||
try {
|
||||
int length = Integer.parseInt(line.substring(6));
|
||||
int length = Integer.parseInt(substitute(ctx, line.substring(6), true));
|
||||
int max = ctx.readBuffer().length();
|
||||
if(length > max) length = max;
|
||||
ctx.writeBuffer(ctx.readBuffer().substring(0, length));
|
||||
@ -105,7 +105,7 @@ public class ParseMSES1Ext1 extends ParseMSES1 {
|
||||
if(lower.startsWith("last ")) {
|
||||
if(line.length() <= 5) return EnumStatementReturn.PARAMETER_ERROR;
|
||||
try {
|
||||
int length = Integer.parseInt(line.substring(5));
|
||||
int length = Integer.parseInt(substitute(ctx, line.substring(5), true));
|
||||
int max = ctx.readBuffer().length();
|
||||
if(length > max) length = max;
|
||||
ctx.writeBuffer(ctx.readBuffer().substring(max - length, max));
|
||||
|
||||
@ -169,8 +169,8 @@ public class QMAWLoader implements IResourceManagerReloadListener {
|
||||
//FileReader reader = new FileReader(file);
|
||||
InputStreamReader reader = new InputStreamReader(Files.newInputStream(file.toPath()), StandardCharsets.UTF_8);
|
||||
JsonObject obj = (JsonObject) parser.parse(reader);
|
||||
registerJson(name, obj);
|
||||
logFoundManual(name);
|
||||
registerJson(name, obj);
|
||||
} catch(Exception ex) {
|
||||
MainRegistry.logger.info("[QMAW] Error reading manual " + name + ": " + ex);
|
||||
}
|
||||
@ -186,8 +186,7 @@ public class QMAWLoader implements IResourceManagerReloadListener {
|
||||
String name = json.get("name").getAsString();
|
||||
|
||||
if(QMAWLoader.qmaw.containsKey(name)) {
|
||||
MainRegistry.logger.info("[QMAW] Skipping existing entry " + file);
|
||||
return;
|
||||
MainRegistry.logger.info("[QMAW] Overriding existing entry " + file);
|
||||
}
|
||||
|
||||
QuickManualAndWiki qmaw = new QuickManualAndWiki(name);
|
||||
|
||||
@ -4,6 +4,7 @@ import com.hbm.tileentity.network.RTTYSystem;
|
||||
|
||||
import api.hbm.redstoneoverradio.IRORInteractive;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
@ -23,7 +24,7 @@ public abstract class SatelliteBase {
|
||||
public String tx = "";
|
||||
|
||||
public int getID() {
|
||||
return XSatelliteRegistry.satellites.indexOf(this.getClass());
|
||||
return XSatelliteRegistry.idToClass.inverse().get(this.getClass());
|
||||
}
|
||||
|
||||
public abstract String getType();
|
||||
@ -40,12 +41,16 @@ public abstract class SatelliteBase {
|
||||
this.tx = nbt.getString("tx");
|
||||
}
|
||||
|
||||
/** When a satellite is created, i.e. this frequency is occupied for the first time */
|
||||
public void onOrbit(World world, double x, double y, double z) {
|
||||
setTarget((int) Math.floor(x), (int) Math.floor(z));
|
||||
|
||||
RTTYSystem.broadcast(world, CHAN_SATLINK, "Established connection to " + getType() + " at " + targetX + " / " + targetZ);
|
||||
}
|
||||
|
||||
/** For subsequent items sent under the same frequency as an existing satellite */
|
||||
public void onPartDelivered(World world, ItemStack part) { }
|
||||
|
||||
public void onCommand(World world, String... cmd) {
|
||||
onCommandTarget(world, cmd);
|
||||
onCommandImpl(world, cmd);
|
||||
|
||||
@ -0,0 +1,111 @@
|
||||
package com.hbm.saveddata.satellites;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import api.hbm.redstoneoverradio.IRORInteractive;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class SatelliteDetector extends SatelliteBase {
|
||||
|
||||
public List<RadiationBurst> cachedResults = new ArrayList();
|
||||
|
||||
public static final String CMD_SURVEY = "survey";
|
||||
public static final String CMD_COUNT = "count";
|
||||
public static final String CMD_GETTYPE = "gettype";
|
||||
public static final String CMD_GETPOSITION = "getposition";
|
||||
|
||||
public SatelliteDetector() { }
|
||||
|
||||
@Override public String getType() { return "UWB_EMISSION_DETECTOR"; }
|
||||
|
||||
@Override
|
||||
public void onCommandImpl(World world, String... cmd) {
|
||||
if(cmd.length <= 0) return;
|
||||
|
||||
if(cmd[0].equals(CMD_SURVEY)) {
|
||||
cachedResults.clear();
|
||||
|
||||
for(RadiationBurst burst : bursts) {
|
||||
if(world.provider.dimensionId == burst.dimension) cachedResults.add(burst);
|
||||
}
|
||||
}
|
||||
|
||||
if(cmd[0].equals(CMD_COUNT)) {
|
||||
this.tx = "" + cachedResults.size();
|
||||
return;
|
||||
}
|
||||
|
||||
if(cmd[0].equals(CMD_GETTYPE) && cmd.length == 2) {
|
||||
RadiationBurst burst = getBurstFromIndex(cmd[1]);
|
||||
if(burst == null) { this.tx = ""; return; }
|
||||
this.tx = "" + burst.intensity.name();
|
||||
return;
|
||||
}
|
||||
|
||||
if(cmd[0].equals(CMD_GETPOSITION) && cmd.length == 2) {
|
||||
RadiationBurst burst = getBurstFromIndex(cmd[1]);
|
||||
if(burst == null) { this.tx = ""; return; }
|
||||
this.tx = burst.x + ";" + burst.z;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public RadiationBurst getBurstFromIndex(String cmd) {
|
||||
if(cachedResults.size() <= 0) return null;
|
||||
int index = IRORInteractive.parseInt(cmd, 1, cachedResults.size()) - 1;
|
||||
return cachedResults.get(index);
|
||||
}
|
||||
|
||||
public static List<RadiationBurst> bursts = new ArrayList();
|
||||
|
||||
public static final int DURATION_LOW = 15 * 20;
|
||||
public static final int DURATION_MEDIUM = 20 / 2;
|
||||
public static final int DURATION_HIGH = 60 * 20;
|
||||
|
||||
public static final double INACCURACY_LOW = 10_000;
|
||||
public static final double INACCURACY_MEDIUM = 2_500;
|
||||
public static final double INARRCURACY_HIGH = 500;
|
||||
|
||||
public static void reportEvent(World world, int lifetime, BurstIntensity intensity, double x, double z) {
|
||||
bursts.add(new RadiationBurst(world, lifetime, intensity, (int) Math.floor(x), (int) Math.floor(z)));
|
||||
}
|
||||
|
||||
public static void updateSystem(World world) {
|
||||
|
||||
bursts.removeIf(b -> {
|
||||
return world.provider.dimensionId == b.dimension && world.getTotalWorldTime() > b.expiresOn;
|
||||
});
|
||||
}
|
||||
|
||||
public static class RadiationBurst {
|
||||
|
||||
public int dimension;
|
||||
public long expiresOn;
|
||||
public BurstIntensity intensity;
|
||||
public int x;
|
||||
public int z;
|
||||
|
||||
public RadiationBurst(World world, int lifetime, BurstIntensity intensity, int x, int z) {
|
||||
this.dimension = world.provider.dimensionId;
|
||||
this.expiresOn = world.getTotalWorldTime() + lifetime;
|
||||
this.intensity = intensity;
|
||||
this.x = x;
|
||||
this.z = z;
|
||||
|
||||
double inaccuracy =
|
||||
intensity == BurstIntensity.LOW ? INACCURACY_LOW :
|
||||
intensity == BurstIntensity.MEDIUM ? INACCURACY_MEDIUM :
|
||||
INARRCURACY_HIGH;
|
||||
|
||||
this.x += world.rand.nextGaussian() * inaccuracy;
|
||||
this.z += world.rand.nextGaussian() * inaccuracy;
|
||||
}
|
||||
}
|
||||
|
||||
public static enum BurstIntensity {
|
||||
LOW, // mini nukes, detectable for 15 seconds
|
||||
MEDIUM, // particle accelerators and radar, detectable only briefly for half a second
|
||||
HIGH; // full sized nukes, show up for a full minute
|
||||
}
|
||||
}
|
||||
@ -3,6 +3,8 @@ package com.hbm.saveddata.satellites;
|
||||
import com.hbm.itempool.ItemPoolsSatellite;
|
||||
|
||||
public class SatelliteLunarMiner extends SatelliteMiner {
|
||||
|
||||
@Override public String getType() { return "LUNAR_MINER"; }
|
||||
|
||||
static {
|
||||
SatelliteMiner.registerCargo(SatelliteLunarMiner.class, ItemPoolsSatellite.POOL_SAT_LUNAR);
|
||||
|
||||
@ -4,12 +4,17 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionData;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class SatelliteMapper extends SatelliteBase {
|
||||
|
||||
public static final String CMD_TARGET_LOADED = "targetloaded";
|
||||
public static final String CMD_GETSMOG = "getsmog";
|
||||
public static final String CMD_SPOT_PLAYER = "spotplayers";
|
||||
|
||||
public static final int SPOT_PLAYER_MAX_RANGE = 250;
|
||||
@ -28,6 +33,16 @@ public class SatelliteMapper extends SatelliteBase {
|
||||
return;
|
||||
}
|
||||
|
||||
if(cmd[0].equals(CMD_GETSMOG)) {
|
||||
|
||||
PollutionData data = PollutionHandler.getPollutionData(world, this.targetX, 255, this.targetZ);
|
||||
if(data != null) {
|
||||
float soot = data.pollution[PollutionType.SOOT.ordinal()];
|
||||
this.tx = "" + (int) Math.ceil(soot);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if(cmd[0].equals(CMD_SPOT_PLAYER)) {
|
||||
|
||||
List<String> names = new ArrayList();
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -103,7 +103,7 @@ public class SatelliteRadar extends SatelliteBase {
|
||||
|
||||
public Entity getTargetFromIndex(String cmd) {
|
||||
if(filteredRadarResults.size() <= 0) return null;
|
||||
int index = IRORInteractive.parseInt(cmd, 0, filteredRadarResults.size()) - 1;
|
||||
int index = IRORInteractive.parseInt(cmd, 1, filteredRadarResults.size()) - 1;
|
||||
Entity target = filteredRadarResults.get(index);
|
||||
if(target.isDead) return null;
|
||||
return target;
|
||||
|
||||
109
src/main/java/com/hbm/saveddata/satellites/SatelliteRayScan.java
Normal file
109
src/main/java/com/hbm/saveddata/satellites/SatelliteRayScan.java
Normal 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, 1, 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,6 @@
|
||||
package com.hbm.saveddata.satellites;
|
||||
|
||||
import com.google.common.collect.HashBiMap;
|
||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.special.ItemSatellite.EnumSatType;
|
||||
@ -8,35 +9,49 @@ import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class XSatelliteRegistry {
|
||||
|
||||
public static final List<Class<? extends SatelliteBase>> satellites = new ArrayList<>();
|
||||
public static final HashBiMap<Integer, Class<? extends SatelliteBase>> idToClass = HashBiMap.create(20);
|
||||
public static final HashMap<ComparableStack, Class<? extends SatelliteBase>> itemToClass = new HashMap<>();
|
||||
|
||||
public static void register() {
|
||||
|
||||
registerSatellite(SatelliteMapper.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.SPY));
|
||||
registerSatellite(SatelliteScanner.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.SCANNER));
|
||||
registerSatellite(SatelliteRadar.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.RADAR));
|
||||
registerSatellite(SatelliteDeathRay.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.DEATH_RAY));
|
||||
registerSatellite(SatelliteResonator.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.XENIUM_RESONATOR));
|
||||
registerSatellite(SatelliteRelay.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.XENIUM_RESONATOR));
|
||||
registerSatellite(SatelliteMiner.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.MINER_ASTRO));
|
||||
registerSatellite(SatelliteLunarMiner.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.MINER_LUNAR));
|
||||
registerSatellite(SatelliteHorizons.class, ModItems.sat_gerald);
|
||||
registerSatellite(SatellitePrecisionLaser.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.PRECISION_LASER));
|
||||
|
||||
// ID mapping
|
||||
idToClass.put(0, SatelliteMapper.class);
|
||||
idToClass.put(1, SatelliteScanner.class);
|
||||
idToClass.put(2, SatelliteRadar.class);
|
||||
idToClass.put(3, SatelliteDeathRay.class);
|
||||
idToClass.put(4, SatelliteResonator.class);
|
||||
idToClass.put(5, SatelliteRelay.class);
|
||||
idToClass.put(6, SatelliteMiner.class);
|
||||
idToClass.put(7, SatelliteLunarMiner.class);
|
||||
idToClass.put(8, SatelliteHorizons.class);
|
||||
idToClass.put(9, SatellitePrecisionLaser.class);
|
||||
idToClass.put(10, SatelliteDetector.class);
|
||||
idToClass.put(11, SatelliteRayScan.class);
|
||||
|
||||
// item to sat type mapping
|
||||
registerSatellite(SatelliteMapper.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.SPY));
|
||||
registerSatellite(SatelliteScanner.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.SCANNER));
|
||||
registerSatellite(SatelliteRadar.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.RADAR));
|
||||
registerSatellite(SatelliteDeathRay.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.DEATH_RAY));
|
||||
registerSatellite(SatelliteResonator.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.XENIUM_RESONATOR));
|
||||
registerSatellite(SatelliteRelay.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.RELAY));
|
||||
registerSatellite(SatelliteMiner.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.MINER_ASTRO));
|
||||
registerSatellite(SatelliteLunarMiner.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.MINER_LUNAR));
|
||||
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));
|
||||
|
||||
// and all the legacy crap
|
||||
registerSatellite(SatelliteMapper.class, ModItems.sat_mapper);
|
||||
registerSatellite(SatelliteScanner.class, ModItems.sat_scanner);
|
||||
registerSatellite(SatelliteRadar.class, ModItems.sat_radar);
|
||||
registerSatellite(SatelliteDeathRay.class, ModItems.sat_laser);
|
||||
registerSatellite(SatelliteResonator.class, ModItems.sat_resonator);
|
||||
registerSatellite(SatelliteRelay.class, ModItems.sat_foeq);
|
||||
registerSatellite(SatelliteMiner.class, ModItems.sat_miner);
|
||||
registerSatellite(SatelliteLunarMiner.class, ModItems.sat_lunar_miner);
|
||||
}
|
||||
@ -49,14 +64,12 @@ public class XSatelliteRegistry {
|
||||
@Deprecated
|
||||
public static void registerSatellite(Class<? extends SatelliteBase> sat, Item item) {
|
||||
if(!itemToClass.containsKey(item) && !itemToClass.containsValue(sat)) {
|
||||
satellites.add(sat);
|
||||
itemToClass.put(new ComparableStack(item), sat);
|
||||
}
|
||||
}
|
||||
|
||||
public static void registerSatellite(Class<? extends SatelliteBase> sat, ComparableStack item) {
|
||||
if(!itemToClass.containsKey(item) && !itemToClass.containsValue(sat)) {
|
||||
satellites.add(sat);
|
||||
itemToClass.put(item, sat);
|
||||
}
|
||||
}
|
||||
@ -64,19 +77,27 @@ public class XSatelliteRegistry {
|
||||
public static void orbit(World world, ItemStack stack, int freq, double x, double y, double z) {
|
||||
if(world.isRemote) return;
|
||||
|
||||
SatelliteBase sat = createFromItem(stack);
|
||||
SatelliteSavedData data = SatelliteSavedData.getData(world);
|
||||
SatelliteBase existing = data.sats.get(freq);
|
||||
|
||||
if(sat != null) {
|
||||
SatelliteSavedData data = SatelliteSavedData.getData(world);
|
||||
data.sats.put(freq, sat);
|
||||
sat.onOrbit(world, x, y, z);
|
||||
data.markDirty();
|
||||
if(existing != null) {
|
||||
existing.onPartDelivered(world, stack);
|
||||
|
||||
} else {
|
||||
|
||||
SatelliteBase sat = createFromItem(stack);
|
||||
|
||||
if(sat != null) {
|
||||
data.sats.put(freq, sat);
|
||||
sat.onOrbit(world, x, y, z);
|
||||
data.markDirty();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static SatelliteBase createFromId(int i) {
|
||||
try {
|
||||
return satellites.get(i).newInstance();
|
||||
return idToClass.get(i).newInstance();
|
||||
} catch(Exception e) { }
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -49,6 +49,11 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase {
|
||||
public void updateEntity() {
|
||||
if(this.getBlockMetadata() < 12) return;
|
||||
|
||||
if(this.getDoorType() == null) {
|
||||
this.invalidate();
|
||||
return;
|
||||
}
|
||||
|
||||
if(getDoorType().onDoorUpdate() != null) {
|
||||
getDoorType().onDoorUpdate().accept(this);
|
||||
}
|
||||
@ -191,7 +196,7 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase {
|
||||
public DoorDecl getDoorType() {
|
||||
|
||||
if(this.doorType == null && this.getBlockType() instanceof BlockDoorGeneric)
|
||||
this.doorType = ((BlockDoorGeneric)this.getBlockType()).type;
|
||||
this.doorType = ((BlockDoorGeneric) this.getBlockType()).type;
|
||||
|
||||
return this.doorType;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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;
|
||||
@ -111,6 +113,10 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider
|
||||
slots[5] = new ItemStack(ModItems.icf_pellet_depleted);
|
||||
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());
|
||||
|
||||
@ -20,6 +20,10 @@ import com.hbm.lib.Library;
|
||||
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;
|
||||
import com.hbm.tileentity.IRadarCommandReceiver;
|
||||
@ -359,6 +363,11 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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() {
|
||||
|
||||
@ -182,7 +182,7 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent
|
||||
|
||||
if(rocket.getDataWatcher().getWatchableObjectInt(16) == 1 && rocket.timer == 50) {
|
||||
SatelliteBase sat = data.getSatFromFreq(ISatChip.getFreqS(slots[15]));
|
||||
if(sat != null) unloadCargo((SatelliteMiner) sat);
|
||||
if(sat instanceof SatelliteMiner) unloadCargo((SatelliteMiner) sat);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
@ -83,7 +85,7 @@ public class TileEntityMachineSatLink extends TileEntityTickingBase implements I
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
nbt.setInteger("power", freq);
|
||||
nbt.setInteger("freq", freq);
|
||||
}
|
||||
|
||||
AxisAlignedBB bb = null;
|
||||
@ -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();
|
||||
}
|
||||
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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()) {
|
||||
|
||||
@ -10,6 +10,10 @@ import com.hbm.inventory.recipes.ParticleAcceleratorRecipes.ParticleAcceleratorR
|
||||
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;
|
||||
@ -160,6 +164,8 @@ public class TileEntityPADetector extends TileEntityCooledBase implements IGUIPr
|
||||
for(EntityPlayer player : players) player.triggerAchievement(MainRegistry.achOmega12);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -262,7 +262,7 @@ public class TileEntityPileLoader extends TileEntityPileDeviceBase implements IS
|
||||
EnumPileRod rod = EnumUtil.grabEnumSafely(EnumPileRod.class, this.channelStack.getItemDamage());
|
||||
return "" + (int) Math.round(rod.life);
|
||||
}
|
||||
if(name.equals(PREFIX_VALUE + "meta")) {
|
||||
if(name.equals(PREFIX_VALUE + "temp")) {
|
||||
return "" + (int) Math.round(this.channelTemp);
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
@ -117,6 +119,9 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
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;
|
||||
|
||||
28
src/main/java/com/hbm/util/fauxpointtwelve/DimPos.java
Normal file
28
src/main/java/com/hbm/util/fauxpointtwelve/DimPos.java
Normal 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;
|
||||
}
|
||||
}
|
||||
@ -3297,6 +3297,17 @@ item.sat_miner.name=Asteroiden-Förderschiff (LEGACY)
|
||||
item.sat_radar.name=Radar-Überwachungssatellit (LEGACY)
|
||||
item.sat_resonator.name=Xenium-Resonator-Satellit (LEGACY)
|
||||
item.sat_scanner.name=Satellit mit Tiefenscanning-Modul (LEGACY)
|
||||
item.satellite.death_ray.name=Orbitaler Todesstrahl
|
||||
item.satellite.detector.name=Weitband-Emissionsdetektor-Satellit
|
||||
item.satellite.miner_astro.name=Asteroiden-Förderschiff
|
||||
item.satellite.miner_lunar.name=Mond-Förderschiff
|
||||
item.satellite.precision_laser.name=Orbitaler Präzisionslaser
|
||||
item.satellite.radar.name=Radar-Überwachungssatellit
|
||||
item.satellite.ray_scan.name=Schmalband-Emissionsscan-Satellit
|
||||
item.satellite.relay.name=Relais-Satellit
|
||||
item.satellite.scanner.name=Tiefenscan-Satellit
|
||||
item.satellite.spy.name=Spionagesatellit
|
||||
item.satellite.xenium_resonator.name=Xenium-Resonator-Satellit
|
||||
item.sawblade.name=Sägeblatt
|
||||
item.schnitzel_vegan.name=Veganes Schnitzel
|
||||
item.schrabidium_axe.name=Schrabidiumaxt
|
||||
@ -4523,9 +4534,8 @@ tile.machine_pyrooven.name=Pyrolyseofen
|
||||
tile.machine_radar.name=Radar
|
||||
tile.machine_radar_large.name=Großes Radar
|
||||
tile.machine_radgen.name=Strahlenbetriebener Generator
|
||||
tile.machine_reactor.name=Brutreaktor
|
||||
tile.machine_reactor_on.name=Brutreaktor
|
||||
tile.machine_reactor_small.name=Atomreaktor
|
||||
tile.machine_reactor.name=Brutreaktor (LEGACY)
|
||||
tile.machine_reactor_small.name=Atomreaktor (LEGACY)
|
||||
tile.machine_refinery.name=Ölraffinerie
|
||||
tile.machine_reix_mainframe.name=Rei-X Hauptrechner (WIP)
|
||||
tile.machine_rotary_furnace.name=Rotationshochofen
|
||||
|
||||
@ -4410,10 +4410,12 @@ item.sat_radar.name=Radar Survey Satellite (LEGACY)
|
||||
item.sat_resonator.name=Xenium Resonator Satellite (LEGACY)
|
||||
item.sat_scanner.name=Satellite with Depth-Resource Scanning Module (LEGACY)
|
||||
item.satellite.death_ray.name=Orbital Death Ray
|
||||
item.satellite.detector.name=Wideband Radio Emission Detector Satellite
|
||||
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
|
||||
@ -5819,8 +5821,8 @@ tile.machine_radar.name=Radar
|
||||
tile.machine_radar_large.name=Large Radar
|
||||
tile.machine_radgen.name=Radiation-Powered Engine
|
||||
tile.machine_radiolysis.name=Radioisotope Thermoelectric Generator and Radiolysis Chamber
|
||||
tile.machine_reactor.name=Breeding Reactor
|
||||
tile.machine_reactor_small.name=Research Reactor
|
||||
tile.machine_reactor.name=Breeding Reactor (LEGACY)
|
||||
tile.machine_reactor_small.name=Research Reactor (LEGACY)
|
||||
tile.machine_refinery.name=Oil Refinery
|
||||
tile.machine_reix_mainframe.name=Rei-X Mainframe (WIP)
|
||||
tile.machine_rotary_furnace.name=Rotary Furnace
|
||||
|
||||
@ -1712,13 +1712,6 @@ item.battery_potatos.name=马铃薯OS
|
||||
item.battery_red_cell.name=红石电池组(遗留)
|
||||
item.battery_red_cell_24.name=二十四联红石电池组(遗留)
|
||||
item.battery_red_cell_6.name=六联红石电池组(遗留)
|
||||
item.battery_sc_americium.name=自充电 镅-241电池(遗留)
|
||||
item.battery_sc_gold.name=自充电 金-198电池(遗留)
|
||||
item.battery_sc_lead.name=自充电 铅-209电池(遗留)
|
||||
item.battery_sc_plutonium.name=自充电 钚-238电池(遗留)
|
||||
item.battery_sc_polonium.name=自充电 钋-210电池(遗留)
|
||||
item.battery_sc_technetium.name=自充电 锝-99电池(遗留)
|
||||
item.battery_sc_uranium.name=自充电 铀-238电池(遗留)
|
||||
item.battery_schrabidium.name=Sa326电池(遗留)
|
||||
item.battery_schrabidium_cell.name=Sa326电池组(遗留)
|
||||
item.battery_schrabidium_cell_2.name=双联Sa326电池组(遗留)
|
||||
@ -2318,7 +2311,7 @@ item.debris_fuel.name=RBMK石墨式反应堆燃料块
|
||||
item.debris_graphite.name=热石墨块
|
||||
item.debris_metal.name=断裂金属棒
|
||||
item.debris_shrapnel.name=走道碎片
|
||||
item.definitelyfood.name=军粮
|
||||
item.definitelyfood.name=完全不脏牌军粮
|
||||
item.defuser.name=高科技拆弹装置
|
||||
item.defuser_gold.name=黄金剪线钳
|
||||
item.demon_core_closed.name=封闭的恶魔核心
|
||||
@ -3334,20 +3327,20 @@ item.pellet_rtg_weak.name=贫铀放射性同位素燃料靶丸
|
||||
item.pellet_rtg_weak.desc=更便宜更弱的靶丸,含有更多的铀238!
|
||||
item.pellet_schrabidium.name=纯Sa326Watz靶丸
|
||||
item.photo_panel.name=光伏板
|
||||
item.pile_rod_boron.name=芝加哥反应堆 控制棒
|
||||
item.pile_rod_boron.desc=§9[中子吸收器]$§E单击以切换
|
||||
item.pile_rod_detector.name=芝加哥反应堆控制/探测棒
|
||||
item.pile_rod_detector.desc=§9[中子探测器/吸收器]$§e使用拆弹器增加/减少中子通量限值$§e使用螺丝刀检查中子通量
|
||||
item.pile_rod_lithium.name=芝加哥反应堆锂燃料棒
|
||||
item.pile_rod_lithium.desc=§a[可增殖燃料棒]$§e使用手钻检查棒芯
|
||||
item.pile_rod_plutonium.name=芝加哥反应堆 钚棒
|
||||
item.pile_rod_plutonium.desc=§d[中子源棒]
|
||||
item.pile_rod_pu239.name=芝加哥反应堆增殖铀棒
|
||||
item.pile_rod_pu239.desc=§a[可反应核燃料]$§e富含钚-239
|
||||
item.pile_rod_source.name=芝加哥反应堆 镭226-铍中子源
|
||||
item.pile_rod_source.desc=§d[中子源棒]
|
||||
item.pile_rod_uranium.name=芝加哥反应堆 铀棒
|
||||
item.pile_rod_uranium.desc=§a[可反应核燃料]$§e使用手钻取堆芯样本
|
||||
item.pile_rod_boron.name=芝加哥反应堆 控制棒(遗留)
|
||||
item.pile_rod_boron.desc=§9[中子吸收器]$§E单击以切换(遗留)
|
||||
item.pile_rod_detector.name=芝加哥反应堆控制/探测棒(遗留)
|
||||
item.pile_rod_detector.desc=§9[中子探测器/吸收器]$§e使用拆弹器增加/减少中子通量限值$§e使用螺丝刀检查中子通量(遗留)
|
||||
item.pile_rod_lithium.name=芝加哥反应堆锂燃料棒(遗留)
|
||||
item.pile_rod_lithium.desc=§a[可增殖燃料棒]$§e使用手钻检查棒芯(遗留)
|
||||
item.pile_rod_plutonium.name=芝加哥反应堆 钚棒(遗留)
|
||||
item.pile_rod_plutonium.desc=§d[中子源棒](遗留)
|
||||
item.pile_rod_pu239.name=芝加哥反应堆增殖铀棒(遗留)
|
||||
item.pile_rod_pu239.desc=§a[可反应核燃料]$§e富含钚-239(遗留)
|
||||
item.pile_rod_source.name=芝加哥反应堆 镭226-铍中子源(遗留)
|
||||
item.pile_rod_source.desc=§d[中子源棒](遗留)
|
||||
item.pile_rod_uranium.name=芝加哥反应堆 铀棒(遗留)
|
||||
item.pile_rod_uranium.desc=§a[可反应核燃料]$§e使用手钻取堆芯样本(遗留)
|
||||
item.pill_iodine.name=碘丸
|
||||
item.pill_iodine.desc=消除负面buff
|
||||
item.pill_herbal.name=草药膏
|
||||
@ -3882,26 +3875,20 @@ item.rune_isa.name=冷却催化剂基质
|
||||
item.rune_jera.name=增殖催化剂基质
|
||||
item.rune_thurisaz.name=添加剂催化剂基质
|
||||
item.safety_fuse.name=安全保险丝
|
||||
item.sat_base.name=卫星基座
|
||||
item.sat_chip.name=卫星ID芯片
|
||||
item.sat_coord.name=卫星指示器
|
||||
item.sat_designator.name=卫星激光指示器
|
||||
item.sat_relay.name=卫星雷达中继器
|
||||
item.sat_foeq.name=实验型核能PEAF-Mk.I FOEQ Duna探测器
|
||||
item.sat_relay.name=卫星雷达中继器(遗留)
|
||||
item.sat_foeq.name=实验型核能PEAF-Mk.I FOEQ Duna探测器(遗留)
|
||||
item.sat_gerald.name=Gerald建筑机器人
|
||||
item.sat_head_laser.name=死光发射器
|
||||
item.sat_head_mapper.name=高增益光学摄像头
|
||||
item.sat_head_radar.name=雷达天线
|
||||
item.sat_head_resonator.name=Xenium共振器
|
||||
item.sat_head_scanner.name=M700测量扫描仪
|
||||
item.sat_interface.name=卫星操作接口
|
||||
item.sat_laser.name=轨道死光炮
|
||||
item.sat_lunar_miner.name=月球采矿飞船
|
||||
item.sat_mapper.name=地表测绘卫星
|
||||
item.sat_miner.name=小行星采矿飞船
|
||||
item.sat_radar.name=雷达探测卫星
|
||||
item.sat_resonator.name=X晶体共振卫星
|
||||
item.sat_scanner.name=绘测和资源探测卫星
|
||||
item.sat_laser.name=轨道死光炮(遗留)
|
||||
item.sat_lunar_miner.name=月球采矿飞船(遗留)
|
||||
item.sat_mapper.name=地表测绘卫星(遗留)
|
||||
item.sat_miner.name=小行星采矿飞船(遗留)
|
||||
item.sat_radar.name=雷达探测卫星(遗留)
|
||||
item.sat_resonator.name=X晶体共振卫星(遗留)
|
||||
item.sat_scanner.name=绘测和资源探测卫星(遗留)
|
||||
item.sawblade.name=锯片
|
||||
item.schnitzel_vegan.name=“素”肉排
|
||||
item.schrabidium_axe.name=Sa326斧
|
||||
@ -4448,14 +4435,14 @@ tile.block_fluorite.name=氟石块
|
||||
tile.block_foam.name=泡沫
|
||||
tile.block_insulator.name=绝缘卷
|
||||
tile.block_graphite.name=石墨块
|
||||
tile.block_graphite_detector.name=反应堆中子探测棒
|
||||
tile.block_graphite_drilled.name=钻孔石墨
|
||||
tile.block_graphite_fuel.name=反应堆燃料
|
||||
tile.block_graphite_lithium.name=反应堆锂燃料
|
||||
tile.block_graphite_plutonium.name=反应堆燃料(增殖)
|
||||
tile.block_graphite_rod.name=反应堆控制棒
|
||||
tile.block_graphite_source.name=反应堆中子源
|
||||
tile.block_graphite_tritium.name=反应堆锂燃料(增殖)
|
||||
tile.block_graphite_detector.name=反应堆中子探测棒(遗留)
|
||||
tile.block_graphite_drilled.name=钻孔石墨(遗留)
|
||||
tile.block_graphite_fuel.name=反应堆燃料(遗留)
|
||||
tile.block_graphite_lithium.name=反应堆锂燃料(遗留)
|
||||
tile.block_graphite_plutonium.name=反应堆燃料(增殖)(遗留)
|
||||
tile.block_graphite_rod.name=反应堆控制棒(遗留)
|
||||
tile.block_graphite_source.name=反应堆中子源(遗留)
|
||||
tile.block_graphite_tritium.name=反应堆锂燃料(增殖)(遗留)
|
||||
tile.block_lead.name=铅块
|
||||
tile.block_lanthanium.name=镧块
|
||||
tile.block_lithium.name=锂块
|
||||
@ -5128,7 +5115,7 @@ tile.machine_transformer.name=10k-20Hz变频器
|
||||
tile.machine_transformer_20.name=10k-1Hz变频器
|
||||
tile.machine_transformer_dnt.name=DNT-20Hz变频器
|
||||
tile.machine_transformer_dnt_20.name=DNT-1Hz变频器
|
||||
tile.machine_turbine.name=汽轮机
|
||||
tile.machine_turbine.name=汽轮机(遗留)
|
||||
tile.machine_turbine.desc=效率: 85%%
|
||||
tile.machine_turbinegas.name=联合循环燃气轮机
|
||||
tile.machine_turbofan.name=涡扇发动机
|
||||
@ -5513,7 +5500,7 @@ tile.turret_fritz.name=重型火焰喷射器炮塔“弗里茨”
|
||||
tile.turret_heavy.name=重型机枪炮塔
|
||||
tile.turret_himars.name=火箭炮塔“亨利”
|
||||
tile.turret_howard.name=双联守门员近防系统“霍华德”
|
||||
tile.turret_howard_damaged.name=CIWS双联守门员近防系统 “玛土撒拉”
|
||||
tile.turret_howard_damaged.name=CIWS双联守门员近防系统 “玛士撒拉”
|
||||
tile.turret_jeremy.name=重炮炮塔“杰里米”
|
||||
tile.turret_light.name=轻型机枪炮塔
|
||||
tile.turret_maxwell.name=高能微波炮塔 “麦克斯韦”
|
||||
@ -6026,17 +6013,6 @@ item.med_ipecac.desс=一种能强行让你的胃$排空所有内容物的苦味
|
||||
item.med_ptsd.desc=这甚至不是PTSD治疗药物,$其实就是换了个罐子的吐根酊!
|
||||
item.med_schizophrenia.desc=驱散所有的声音,就一小会……$……$还是别吃了。
|
||||
item.meteorite_sword.desc=用陨星锻造而成$比大多数地球的造物更加锋利
|
||||
item.meteorite_sword.seared.desc=剑刃经过烈火的淬炼$变得更加强大
|
||||
item.meteorite_sword.reforged.desc=此剑经过重锻$以修正过往的缺陷
|
||||
item.meteorite_sword.hardened.desc=极端压力加在此剑之上$以进一步硬化其刃
|
||||
item.meteorite_sword.alloyed.desc=钴填充其裂缝$以强化此刃
|
||||
item.meteorite_sword.machined.desc=借助先进的机械$剑刃得到进一步的强化
|
||||
item.meteorite_sword.treated.desc=经过化学品的洗礼$此剑更加强大
|
||||
item.meteorite_sword.etched.desc=经过酸液的清洗$此剑趋向完美
|
||||
item.meteorite_sword.bred.desc=巨大的热量和辐射$将其刃压缩
|
||||
item.meteorite_sword.irradiated.desc=原子的能量$赐予此剑力量
|
||||
item.meteorite_sword.fused.desc=此剑已与$恒星之力相遇
|
||||
item.meteorite_sword.baleful.desc=此剑已与通常材料$远无法承受的温度相会
|
||||
item.missile.desc.warhead=弹头
|
||||
item.missile.desc.strength=强度
|
||||
item.missile.desc.fuelType=燃料种类
|
||||
@ -6377,16 +6353,143 @@ tile.machine_thresher.desc=收割并重新种植作物,$可接受:$-木油$-
|
||||
tile.machine_thresher.suspended=暂停
|
||||
tile.nospawn=生物不会在这个方块上生成!
|
||||
tile.radio_autocal.name=AUTOCAL自动计算机
|
||||
tile.vending_machine.name=自动售货机
|
||||
item.coin_token.name=自动售货机代币
|
||||
tile.vending_machine.name= 自动售货机
|
||||
autoswitch.pilerod=芝加哥反应堆燃料棒
|
||||
container.pneumoStorageAccess=PSN访问终端
|
||||
container.pneumoStorageClutter=PSN杂项存储
|
||||
container.pneumoStorageClutter=PSN杂项储存
|
||||
container.pneumoStorageExporter=PSN导出器
|
||||
container.pneumoStorageImporter=PSN导入器
|
||||
container.pneumoStorageMono=PSN大宗存储
|
||||
tile.pneumatic_storage_access.name=气动存储网络 - 访问终端
|
||||
tile.pneumatic_storage_clutter.name=气动存储网络 - 杂项储存
|
||||
tile.pneumatic_storage_exporter.name=气动存储网络 - 导出器
|
||||
tile.pneumatic_storage_importer.name=气动存储网络 - 导入器
|
||||
tile.pneumatic_storage_mono.name=气动存储网络 - 大宗储存
|
||||
container.pneumoStorageMono=PSN大宗储存
|
||||
desc.gui.keyforge.key=第一个槽位将复制钥匙或者锁的弹子配置$并将其复制到第二个槽位。
|
||||
desc.gui.keyforge.random=第三个槽位则会随机化锁或者钥匙的弹子配置。
|
||||
desc.gui.satdock.desc=需要采矿飞船的卫星芯片。$货运飞船将会定期降落以运送货物。
|
||||
desc.gui.satlinker.chip=第一个槽位将复制卫星或者芯片的频率配置$并将其复制到第二个槽位。
|
||||
desc.gui.satlinker.random=第三个槽位则会随机化锁卫星或者芯片的频率配置。
|
||||
desc.gui.soyuz.cargo=货运模式
|
||||
desc.gui.soyuz.desc=仅用于货运模式的标识符$卫星模式的有效载荷
|
||||
desc.gui.soyuz.satellite=卫星模式
|
||||
item.battery_sc.desc=放射性同位素电池不适用于电池座$输出功率不稳定且会产生危险的电弧!
|
||||
item.coal_eternal.name=永恒之煤
|
||||
item.meteorite_sword_seared.desc=剑刃经过烈火的淬炼$变得更加强大
|
||||
item.meteorite_sword_reforged.desc=此剑经过重锻$以修正过往的缺陷
|
||||
item.meteorite_sword_hardened.desc=极端压力加在此剑之上$以进一步硬化其刃
|
||||
item.meteorite_sword_alloyed.desc=钴填充其裂缝$以强化此刃
|
||||
item.meteorite_sword_machined.desc=借助先进的机械$剑刃得到进一步的强化
|
||||
item.meteorite_sword_treated.desc=经过化学品的洗礼$此剑更加强大
|
||||
item.meteorite_sword_etched.desc=经过酸液的清洗$此剑趋向完美
|
||||
item.meteorite_sword_bred.desc=巨大的热量和辐射$将其刃压缩
|
||||
item.meteorite_sword_irradiated.desc=原子的能量$赐予此剑力量
|
||||
item.meteorite_sword_fused.desc=此剑已与$恒星之力相遇
|
||||
item.meteorite_sword_baleful.desc=此剑已与通常材料$远无法承受的温度相会
|
||||
item.pile_rod.nu.name=芝加哥反应堆天然铀棒
|
||||
item.pile_rod.nu.desc=生产钚-239的基本增殖靶件。
|
||||
item.pile_rod.po210be.name=芝加哥反应堆钋210-铍中子源
|
||||
item.pile_rod.po210be.desc=用于启动芝加哥反应堆的先进钋-铍中子源。
|
||||
item.pile_rod.pu239.name=芝加哥反应堆钚-239棒
|
||||
item.pile_rod.pu239.desc=由天然铀增殖而来的钚,可以继续增殖成反应堆级钚。
|
||||
item.pile_rod.ra226be.name=芝加哥反应堆 镭226-铍中子源
|
||||
item.pile_rod.ra226be.desc=用于启动芝加哥反应堆最基础的镭-铍中子源。
|
||||
item.pile_rod.rgp.name=芝加哥反应堆 反应堆级钚棒
|
||||
item.pile_rod.rgp.desc=反应堆级钚棒,主要为钚-239,其中含有钚-240杂质。
|
||||
item.pile_rod.waste.name=芝加哥反应堆核废料棒
|
||||
item.pile_rod.waste.desc=燃料棒在芝加哥反应堆内停留时间过长从而产生的强放射性最终产物。
|
||||
item.pile_rod.zr.name=芝加哥反应堆锆棒
|
||||
item.pile_rod.zr.desc=对中子呈现出透明的惰性锆棒,是将其他燃料棒安全推出反应堆的理想选择。
|
||||
item.satellite.death_ray.name=轨道死光炮
|
||||
item.satellite.detector.name=宽带无线电探测卫星
|
||||
item.satellite.miner_astro.name=小行星采矿飞船
|
||||
item.satellite.miner_lunar.name=月球采矿飞船
|
||||
item.satellite.precision_laser.name=轨道精确激光炮
|
||||
item.satellite.radar.name=雷达探测卫星
|
||||
item.satellite.ray_scan.name=窄带发射扫描卫星
|
||||
item.satellite.relay.name=中继卫星
|
||||
item.satellite.scanner.name=深度扫描卫星
|
||||
item.satellite.spy.name=间谍卫星
|
||||
item.satellite.xenium_resonator.name=X晶体共振卫星
|
||||
tile.brick_forgotten.name=块
|
||||
tile.cargo_door.name=货运大门
|
||||
tile.platemetal.base.name=金属板装饰块
|
||||
tile.platemetal.black.name=黑色金属板装饰块
|
||||
tile.platemetal.white.name=白色金属板装饰块
|
||||
tile.platemetal.red.name=红色金属板装饰块
|
||||
tile.platemetal.green.name=绿色金属板装饰块
|
||||
tile.platemetal.light_gray.name=淡灰色金属板装饰块
|
||||
tile.platemetal.blue.name=蓝色金属板装饰块
|
||||
tile.platemetal.purple.name=紫色金属板装饰块
|
||||
tile.platemetal.cyan.name=青色金属板装饰块
|
||||
tile.platemetal.pink.name=粉色金属板装饰块
|
||||
tile.platemetal.lime.name=黄绿色金属板装饰块
|
||||
tile.platemetal.yellow.name=黄色金属板装饰块
|
||||
tile.platemetal.light_blue.name=淡蓝色金属板装饰块
|
||||
tile.platemetal.magenta.name=品红色金属板装饰块
|
||||
tile.platemetal.orange.name=橙色金属板装饰块
|
||||
tile.machine_satlink.name=卫星地面站
|
||||
tile.pile_block.name=芝加哥反应堆
|
||||
tile.pile_brick.name=芝加哥反应堆石墨砖
|
||||
tile.pile_device.control.name=芝加哥反应堆控制棒
|
||||
tile.pile_device.loader.name=芝加哥反应堆燃料导入器
|
||||
tile.pile_device.vent.name=芝加哥反应堆通风口
|
||||
tile.pneumatic_storage_access.name=气动储存网络 - 访问终端
|
||||
tile.pneumatic_storage_clutter.name=气动储存网络 - 杂项储存
|
||||
tile.pneumatic_storage_exporter.name=气动储存网络 - 导出器
|
||||
tile.pneumatic_storage_importer.name=气动储存网络 - 导入器
|
||||
tile.pneumatic_storage_mono.name=气动储存网络 - 大宗储存
|
||||
tile.red_pylon_steel.name=钢制电线杆
|
||||
tile.stalactite.ice.name=冰钟乳石
|
||||
tile.stalactite.snow.name=雪钟乳石
|
||||
tile.stalactite.glyphid1.name=异虫钟乳石
|
||||
tile.stalactite.glyphid2.name=臃肿的异虫钟乳石
|
||||
tile.stalactite.glyphid3.name=腐烂的异虫钟乳石
|
||||
tile.stalagmite.ice.name=冰石笋
|
||||
tile.stalagmite.snow.name=雪石笋
|
||||
tile.stalagmite.glyphid1.name=异虫石笋
|
||||
tile.stalagmite.glyphid2.name=臃肿的异虫石笋
|
||||
tile.stalagmite.glyphid3.name=腐烂的异虫石笋
|
||||
hbmfluid.trait.antimatter=反物质
|
||||
hbmfluid.trait.boilable=可被加热沸腾
|
||||
hbmfluid.trait.burned=当燃烧时
|
||||
hbmfluid.trait.combustible=作为燃料时
|
||||
hbmfluid.trait.coolable=可冷却的
|
||||
hbmfluid.trait.coolantICF=ICF反应堆冷却剂
|
||||
hbmfluid.trait.coolantPA=粒子加速器冷却剂
|
||||
hbmfluid.trait.coolantPWR=PWR冷却剂
|
||||
hbmfluid.trait.corrosive=腐蚀性
|
||||
hbmfluid.trait.corrosiveStrong=强腐蚀性
|
||||
hbmfluid.trait.delicious=美味
|
||||
hbmfluid.trait.efficiency=效率
|
||||
hbmfluid.trait.flammable=易燃
|
||||
hbmfluid.trait.fuel.aviation=航空级
|
||||
hbmfluid.trait.fuel.gaseous=气体
|
||||
hbmfluid.trait.fuel.high=高
|
||||
hbmfluid.trait.fuel.low=低
|
||||
hbmfluid.trait.fuel.medium=中等
|
||||
hbmfluid.trait.fuelGrade=燃料等级
|
||||
hbmfluid.trait.gaseous=气态
|
||||
hbmfluid.trait.gaseousRoom=室温下为气体
|
||||
hbmfluid.trait.glyphidPheromones=异虫信息素
|
||||
hbmfluid.trait.hazmat=需要防护服
|
||||
hbmfluid.trait.heatable=可被加热
|
||||
hbmfluid.trait.leadContainer=需要危险品罐作为容器
|
||||
hbmfluid.trait.liquid=液态
|
||||
hbmfluid.trait.modifiedPheromones=增强信息素
|
||||
hbmfluid.trait.perBucket=每桶
|
||||
hbmfluid.trait.perDamage=每秒伤害
|
||||
hbmfluid.trait.perMB=每mB
|
||||
hbmfluid.trait.perTU=每TU
|
||||
hbmfluid.trait.polluting=污染物
|
||||
hbmfluid.trait.provides=提供
|
||||
hbmfluid.trait.pwrFluxCore=堆芯通量
|
||||
hbmfluid.trait.pwrFluxMultiplier=PWR通量倍增
|
||||
hbmfluid.trait.radioactive=放射性
|
||||
hbmfluid.trait.spilled=泄漏时
|
||||
hbmfluid.trait.steam=汽轮机蒸汽
|
||||
hbmfluid.trait.thermalCapacity=热容量
|
||||
hbmfluid.trait.toxin=毒性
|
||||
hbmfluid.trait.unsiphonable=无法使用虹吸管提取
|
||||
hbmfluid.trait.viscous=浆体
|
||||
pollution.soot=烟尘
|
||||
pollution.poison=有毒物质
|
||||
pollution.heavymetal=重金属
|
||||
pollution.trait.soot=烟尘
|
||||
pollution.trait.poison=有毒物质
|
||||
pollution.trait.heavymetal=重金属
|
||||
|
||||
@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Aromatic Hydrocarbons",
|
||||
"icon": ["hbm:item.fluid_icon", 1, 67],
|
||||
"trigger": [["hbm:item.fluid_icon", 1, 67]],
|
||||
"title": {
|
||||
"en_US": "Aromatic Hydrocarbons"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "Obtained after [[refining|Oil Refinery]] [[heated|Boiler]] cracked crude oil. Aromatic hydrocarbons are primarily used in the production of [[bakelite|Bakelite]] and [[solvent|Solvent]].<br><br>See also:<br>[[Basic Oil Processing]]<br>[[Advanced Oil Processing]]<br>[[Vacuum Oil Processing]]"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Cracked Light Oil",
|
||||
"icon": ["hbm:item.fluid_icon", 1, 65],
|
||||
"trigger": [["hbm:item.fluid_icon", 1, 65]],
|
||||
"title": {
|
||||
"en_US": "Cracked Light Oil"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "Obtained after [[refining|Oil Refinery]] [[heated|Boiler]] cracked crude oil. Cracked light oil has a variety of uses, it may be [[reformed|Catalytic Reformer]] or [[bred|Fusion Reactor Breeding Chamber]] to obtain [[reformate gas|Reformate Gas]] and other byproducts. It may also be used as an alternate to [[light oil|Light Oil]] in the production of [[desh|Desh]]. It can also be [[fractioned|Fractioning Tower]].<br><br>See also:<br>[[Basic Oil Processing]]<br>[[Advanced Oil Processing]]<br>[[Vacuum Oil Processing]]"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Unsaturated Hydrocarbons",
|
||||
"icon": ["hbm:item.fluid_icon", 1, 68],
|
||||
"trigger": [["hbm:item.fluid_icon", 1, 68]],
|
||||
"title": {
|
||||
"en_US": "Unsaturated Hydrocarbons"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "Obtained after [[refining|Oil Refinery]] [[heated|Boiler]] cracked crude oil. Unsaturated hydrocarbons are used in both [[rubber|Rubber]] and [[perfluoromethyl|Perfluoromethyl]]. It is also used in both [[PVC|PVC]] directly, and [[hard plastic|Hard Plastic]] through the production of [[phosgene|Phosgene]].<br><br>See also:<br>[[Basic Oil Processing]]<br>[[Advanced Oil Processing]]<br>[[Vacuum Oil Processing]]"
|
||||
}
|
||||
}
|
||||
11
src/main/resources/assets/hbm/manual/satellite/detector.json
Normal file
11
src/main/resources/assets/hbm/manual/satellite/detector.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Wideband Radio Emission Detector Satellite",
|
||||
"icon": ["hbm:item.satellite", 1, 9],
|
||||
"trigger": [["hbm:item.satellite", 1, 9]],
|
||||
"title": {
|
||||
"en_US": "Wideband Radio Emission Detector Satellite"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The wideband radio emission detector is a type of [[satellite|Satellite]] that can detect certain types of high-energy events from the entire map, albeit with low accuracy. The detector can only give a very rough idea of where such an event is taking place, for more accurate results, the area needs to be scanned wither with a [[spy satellite|Spy Satellite]] or [[narrowband scanner|Narrowband Emission Scanning Satellite]].<br><br>The types of events this satellite can pick up are as follows:<br>* Mini nuke explosions (low intensity, accuracy <10,000m)<br>* Radar (medium intensity, accuracy <2,500m)<br>* Particle accelerator operations (medium intensity, accuracy <2,500m)<br>Nuclear explosions (high intensity, accuracy <500m)<br><br>Events are timed, medium intense ones are the shortest lived as they only show up for half a second, while other events can show up for multiple seconds or even up to a minute. It is therefore important to scan any given area multiple times in rapid succession to get an accurate result.<br><br>* '§esurvey§r' will report any recent events that have not timed out yet. The detector's field of view covers the entire map, so there is no range limitations. All detected results are saved to an internal list.<br>* '§ecount§r' will write the amount of detected events to RX.<br>* '§egettype §eindex§r' will write the type (LOW/MEDIUM/HIGH) of the specified event to RX.<br>* '§egetposition §eindex§r' will write the estimated X/Z position of the specified event to RX. The coordinated are separated by semicolon.<br><br>See also:<br>* [[Satellite]]<br>* [[Satellite Ground Station]]"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Narrowband Emission Scanning Satellite",
|
||||
"icon": ["hbm:item.satellite", 1, 10],
|
||||
"trigger": [["hbm:item.satellite", 1, 10]],
|
||||
"title": {
|
||||
"en_US": "Narrowband Emission Scanning Satellite"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The narrowband scanner can detect certain high-energy events with high precision in a small area. While the [[wideband detector|Wideband Radio Emission Detector Satellite]] can only give a rough estimation of where a small number of things are happening, the narrowband scanner can detect more types of emission and pinpint their location.<br><br>Types of emissions that can be detected include:<br>* '§6NEUTRON_EMISSION§r' from nuclear reactors<br>* '§6HIGH_ENERGY_PARTICLES§r' from fusion reacotrs and particle accelerators<br>* '§6RADAR_WAVES§r' from terrestrial radar<br>* '§6RADIO_WAVES§r' from satellite ground stations with active TX<br><br>Like with the wideband detector, these emissions are timed, certain events only happen once or in a time interval, so for best results, repeated scans over a timespan are recommended.<br><br>* '§esurvey§r' will perform a scan with a radius of 250m around the target location. The results are saved in an internal list.<br>* '§ecount§r' will write the amount of scan results to RX.<br>* '§egetinfo §eindex§r' will write the specified entry's emission type to RX.<br>* '§egetposition §eindex§r' will write the X/Z position of the specified event to RX. The coordinated are separated by semicolon.<br><br>See also:<br>* [[Satellite]]<br>* [[Satellite Ground Station]]"
|
||||
}
|
||||
}
|
||||
@ -6,6 +6,6 @@
|
||||
"en_US": "Satellite"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "Satellites can be launched into earth orbit using a [[Soyuz]] rocket. Satellites communicate with items and blocks on earth using frequencies, so in order to actually use one, it's necessary to set a random frequency in the satellite ID manager, and then copying that ID to another item, for example a satellite chip.<br><br>Some satellites can perform minor tasks when linked with certain items, like the [[depth scanning satellite|Depth Scanning Satellite]] enabling the neutrino lens, or the [[xenium resonator satellite|Xenium Resonator Satellite]] connected to a satellite laser designator allowing for short range line of sight teleportation. Satellites however are the most powerful when paired with [[Redstone over Radio]] by linking them to a [[ground station|Satellite Ground Station]].<br><br>By using a [[RoR reader|Redstone-over-Radio Reader]], ground stations can receive the RX value, which is received from the connected satellite. Each satellite can only provide one RX value at a time, and the value persists until it changes. The contents of RX depend on what function the satellite has performed prior.<br><br>By using a ground station's TX command, commands can be relayed to the connected satellite. Most commands vary between satellite types, however all satellites have a ground target, i.e. the spot on the surface they are aiming at.<br><br>The common target commands are as follows:<br>* '§esettarget §ex §ez§r' (Example RoR: '§6tx!settarget §6200 §6300§r')<br>* '§egettarget§r' (Example RoR: '§6tx!gettarget§r'), writes the current target X and Z separated by semicolon to the ground station's RX<br>* '§egettargetx§r'<br>* '§egettargetz§r'<br><br>See also:<br>* [[Spy Satellite]]<br>* [[Depth Scanning Satellite]]<br>* [[Radar Satellite]]<br>* [[Asteroid Mining Ship]]<br>* [[Lunar Mining Ship]]<br>* [[Orbital Precision Laser]]<br>* [[Orbital Death Ray]]<br>* [[Xenium Resonator Satellite]]<br>* [[Relay Satellite]]"
|
||||
"en_US": "Satellites can be launched into earth orbit using a [[Soyuz]] rocket. Satellites communicate with items and blocks on earth using frequencies, so in order to actually use one, it's necessary to set a random frequency in the satellite ID manager, and then copying that ID to another item, for example a satellite chip.<br><br>Some satellites can perform minor tasks when linked with certain items, like the [[depth scanning satellite|Depth Scanning Satellite]] enabling the neutrino lens, or the [[xenium resonator satellite|Xenium Resonator Satellite]] connected to a satellite laser designator allowing for short range line of sight teleportation. Satellites however are the most powerful when paired with [[Redstone over Radio]] by linking them to a [[ground station|Satellite Ground Station]].<br><br>By using a [[RoR reader|Redstone-over-Radio Reader]], ground stations can receive the RX value, which is received from the connected satellite. Each satellite can only provide one RX value at a time, and the value persists until it changes. The contents of RX depend on what function the satellite has performed prior.<br><br>By using a ground station's TX command, commands can be relayed to the connected satellite. Most commands vary between satellite types, however all satellites have a ground target, i.e. the spot on the surface they are aiming at.<br><br>The common target commands are as follows:<br>* '§esettarget §ex §ez§r' (Example RoR: '§6tx!settarget §6200 §6300§r')<br>* '§egettarget§r' (Example RoR: '§6tx!gettarget§r'), writes the current target X and Z separated by semicolon to the ground station's RX<br>* '§egettargetx§r'<br>* '§egettargetz§r'<br><br>See also:<br>* [[Spy Satellite]]<br>* [[Depth Scanning Satellite]]<br>* [[Radar Satellite]]<br>* [[Asteroid Mining Ship]]<br>* [[Lunar Mining Ship]]<br>* [[Orbital Precision Laser]]<br>* [[Orbital Death Ray]]<br>* [[Xenium Resonator Satellite]]<br>* [[Relay Satellite]]<br>* [[Wideband Radio Emission Detector Satellite]]"
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,6 +6,6 @@
|
||||
"en_US": "Spy Satellite"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The spy satellite allows remote viewing of earth's surface. Due to RoR pixel displays not existing as of now, surface mapping functionality does not yet work. However, they can be used in detecting loaded chunks and spotting players in a small radius.<br><br>* '§etargetloaded§r' writes 'TRUE' or 'FALSE' to RX depending on if the chunk that the satellite is pointed at is loaded or not.<br>* '§espotplayers§r' detects surface players in a 250 block radius and writes all names separated by semicolon to RX.<br><br>See also:<br>* [[Satellite]]<br>* [[Satellite Ground Station]]"
|
||||
"en_US": "The spy satellite allows remote viewing of earth's surface. Due to RoR pixel displays not existing as of now, surface mapping functionality does not yet work. However, they can be used in detecting loaded chunks and spotting players in a small radius.<br><br>* '§etargetloaded§r' writes 'TRUE' or 'FALSE' to RX depending on if the chunk that the satellite is pointed at is loaded or not.<br>* '$egetsmog$r' writes the numeric value (rounded up) of the current target position's soot pollution to RX.<br>* '§espotplayers§r' detects surface players in a 250 block radius and writes all names separated by semicolon to RX.<br><br>See also:<br>* [[Satellite]]<br>* [[Satellite Ground Station]]"
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 467 B |
Binary file not shown.
|
After Width: | Height: | Size: 421 B |
Loading…
x
Reference in New Issue
Block a user