aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtnhlanth
diff options
context:
space:
mode:
authorNotAPenguin <michiel.vandeginste@gmail.com>2024-09-02 23:17:17 +0200
committerGitHub <noreply@github.com>2024-09-02 23:17:17 +0200
commit1b820de08a05070909a267e17f033fcf58ac8710 (patch)
tree02831a025986a06b20f87e5bcc69d1e0c639a342 /src/main/java/gtnhlanth
parentafd3fd92b6a6ab9ab0d0dc3214e6bc8ff7a86c9b (diff)
downloadGT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.gz
GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.bz2
GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.zip
The Great Renaming (#3014)
* move kekztech to a single root dir * move detrav to a single root dir * move gtnh-lanthanides to a single root dir * move tectech and delete some gross reflection in gt++ * remove more reflection inside gt5u * delete more reflection in gt++ * fix imports * move bartworks and bwcrossmod * fix proxies * move galactigreg and ggfab * move gtneioreplugin * try to fix gt++ bee loader * apply the rename rules to BW * apply rename rules to bwcrossmod * apply rename rules to detrav scanner mod * apply rename rules to galacticgreg * apply rename rules to ggfab * apply rename rules to goodgenerator * apply rename rules to gtnh-lanthanides * apply rename rules to gt++ * apply rename rules to kekztech * apply rename rules to kubatech * apply rename rules to tectech * apply rename rules to gt apply the rename rules to gt * fix tt import * fix mui hopefully * fix coremod except intergalactic * rename assline recipe class * fix a class name i stumbled on * rename StructureUtility to GTStructureUtility to prevent conflict with structurelib * temporary rename of GTTooltipDataCache to old name * fix gt client/server proxy names
Diffstat (limited to 'src/main/java/gtnhlanth')
-rw-r--r--src/main/java/gtnhlanth/GTNHLanthanides.java80
-rw-r--r--src/main/java/gtnhlanth/Tags.java11
-rw-r--r--src/main/java/gtnhlanth/api/recipe/LanthanidesRecipeMaps.java25
-rw-r--r--src/main/java/gtnhlanth/client/ClientProxy.java6
-rw-r--r--src/main/java/gtnhlanth/common/CommonProxy.java14
-rw-r--r--src/main/java/gtnhlanth/common/beamline/BeamInformation.java51
-rw-r--r--src/main/java/gtnhlanth/common/beamline/BeamLinePacket.java51
-rw-r--r--src/main/java/gtnhlanth/common/beamline/IConnectsToBeamline.java14
-rw-r--r--src/main/java/gtnhlanth/common/beamline/MTEBeamlinePipe.java256
-rw-r--r--src/main/java/gtnhlanth/common/beamline/Particle.java71
-rw-r--r--src/main/java/gtnhlanth/common/block/BlockAntennaCasing.java15
-rw-r--r--src/main/java/gtnhlanth/common/block/BlockCasing.java79
-rw-r--r--src/main/java/gtnhlanth/common/block/BlockShieldedAccGlass.java73
-rw-r--r--src/main/java/gtnhlanth/common/hatch/MTEBusInputFocus.java84
-rw-r--r--src/main/java/gtnhlanth/common/hatch/MTEHatchBeamlineConnector.java134
-rw-r--r--src/main/java/gtnhlanth/common/hatch/MTEHatchInputBeamline.java130
-rw-r--r--src/main/java/gtnhlanth/common/hatch/MTEHatchOutputBeamline.java137
-rw-r--r--src/main/java/gtnhlanth/common/item/ICanFocus.java5
-rw-r--r--src/main/java/gtnhlanth/common/item/ItemLanth.java15
-rw-r--r--src/main/java/gtnhlanth/common/item/ItemParticle.java123
-rw-r--r--src/main/java/gtnhlanth/common/item/ItemPhotolithographicMask.java42
-rw-r--r--src/main/java/gtnhlanth/common/item/MaskList.java162
-rw-r--r--src/main/java/gtnhlanth/common/register/BotWerkstoffMaterialPool.java88
-rw-r--r--src/main/java/gtnhlanth/common/register/LanthItemList.java174
-rw-r--r--src/main/java/gtnhlanth/common/register/WerkstoffMaterialPool.java2032
-rw-r--r--src/main/java/gtnhlanth/common/tileentity/MTEDigester.java240
-rw-r--r--src/main/java/gtnhlanth/common/tileentity/MTEDissolutionTank.java264
-rw-r--r--src/main/java/gtnhlanth/common/tileentity/MTELINAC.java749
-rw-r--r--src/main/java/gtnhlanth/common/tileentity/MTESourceChamber.java409
-rw-r--r--src/main/java/gtnhlanth/common/tileentity/MTESynchrotron.java1077
-rw-r--r--src/main/java/gtnhlanth/common/tileentity/MTETargetChamber.java480
-rw-r--r--src/main/java/gtnhlanth/common/tileentity/recipe/beamline/BeamlineRecipeAdder2.java165
-rw-r--r--src/main/java/gtnhlanth/common/tileentity/recipe/beamline/BeamlineRecipeLoader.java193
-rw-r--r--src/main/java/gtnhlanth/common/tileentity/recipe/beamline/RecipeSC.java52
-rw-r--r--src/main/java/gtnhlanth/common/tileentity/recipe/beamline/RecipeTC.java71
-rw-r--r--src/main/java/gtnhlanth/common/tileentity/recipe/beamline/SourceChamberFrontend.java24
-rw-r--r--src/main/java/gtnhlanth/common/tileentity/recipe/beamline/TargetChamberFrontend.java109
-rw-r--r--src/main/java/gtnhlanth/loader/BotRecipes.java262
-rw-r--r--src/main/java/gtnhlanth/loader/MTELoader.java4
-rw-r--r--src/main/java/gtnhlanth/loader/RecipeLoader.java4503
-rw-r--r--src/main/java/gtnhlanth/loader/ZPMRubberChanges.java408
-rw-r--r--src/main/java/gtnhlanth/util/DescTextLocalization.java24
-rw-r--r--src/main/java/gtnhlanth/util/Util.java55
-rw-r--r--src/main/java/gtnhlanth/xmod/nei/NEIConfig.java26
44 files changed, 12987 insertions, 0 deletions
diff --git a/src/main/java/gtnhlanth/GTNHLanthanides.java b/src/main/java/gtnhlanth/GTNHLanthanides.java
new file mode 100644
index 0000000000..311b274e86
--- /dev/null
+++ b/src/main/java/gtnhlanth/GTNHLanthanides.java
@@ -0,0 +1,80 @@
+package gtnhlanth;
+
+import java.util.logging.Logger;
+
+import bartworks.API.WerkstoffAdderRegistry;
+import cpw.mods.fml.common.Mod;
+import cpw.mods.fml.common.Mod.EventHandler;
+import cpw.mods.fml.common.SidedProxy;
+import cpw.mods.fml.common.event.FMLInitializationEvent;
+import cpw.mods.fml.common.event.FMLLoadCompleteEvent;
+import cpw.mods.fml.common.event.FMLPostInitializationEvent;
+import cpw.mods.fml.common.event.FMLPreInitializationEvent;
+import gtnhlanth.common.CommonProxy;
+import gtnhlanth.common.register.BotWerkstoffMaterialPool;
+import gtnhlanth.common.register.LanthItemList;
+import gtnhlanth.common.register.WerkstoffMaterialPool;
+import gtnhlanth.common.tileentity.recipe.beamline.BeamlineRecipeLoader;
+import gtnhlanth.loader.BotRecipes;
+import gtnhlanth.loader.RecipeLoader;
+
+@Mod(
+ modid = Tags.MODID,
+ version = Tags.VERSION,
+ name = Tags.MODNAME,
+ dependencies = "required-after:IC2; " + "required-after:gregtech; "
+ + "required-after:bartworks; "
+ + "required-after:GoodGenerator; "
+ + "before:miscutils; ")
+public class GTNHLanthanides {
+
+ public static Logger LOG = Logger.getLogger("GTNH:Lanthanides");
+
+ @Mod.Instance(Tags.MODID)
+ public static GTNHLanthanides instance;
+
+ @SidedProxy(clientSide = "gtnhlanth.client.ClientProxy", serverSide = "gtnhlanth.common.CommonProxy")
+ public static CommonProxy proxy;
+
+ @EventHandler
+ public static void preInit(FMLPreInitializationEvent e) {
+
+ WerkstoffAdderRegistry.addWerkstoffAdder(new WerkstoffMaterialPool());
+ WerkstoffAdderRegistry.addWerkstoffAdder(new BotWerkstoffMaterialPool());
+
+ LanthItemList.registerTypical();
+ LanthItemList.registerGTMTE();
+
+ // GregTechAPI.sAfterGTPostload.add(new ZPMRubberChanges());
+ proxy.preInit(e);
+ }
+
+ @EventHandler
+ public static void init(FMLInitializationEvent e) {
+ proxy.init(e);
+ WerkstoffMaterialPool.runInit();
+ }
+
+ @EventHandler
+ public static void postInit(FMLPostInitializationEvent e) {
+
+ RecipeLoader.loadGeneral();
+ RecipeLoader.loadLanthanideRecipes();
+ RecipeLoader.addRandomChemCrafting();
+ RecipeLoader.loadAccelerator();
+
+ BeamlineRecipeLoader.load();
+
+ BotRecipes.addGTRecipe();
+ proxy.postInit(e);
+
+ }
+
+ @EventHandler
+ public static void onModLoadingComplete(FMLLoadCompleteEvent e) {
+
+ BotRecipes.removeRecipes();
+ RecipeLoader.removeCeriumSources();
+
+ }
+}
diff --git a/src/main/java/gtnhlanth/Tags.java b/src/main/java/gtnhlanth/Tags.java
new file mode 100644
index 0000000000..c6e58ede14
--- /dev/null
+++ b/src/main/java/gtnhlanth/Tags.java
@@ -0,0 +1,11 @@
+package gtnhlanth;
+
+import gregtech.GT_Version;
+
+public class Tags {
+
+ public static final String MODID = "gtnhlanth";
+ public static final String MODNAME = "GTNH: Lanthanides";
+ public static final String VERSION = GT_Version.VERSION;
+ public static final String GROUPNAME = "gtnhlanth";
+}
diff --git a/src/main/java/gtnhlanth/api/recipe/LanthanidesRecipeMaps.java b/src/main/java/gtnhlanth/api/recipe/LanthanidesRecipeMaps.java
new file mode 100644
index 0000000000..ae421a4848
--- /dev/null
+++ b/src/main/java/gtnhlanth/api/recipe/LanthanidesRecipeMaps.java
@@ -0,0 +1,25 @@
+package gtnhlanth.api.recipe;
+
+import gregtech.api.gui.modularui.GTUITextures;
+import gregtech.api.recipe.RecipeMap;
+import gregtech.api.recipe.RecipeMapBackend;
+import gregtech.api.recipe.RecipeMapBuilder;
+import gregtech.nei.formatter.HeatingCoilSpecialValueFormatter;
+import gregtech.nei.formatter.SimpleSpecialValueFormatter;
+
+public class LanthanidesRecipeMaps {
+
+ public static final RecipeMap<RecipeMapBackend> digesterRecipes = RecipeMapBuilder.of("gtnhlanth.recipe.digester")
+ .maxIO(1, 1, 1, 1)
+ .minInputs(1, 1)
+ .progressBar(GTUITextures.PROGRESSBAR_ARROW_MULTIPLE)
+ .neiSpecialInfoFormatter(HeatingCoilSpecialValueFormatter.INSTANCE)
+ .build();
+ public static final RecipeMap<RecipeMapBackend> dissolutionTankRecipes = RecipeMapBuilder
+ .of("gtnhlanth.recipe.disstank")
+ .maxIO(2, 3, 2, 1)
+ .minInputs(1, 1)
+ .progressBar(GTUITextures.PROGRESSBAR_ARROW_MULTIPLE)
+ .neiSpecialInfoFormatter(new SimpleSpecialValueFormatter("value.disstank"))
+ .build();
+}
diff --git a/src/main/java/gtnhlanth/client/ClientProxy.java b/src/main/java/gtnhlanth/client/ClientProxy.java
new file mode 100644
index 0000000000..2f1f3eb5d5
--- /dev/null
+++ b/src/main/java/gtnhlanth/client/ClientProxy.java
@@ -0,0 +1,6 @@
+package gtnhlanth.client;
+
+import gtnhlanth.common.CommonProxy;
+
+public class ClientProxy extends CommonProxy {
+}
diff --git a/src/main/java/gtnhlanth/common/CommonProxy.java b/src/main/java/gtnhlanth/common/CommonProxy.java
new file mode 100644
index 0000000000..6613e03a23
--- /dev/null
+++ b/src/main/java/gtnhlanth/common/CommonProxy.java
@@ -0,0 +1,14 @@
+package gtnhlanth.common;
+
+import cpw.mods.fml.common.event.FMLInitializationEvent;
+import cpw.mods.fml.common.event.FMLPostInitializationEvent;
+import cpw.mods.fml.common.event.FMLPreInitializationEvent;
+
+public class CommonProxy {
+
+ public void preInit(FMLPreInitializationEvent e) {}
+
+ public void init(FMLInitializationEvent e) {}
+
+ public void postInit(FMLPostInitializationEvent e) {}
+}
diff --git a/src/main/java/gtnhlanth/common/beamline/BeamInformation.java b/src/main/java/gtnhlanth/common/beamline/BeamInformation.java
new file mode 100644
index 0000000000..3d2ff841c4
--- /dev/null
+++ b/src/main/java/gtnhlanth/common/beamline/BeamInformation.java
@@ -0,0 +1,51 @@
+package gtnhlanth.common.beamline;
+
+public class BeamInformation {
+
+ private float energy; // in keV
+ private int rate;
+
+ private Particle particle;
+ private int particleId;
+
+ private float focus;
+
+ public BeamInformation(float energy, int rate, int particleId, float focus) {
+ this.energy = energy;
+ this.rate = rate;
+ this.particleId = particleId;
+ this.particle = Particle.values()[particleId];
+ this.focus = focus;
+ }
+
+ public float getEnergy() {
+ return this.energy;
+ }
+
+ public int getRate() {
+ return this.rate;
+ }
+
+ public Particle getParticle() {
+ return this.particle;
+ }
+
+ public int getParticleId() {
+ return this.particleId;
+ }
+
+ public float getFocus() {
+ return this.focus;
+ }
+
+ @Override
+ public String toString() {
+ return "Energy=" + this.getEnergy()
+ + ",Rate="
+ + this.getRate()
+ + ",Particle="
+ + this.getParticleId()
+ + ",Focus="
+ + this.getFocus();
+ }
+}
diff --git a/src/main/java/gtnhlanth/common/beamline/BeamLinePacket.java b/src/main/java/gtnhlanth/common/beamline/BeamLinePacket.java
new file mode 100644
index 0000000000..7137c6ab7d
--- /dev/null
+++ b/src/main/java/gtnhlanth/common/beamline/BeamLinePacket.java
@@ -0,0 +1,51 @@
+package gtnhlanth.common.beamline;
+
+import net.minecraft.nbt.NBTTagCompound;
+
+import tectech.mechanics.dataTransport.DataPacket;
+
+public class BeamLinePacket extends DataPacket<BeamInformation> {
+
+ public BeamLinePacket(BeamInformation content) {
+ super(content);
+ }
+
+ public BeamLinePacket(NBTTagCompound compound) {
+ super(compound);
+ }
+
+ @Override
+ protected BeamInformation contentFromNBT(NBTTagCompound nbt) {
+ /*
+ * NBTTagCompound compound = nbt.getCompoundTag("beamline");
+ */
+ return new BeamInformation(
+ nbt.getFloat("energy"),
+ nbt.getInteger("rate"),
+ nbt.getInteger("particleId"),
+ nbt.getInteger("focus"));
+ }
+
+ @Override
+ protected NBTTagCompound contentToNBT() {
+
+ NBTTagCompound compound = new NBTTagCompound();
+
+ compound.setFloat("energy", content.getEnergy());
+ compound.setInteger("rate", content.getRate());
+ compound.setInteger("particleId", content.getParticleId());
+ compound.setFloat("focus", content.getFocus());
+
+ return compound;
+ }
+
+ @Override
+ public boolean extraCheck() {
+ return true;
+ }
+
+ @Override
+ protected BeamInformation unifyContentWith(BeamInformation arg0) {
+ throw new NoSuchMethodError("Unavailable to unify beam info data packet");
+ }
+}
diff --git a/src/main/java/gtnhlanth/common/beamline/IConnectsToBeamline.java b/src/main/java/gtnhlanth/common/beamline/IConnectsToBeamline.java
new file mode 100644
index 0000000000..6b9c9785f1
--- /dev/null
+++ b/src/main/java/gtnhlanth/common/beamline/IConnectsToBeamline.java
@@ -0,0 +1,14 @@
+package gtnhlanth.common.beamline;
+
+import net.minecraftforge.common.util.ForgeDirection;
+
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+
+public interface IConnectsToBeamline extends IMetaTileEntity {
+
+ boolean canConnect(ForgeDirection side);
+
+ IConnectsToBeamline getNext(IConnectsToBeamline source);
+
+ boolean isDataInputFacing(ForgeDirection side);
+}
diff --git a/src/main/java/gtnhlanth/common/beamline/MTEBeamlinePipe.java b/src/main/java/gtnhlanth/common/beamline/MTEBeamlinePipe.java
new file mode 100644
index 0000000000..fbfb0eb9c6
--- /dev/null
+++ b/src/main/java/gtnhlanth/common/beamline/MTEBeamlinePipe.java
@@ -0,0 +1,256 @@
+package gtnhlanth.common.beamline;
+
+import static gregtech.api.enums.Dyes.MACHINE_METAL;
+
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import gregtech.GTMod;
+import gregtech.api.enums.Dyes;
+import gregtech.api.enums.Textures;
+import gregtech.api.interfaces.ITexture;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.metatileentity.BaseMetaPipeEntity;
+import gregtech.api.metatileentity.MetaPipeEntity;
+import gregtech.common.GTClient;
+import gregtech.common.render.GTTextureBuilder;
+
+public class MTEBeamlinePipe extends MetaPipeEntity implements IConnectsToBeamline {
+
+ private static Textures.BlockIcons.CustomIcon pipe;
+
+ private byte connectionCount = 0;
+
+ private boolean active;
+
+ public MTEBeamlinePipe(int id, String name, String nameRegional) {
+ super(id, name, nameRegional, 0);
+ }
+
+ public MTEBeamlinePipe(String name) {
+ super(name, 0);
+ }
+
+ @Override
+ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
+ if (aBaseMetaTileEntity.isServerSide()) {
+ if ((aTick & 31) == 31) {
+ mConnections = 0;
+ connectionCount = 0;
+
+ for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
+ ForgeDirection d1 = dir.getOpposite();
+ TileEntity tTileEntity = aBaseMetaTileEntity.getTileEntityAtSide(dir);
+ if (tTileEntity instanceof IConnectsToBeamline) {
+ if (((IConnectsToBeamline) tTileEntity).canConnect(d1)) {
+ mConnections |= 1 << dir.ordinal();
+ connectionCount++;
+ }
+ } else if (tTileEntity instanceof IGregTechTileEntity) {
+ IMetaTileEntity meta = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity();
+ if (meta instanceof IConnectsToBeamline) {
+ if (((IConnectsToBeamline) meta).canConnect(d1)) {
+ mConnections |= 1 << dir.ordinal();
+ connectionCount++;
+ }
+ }
+ }
+ }
+ }
+ } else if (aBaseMetaTileEntity.isClientSide() && GTClient.changeDetected == 4) {
+ aBaseMetaTileEntity.issueTextureUpdate();
+ }
+ }
+
+ @Override
+ public byte getTileEntityBaseType() {
+ return 7;
+ }
+
+ @Override
+ public void loadNBTData(NBTTagCompound arg0) {}
+
+ @Override
+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity arg0) {
+ return new MTEBeamlinePipe(mName);
+ }
+
+ @Override
+ public void saveNBTData(NBTTagCompound arg0) {}
+
+ @Override
+ public float getThickNess() {
+ if (GTMod.instance.isClientSide() && GTClient.hideValue == 1) {
+ return 0.0625F;
+ }
+ return 0.5f;
+ }
+
+ @Override
+ public boolean renderInside(ForgeDirection arg0) {
+ return false;
+ }
+
+ @Override
+ public boolean canConnect(ForgeDirection side) {
+ return true;
+ }
+
+ // Largely taken from Tec's DataPipe
+
+ @Override
+ public IConnectsToBeamline getNext(IConnectsToBeamline source) {
+
+ for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
+
+ if ((mConnections & 1 << dir.ordinal()) == 0) {
+ continue;
+ }
+
+ TileEntity next = this.getBaseMetaTileEntity()
+ .getTileEntityAtSide(dir);
+ if (next instanceof IConnectsToBeamline && next != source) {
+
+ if (((IConnectsToBeamline) next).isDataInputFacing(dir.getOpposite())) {
+ return (IConnectsToBeamline) next;
+ }
+
+ } else if (next instanceof IGregTechTileEntity) {
+
+ IMetaTileEntity meta = ((IGregTechTileEntity) next).getMetaTileEntity();
+ if (meta instanceof IConnectsToBeamline && meta != source) {
+
+ if (meta instanceof MTEBeamlinePipe && (((MTEBeamlinePipe) meta).connectionCount == 2)) {
+
+ ((MTEBeamlinePipe) meta).markUsed();
+ return (IConnectsToBeamline) meta;
+ }
+
+ if (((IConnectsToBeamline) meta).isDataInputFacing(dir.getOpposite())) {
+
+ return (IConnectsToBeamline) meta;
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister aBlockIconRegister) {
+ pipe = new Textures.BlockIcons.CustomIcon("iconsets/pipe");
+ super.registerIcons(aBlockIconRegister);
+ }
+
+ @Override
+ public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, ForgeDirection aSide, int aConnections,
+ int aColorIndex, boolean aConnected, boolean aRedstone) {
+ return new ITexture[] { new GTTextureBuilder().addIcon(pipe)
+ .build(),
+ new GTTextureBuilder().addIcon(pipe)
+ .setRGBA(Dyes.getModulation((byte) aColorIndex, MACHINE_METAL.getRGBA()))
+ .build() };
+ }
+
+ public void markUsed() {
+ this.active = true;
+ }
+
+ @Override
+ public boolean isDataInputFacing(ForgeDirection side) {
+ return true;
+ }
+
+ @Override
+ public AxisAlignedBB getCollisionBoundingBoxFromPool(World aWorld, int aX, int aY, int aZ) {
+ float tSpace = (1f - 0.375f) / 2;
+ float tSide0 = tSpace;
+ float tSide1 = 1f - tSpace;
+ float tSide2 = tSpace;
+ float tSide3 = 1f - tSpace;
+ float tSide4 = tSpace;
+ float tSide5 = 1f - tSpace;
+
+ if (getBaseMetaTileEntity().getCoverIDAtSide(ForgeDirection.DOWN) != 0) {
+ tSide0 = tSide2 = tSide4 = 0;
+ tSide3 = tSide5 = 1;
+ }
+ if (getBaseMetaTileEntity().getCoverIDAtSide(ForgeDirection.UP) != 0) {
+ tSide2 = tSide4 = 0;
+ tSide1 = tSide3 = tSide5 = 1;
+ }
+ if (getBaseMetaTileEntity().getCoverIDAtSide(ForgeDirection.NORTH) != 0) {
+ tSide0 = tSide2 = tSide4 = 0;
+ tSide1 = tSide5 = 1;
+ }
+ if (getBaseMetaTileEntity().getCoverIDAtSide(ForgeDirection.SOUTH) != 0) {
+ tSide0 = tSide4 = 0;
+ tSide1 = tSide3 = tSide5 = 1;
+ }
+ if (getBaseMetaTileEntity().getCoverIDAtSide(ForgeDirection.WEST) != 0) {
+ tSide0 = tSide2 = tSide4 = 0;
+ tSide1 = tSide3 = 1;
+ }
+ if (getBaseMetaTileEntity().getCoverIDAtSide(ForgeDirection.EAST) != 0) {
+ tSide0 = tSide2 = 0;
+ tSide1 = tSide3 = tSide5 = 1;
+ }
+
+ byte tConn = ((BaseMetaPipeEntity) getBaseMetaTileEntity()).mConnections;
+ if ((tConn & 1 << ForgeDirection.DOWN.ordinal()) != 0) {
+ tSide0 = 0f;
+ }
+ if ((tConn & 1 << ForgeDirection.UP.ordinal()) != 0) {
+ tSide1 = 1f;
+ }
+ if ((tConn & 1 << ForgeDirection.NORTH.ordinal()) != 0) {
+ tSide2 = 0f;
+ }
+ if ((tConn & 1 << ForgeDirection.SOUTH.ordinal()) != 0) {
+ tSide3 = 1f;
+ }
+ if ((tConn & 1 << ForgeDirection.WEST.ordinal()) != 0) {
+ tSide4 = 0f;
+ }
+ if ((tConn & 1 << ForgeDirection.EAST.ordinal()) != 0) {
+ tSide5 = 1f;
+ }
+
+ return AxisAlignedBB
+ .getBoundingBox(aX + tSide4, aY + tSide0, aZ + tSide2, aX + tSide5, aY + tSide1, aZ + tSide3);
+ }
+
+ @Override
+ public String[] getDescription() {
+ return new String[] { StatCollector.translateToLocal("beamline.pipe.desc.0"), // Beamline pipe
+ EnumChatFormatting.AQUA + StatCollector.translateToLocal("beamline.pipe.desc.1"), // Does not cross, split
+ // or turn
+ "Added by " + EnumChatFormatting.GREEN + "GTNH: Lanthanides"
+
+ };
+ }
+
+ @Override
+ public boolean allowPullStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, ForgeDirection side,
+ ItemStack aStack) {
+ return false;
+ }
+
+ @Override
+ public boolean allowPutStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, ForgeDirection side,
+ ItemStack aStack) {
+ return false;
+ }
+}
diff --git a/src/main/java/gtnhlanth/common/beamline/Particle.java b/src/main/java/gtnhlanth/common/beamline/Particle.java
new file mode 100644
index 0000000000..856bb383db
--- /dev/null
+++ b/src/main/java/gtnhlanth/common/beamline/Particle.java
@@ -0,0 +1,71 @@
+package gtnhlanth.common.beamline;
+
+import net.minecraft.util.StatCollector;
+
+public enum Particle {
+
+ ELECTRON(true, 0, 0.511f, 5000, "electron", "e\u207B", -1, null),
+ PHOTON(false, 1, 0, 0, "photon", "\u03B3", 0, null),
+ NEUTRON(false, 2, 939.57f, 15000, "neutron", "n\u2070", 0, null),
+ PROTON(true, 3, 938.27f, 15000, "proton", "p\u207A", 1, null),
+ ALPHA(true, 4, 3727.38f, 8000, "alpha", "\u03B1", 2, null);
+
+ private boolean canAcc;
+
+ private float restMass; // in MeV
+
+ private float maxSourceEnergy; // in keV
+
+ private String name;
+ private String shortName;
+
+ private float charge; // in multiples of elemental charge
+
+ private String chargeSpecial;
+
+ private Particle(boolean canAcc, int id, float restMass, float maxSourceEnergy, String name, String shortName,
+ float charge, String chargeSpecial) { // ID
+ // is
+ // symbolic
+ // only
+ this.canAcc = canAcc;
+ this.restMass = restMass;
+ this.maxSourceEnergy = maxSourceEnergy;
+ this.name = name;
+ this.shortName = shortName;
+ this.charge = charge;
+ this.chargeSpecial = chargeSpecial;
+ }
+
+ public float getMass() {
+ return this.restMass;
+ }
+
+ public float getCharge() {
+ return this.charge;
+ }
+
+ public String getChargeSpecial() {
+ return this.chargeSpecial;
+ }
+
+ public boolean canAccelerate() {
+ return this.canAcc;
+ }
+
+ public float maxSourceEnergy() {
+ return this.maxSourceEnergy;