mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-03-11 04:05:36 +00:00
hey shitass, stop fucking with my gitignore
This commit is contained in:
parent
0efb99b78c
commit
0fdfae999e
18
.gitignore
vendored
18
.gitignore
vendored
@ -26,21 +26,3 @@ run
|
||||
|
||||
# Changelog backup
|
||||
/changelog.bak
|
||||
|
||||
screenshots/
|
||||
|
||||
saves/
|
||||
|
||||
usernamecache.json
|
||||
|
||||
options.txt
|
||||
|
||||
logs/
|
||||
|
||||
doc/
|
||||
|
||||
crash-reports/
|
||||
|
||||
config/
|
||||
|
||||
asm/
|
||||
|
||||
197
src/main/java/com/hbm/config/CustomMachineConfigJSON.java
Normal file
197
src/main/java/com/hbm/config/CustomMachineConfigJSON.java
Normal file
@ -0,0 +1,197 @@
|
||||
package com.hbm.config;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.stream.JsonWriter;
|
||||
import com.hbm.config.CustomMachineConfigJSON.MachineConfiguration.ComponentDefinition;
|
||||
import com.hbm.main.MainRegistry;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
|
||||
public class CustomMachineConfigJSON {
|
||||
|
||||
public static final Gson gson = new Gson();
|
||||
public static HashMap<String, MachineConfiguration> customMachines = new HashMap();
|
||||
|
||||
public static void initialize() {
|
||||
File folder = MainRegistry.configHbmDir;
|
||||
|
||||
File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmCustomMachines.json");
|
||||
|
||||
if(!config.exists()) {
|
||||
writeDefault(config);
|
||||
}
|
||||
|
||||
readConfig(config);
|
||||
}
|
||||
|
||||
public static void writeDefault(File config) {
|
||||
|
||||
try {
|
||||
JsonWriter writer = new JsonWriter(new FileWriter(config));
|
||||
writer.setIndent(" ");
|
||||
writer.beginObject();
|
||||
writer.name("machines").beginArray();
|
||||
|
||||
writer.beginObject();
|
||||
writer.name("recipeKey").value("paperPress");
|
||||
writer.name("unlocalizedName").value("paperPress");
|
||||
writer.name("localizedName").value("Paper Press");
|
||||
writer.name("fluidInCount").value(1);
|
||||
writer.name("fluidInCap").value(1_000);
|
||||
writer.name("itemInCount").value(1);
|
||||
writer.name("fluidOutCount").value(0);
|
||||
writer.name("fluidOutCap").value(0);
|
||||
writer.name("itemOutCount").value(1);
|
||||
writer.name("generatorMode").value(false);
|
||||
writer.name("recipeSpeedMult").value(1.0D);
|
||||
writer.name("recipeConsumptionMult").value(1.0D);
|
||||
writer.name("maxPower").value(10_000L);
|
||||
|
||||
writer.name("components").beginArray();
|
||||
|
||||
for(int x = -1; x <= 1; x++) {
|
||||
for(int y = -1; y <= 1; y++) {
|
||||
for(int z = 0; z <= 2; z++) {
|
||||
if(!(x == 0 && y == 0 && z == 1) && !(x == 0 && z == 0)) {
|
||||
writer.beginObject().setIndent("");
|
||||
writer.name("block").value(y == 0 ? "hbm:tile.cm_sheet" : "hbm:tile.cm_block");
|
||||
writer.name("x").value(x);
|
||||
writer.name("y").value(y);
|
||||
writer.name("z").value(z);
|
||||
writer.name("metas").beginArray();
|
||||
writer.value(0);
|
||||
writer.endArray();
|
||||
writer.endObject().setIndent(" ");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
writer.beginObject().setIndent("");
|
||||
writer.name("block").value("hbm:tile.cm_port");
|
||||
writer.name("x").value(0);
|
||||
writer.name("y").value(-1);
|
||||
writer.name("z").value(0);
|
||||
writer.name("metas").beginArray();
|
||||
writer.value(0);
|
||||
writer.endArray();
|
||||
writer.endObject().setIndent(" ");
|
||||
|
||||
writer.beginObject().setIndent("");
|
||||
writer.name("block").value("hbm:tile.cm_port");
|
||||
writer.name("x").value(0);
|
||||
writer.name("y").value(1);
|
||||
writer.name("z").value(0);
|
||||
writer.name("metas").beginArray();
|
||||
writer.value(0);
|
||||
writer.endArray();
|
||||
writer.endObject().setIndent(" ");
|
||||
|
||||
writer.endArray();
|
||||
writer.endObject();
|
||||
|
||||
writer.endArray();
|
||||
writer.endObject();
|
||||
writer.close();
|
||||
} catch(IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static void readConfig(File config) {
|
||||
|
||||
try {
|
||||
JsonObject json = gson.fromJson(new FileReader(config), JsonObject.class);
|
||||
JsonArray machines = json.get("machines").getAsJsonArray();
|
||||
|
||||
for(int i = 0; i < machines.size(); i++) {
|
||||
JsonObject machineObject = machines.get(i).getAsJsonObject();
|
||||
|
||||
MachineConfiguration configuration = new MachineConfiguration();
|
||||
configuration.recipeKey = machineObject.get("recipeKey").getAsString();
|
||||
configuration.unlocalizedName = machineObject.get("unlocalizedName").getAsString();
|
||||
configuration.localizedName = machineObject.get("localizedName").getAsString();
|
||||
configuration.fluidInCount = machineObject.get("fluidInCount").getAsInt();
|
||||
configuration.fluidInCap = machineObject.get("fluidInCap").getAsInt();
|
||||
configuration.itemInCount = machineObject.get("itemInCount").getAsInt();
|
||||
configuration.fluidOutCount = machineObject.get("fluidOutCount").getAsInt();
|
||||
configuration.fluidOutCap = machineObject.get("fluidOutCap").getAsInt();
|
||||
configuration.itemOutCount = machineObject.get("itemOutCount").getAsInt();
|
||||
configuration.generatorMode = machineObject.get("generatorMode").getAsBoolean();
|
||||
configuration.recipeSpeedMult = machineObject.get("recipeSpeedMult").getAsDouble();
|
||||
configuration.recipeConsumptionMult = machineObject.get("recipeConsumptionMult").getAsDouble();
|
||||
configuration.maxPower = machineObject.get("maxPower").getAsLong();
|
||||
|
||||
JsonArray components = machineObject.get("components").getAsJsonArray();
|
||||
configuration.components = new ArrayList();
|
||||
|
||||
for(int j = 0; j < components.size(); j++) {
|
||||
JsonObject compObject = components.get(j).getAsJsonObject();
|
||||
ComponentDefinition compDef = new ComponentDefinition();
|
||||
compDef.block = (Block) Block.blockRegistry.getObject(compObject.get("block").getAsString());
|
||||
compDef.x = compObject.get("x").getAsInt();
|
||||
compDef.y = compObject.get("y").getAsInt();
|
||||
compDef.z = compObject.get("z").getAsInt();
|
||||
compDef.allowedMetas = new HashSet();
|
||||
JsonArray metas = compObject.get("metas").getAsJsonArray();
|
||||
for(int k = 0; k < metas.size(); k++) {
|
||||
compDef.allowedMetas.add(metas.get(k).getAsInt());
|
||||
}
|
||||
|
||||
configuration.components.add(compDef);
|
||||
}
|
||||
|
||||
customMachines.put(configuration.unlocalizedName, configuration);
|
||||
}
|
||||
|
||||
} catch(Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static class MachineConfiguration {
|
||||
|
||||
/** The name of the recipe set that this machine can handle */
|
||||
public String recipeKey;
|
||||
/** The internal name of this machine */
|
||||
public String unlocalizedName;
|
||||
/** The display name of this machine */
|
||||
public String localizedName;
|
||||
|
||||
public int fluidInCount;
|
||||
public int fluidInCap;
|
||||
public int itemInCount;
|
||||
public int fluidOutCount;
|
||||
public int fluidOutCap;
|
||||
public int itemOutCount;
|
||||
/** Whether inputs should be used up when the process begins */
|
||||
public boolean generatorMode;
|
||||
|
||||
public double recipeSpeedMult = 1D;
|
||||
public double recipeConsumptionMult = 1D;
|
||||
public long maxPower;
|
||||
|
||||
/** Definitions of blocks that this machine is composed of */
|
||||
public List<ComponentDefinition> components;
|
||||
|
||||
public static class ComponentDefinition {
|
||||
public Block block;
|
||||
public Set<Integer> allowedMetas;
|
||||
public int x;
|
||||
public int y;
|
||||
public int z;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -22,6 +22,7 @@ import com.hbm.util.Compat;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||
|
||||
import api.hbm.energy.IEnergyUser;
|
||||
import api.hbm.fluid.IFluidStandardTransceiver;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
@ -35,7 +36,7 @@ import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityCustomMachine extends TileEntityMachineBase implements IFluidStandardTransceiver, IGUIProvider {
|
||||
public class TileEntityCustomMachine extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyUser, IGUIProvider {
|
||||
|
||||
public String machineType;
|
||||
public MachineConfiguration config;
|
||||
@ -110,6 +111,13 @@ public class TileEntityCustomMachine extends TileEntityMachineBase implements IF
|
||||
for(FluidTank tank : this.inputTanks) {
|
||||
this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||
}
|
||||
if(!config.generatorMode) this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||
}
|
||||
}
|
||||
|
||||
if(config.generatorMode && power > 0) {
|
||||
for(DirPos pos : this.connectionPos) {
|
||||
this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||
}
|
||||
}
|
||||
|
||||
@ -118,7 +126,7 @@ public class TileEntityCustomMachine extends TileEntityMachineBase implements IF
|
||||
if(config.generatorMode) {
|
||||
if(this.cachedRecipe == null) {
|
||||
CustomMachineRecipe recipe = this.getMatchingRecipe();
|
||||
if(this.hasRequiredQuantities(recipe) && this.hasSpace(recipe)) {
|
||||
if(recipe != null && this.hasRequiredQuantities(recipe) && this.hasSpace(recipe)) {
|
||||
this.cachedRecipe = recipe;
|
||||
this.useUpInput(recipe);
|
||||
}
|
||||
@ -384,6 +392,11 @@ public class TileEntityCustomMachine extends TileEntityMachineBase implements IF
|
||||
|
||||
this.matcher.readFromNBT(nbt);
|
||||
}
|
||||
|
||||
int index = nbt.getInteger("cachedIndex");
|
||||
if(index != -1) {
|
||||
this.cachedRecipe = CustomMachineRecipes.recipes.get(this.machineType).get(index);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -402,6 +415,13 @@ public class TileEntityCustomMachine extends TileEntityMachineBase implements IF
|
||||
for(int i = 0; i < outputTanks.length; i++) outputTanks[i].writeToNBT(nbt, "o" + i);
|
||||
|
||||
this.matcher.writeToNBT(nbt);
|
||||
|
||||
if(this.cachedRecipe != null) {
|
||||
int index = CustomMachineRecipes.recipes.get(this.machineType).indexOf(this.cachedRecipe);
|
||||
nbt.setInteger("cachedIndex", index);
|
||||
} else {
|
||||
nbt.setInteger("cachedIndex", -1);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -437,4 +457,42 @@ public class TileEntityCustomMachine extends TileEntityMachineBase implements IF
|
||||
if(this.config == null) return null;
|
||||
return new GUIMachineCustom(player.inventory, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getPower() {
|
||||
return this.power;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMaxPower() {
|
||||
return this.config != null ? this.getMaxPower() : 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPower(long power) {
|
||||
this.power = power;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long transferPower(long power) {
|
||||
if(this.config != null && this.config.generatorMode) return power;
|
||||
|
||||
this.setPower(this.getPower() + power);
|
||||
|
||||
if(this.getPower() > this.getMaxPower()) {
|
||||
|
||||
long overshoot = this.getPower() - this.getMaxPower();
|
||||
this.setPower(this.getMaxPower());
|
||||
return overshoot;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getTransferWeight() {
|
||||
if(this.config != null && this.config.generatorMode) return 0;
|
||||
|
||||
return Math.max(getMaxPower() - getPower(), 0);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user