refactor 2

This commit is contained in:
GlodBlock committed 2023-01-21 14:45:07 +08:00
1 parent a70ace4742
commit 018d488bee
27 files changed
+829 -1780

No files matched your search

@@ -25,6 +25,7 @@ import appeng.util.item.AEItemStack;
import com.glodblock.github.client.textures.FCPartsTexture;
import com.glodblock.github.common.item.ItemFluidDrop;
import com.glodblock.github.common.item.ItemFluidPacket;
import com.glodblock.github.common.parts.base.FCSharedFluidBus;
import com.glodblock.github.inventory.FluidConvertingInventoryAdaptor;
import com.glodblock.github.util.Util;
import com.google.common.collect.ImmutableSet;
@@ -36,7 +37,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraftforge.fluids.IFluidHandler;
public class PartFluidExportBus extends PartSharedFluidBus implements ICraftingRequester {
public class PartFluidExportBus extends FCSharedFluidBus implements ICraftingRequester {
private final BaseActionSource source;
private final MultiCraftingTracker craftingTracker = new MultiCraftingTracker(this, 9);
@@ -15,6 +15,7 @@ import appeng.me.GridAccessException;
import appeng.util.item.AEFluidStack;
import com.glodblock.github.client.textures.FCPartsTexture;
import com.glodblock.github.common.item.ItemFluidPacket;
import com.glodblock.github.common.parts.base.FCSharedFluidBus;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.renderer.RenderBlocks;
@@ -25,7 +26,7 @@ import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler;
public class PartFluidImportBus extends PartSharedFluidBus {
public class PartFluidImportBus extends FCSharedFluidBus {
private final BaseActionSource source;
@@ -1,122 +1,37 @@
package com.glodblock.github.common.parts;
import appeng.api.config.SecurityPermissions;
import appeng.api.implementations.ICraftingPatternItem;
import appeng.api.networking.IGridHost;
import appeng.api.networking.crafting.ICraftingPatternDetails;
import appeng.api.storage.data.IAEItemStack;
import appeng.core.sync.GuiBridge;
import appeng.tile.inventory.AppEngInternalInventory;
import appeng.tile.inventory.BiggerAppEngInventory;
import appeng.tile.inventory.InvOperation;
import appeng.util.Platform;
import com.glodblock.github.client.textures.FCPartsTexture;
import com.glodblock.github.common.item.ItemFluidDrop;
import com.glodblock.github.common.item.ItemFluidPacket;
import com.glodblock.github.inventory.BiggerAppEngInventory;
import com.glodblock.github.inventory.InventoryHandler;
import com.glodblock.github.common.parts.base.FCFluidEncodeTerminal;
import com.glodblock.github.inventory.gui.GuiType;
import com.glodblock.github.util.BlockPos;
import com.glodblock.github.util.Util;
import java.util.List;
import java.util.Objects;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.Vec3;
public class PartFluidPatternTerminal extends FCBasePart {
public class PartFluidPatternTerminal extends FCFluidEncodeTerminal {
private static final FCPartsTexture FRONT_BRIGHT_ICON = FCPartsTexture.PartFluidPatternTerminal_Bright;
private static final FCPartsTexture FRONT_DARK_ICON = FCPartsTexture.PartFluidPatternTerminal_Colored;
private static final FCPartsTexture FRONT_COLORED_ICON = FCPartsTexture.PartFluidPatternTerminal_Dark;
private final AppEngInternalInventory crafting = new BiggerAppEngInventory(this, 9);
private final AppEngInternalInventory output = new BiggerAppEngInventory(this, 3);
private final AppEngInternalInventory pattern = new AppEngInternalInventory(this, 2);
private boolean craftingMode = true;
private boolean substitute = false;
private boolean combine = false;
private boolean beSubstitute = false;
public PartFluidPatternTerminal(ItemStack is) {
super(is, true);
super(is);
this.crafting = new BiggerAppEngInventory(this, 9);
this.output = new BiggerAppEngInventory(this, 3);
this.prioritize = false;
this.inverted = false;
this.activePage = 0;
}
@Override
public void getDrops(final List<ItemStack> drops, final boolean wrenched) {
for (final ItemStack is : this.pattern) {
if (is != null) {
drops.add(is);
}
}
}
@Override
public boolean onPartActivate(final EntityPlayer player, final Vec3 pos) {
TileEntity te = this.getTile();
BlockPos tePos = new BlockPos(te);
if (Platform.isWrench(player, player.inventory.getCurrentItem(), tePos.getX(), tePos.getY(), tePos.getZ())) {
return super.onPartActivate(player, pos);
}
if (Platform.isServer()) {
if (Util.hasPermission(player, SecurityPermissions.INJECT, (IGridHost) this)
|| Util.hasPermission(player, SecurityPermissions.EXTRACT, (IGridHost) this)) {
InventoryHandler.openGui(
player,
te.getWorldObj(),
tePos,
Objects.requireNonNull(Util.from(getSide())),
GuiType.FLUID_PATTERN_TERMINAL);
} else {
player.addChatComponentMessage(new ChatComponentText("You don't have permission to view."));
}
}
return true;
}
@Override
public void readFromNBT(final NBTTagCompound data) {
super.readFromNBT(data);
this.setCraftingRecipe(data.getBoolean("craftingMode"));
this.setSubstitution(data.getBoolean("substitute"));
this.setCombineMode(data.getBoolean("combine"));
this.setBeSubstitute(data.getBoolean("beSubstitute"));
this.pattern.readFromNBT(data, "pattern");
this.output.readFromNBT(data, "outputList");
this.crafting.readFromNBT(data, "craftingGrid");
}
@Override
public void writeToNBT(final NBTTagCompound data) {
super.writeToNBT(data);
data.setBoolean("craftingMode", this.craftingMode);
data.setBoolean("substitute", this.substitute);
data.setBoolean("combine", this.combine);
data.setBoolean("beSubstitute", this.beSubstitute);
this.pattern.writeToNBT(data, "pattern");
this.output.writeToNBT(data, "outputList");
this.crafting.writeToNBT(data, "craftingGrid");
}
@Override
public GuiBridge getGui(final EntityPlayer p) {
int x = (int) p.posX;
int y = (int) p.posY;
int z = (int) p.posZ;
if (this.getHost().getTile() != null) {
x = this.getTile().xCoord;
y = this.getTile().yCoord;
z = this.getTile().zCoord;
}
if (GuiBridge.GUI_PATTERN_TERMINAL.hasPermissions(this.getHost().getTile(), x, y, z, this.getSide(), p)) {
return GuiBridge.GUI_PATTERN_TERMINAL;
}
return GuiBridge.GUI_ME;
public GuiType getGui() {
return GuiType.FLUID_PATTERN_TERMINAL;
}
@Override
@@ -141,7 +56,7 @@ public class PartFluidPatternTerminal extends FCBasePart {
if (newStack != null) {
NBTTagCompound data = newStack.getTagCompound();
this.setCombineMode(data.getInteger("combine") == 1);
this.setBeSubstitute(data.getBoolean("beSubstitute"));
this.setBeSubstitute(details.canBeSubstitute());
}
for (int i = 0; i < this.crafting.getSizeInventory(); i++) {
this.crafting.setInventorySlotContents(i, null);
@@ -189,69 +104,39 @@ public class PartFluidPatternTerminal extends FCBasePart {
}
}
public boolean isCraftingRecipe() {
return this.craftingMode;
}
public void setCraftingRecipe(final boolean craftingMode) {
this.craftingMode = craftingMode;
super.setCraftingRecipe(craftingMode);
this.fixCraftingRecipes();
}
public boolean isSubstitution() {
return this.substitute;
}
public boolean shouldCombine() {
return this.combine;
}
public void setSubstitution(boolean canSubstitute) {
this.substitute = canSubstitute;
}
public void setCombineMode(boolean shouldCombine) {
this.combine = shouldCombine;
}
public void setBeSubstitute(boolean canBeSubstitute) {
this.beSubstitute = canBeSubstitute;
}
public boolean canBeSubstitute() {
return this.beSubstitute;
}
public void onChangeCrafting(IAEItemStack[] newCrafting, IAEItemStack[] newOutput) {
IInventory crafting = this.getInventoryByName("crafting");
IInventory output = this.getInventoryByName("output");
if (crafting instanceof AppEngInternalInventory && output instanceof AppEngInternalInventory) {
for (int x = 0; x < crafting.getSizeInventory() && x < newCrafting.length; x++) {
final IAEItemStack item = newCrafting[x];
crafting.setInventorySlotContents(x, item == null ? null : item.getItemStack());
}
for (int x = 0; x < output.getSizeInventory() && x < newOutput.length; x++) {
final IAEItemStack item = newOutput[x];
output.setInventorySlotContents(x, item == null ? null : item.getItemStack());
}
}
@Override
public void setPrioritization(boolean canPrioritize) {
this.prioritize = false;
}
@Override
public IInventory getInventoryByName(final String name) {
if (name.equals("crafting")) {
return this.crafting;
}
public boolean isPrioritize() {
return false;
}
if (name.equals("output")) {
return this.output;
}
@Override
public boolean isInverted() {
return false;
}
if (name.equals("pattern")) {
return this.pattern;
}
@Override
public void setInverted(boolean inverted) {
this.inverted = false;
}
return super.getInventoryByName(name);
@Override
public int getActivePage() {
return 0;
}
@Override
public void setActivePage(int activePage) {
this.activePage = 0;
}
@Override
@@ -1,132 +1,35 @@
package com.glodblock.github.common.parts;
import appeng.api.config.SecurityPermissions;
import appeng.api.implementations.ICraftingPatternItem;
import appeng.api.networking.IGridHost;
import appeng.api.networking.crafting.ICraftingPatternDetails;
import appeng.api.storage.data.IAEItemStack;
import appeng.core.sync.GuiBridge;
import appeng.tile.inventory.AppEngInternalInventory;
import appeng.tile.inventory.BiggerAppEngInventory;
import appeng.tile.inventory.InvOperation;
import appeng.util.Platform;
import com.glodblock.github.client.textures.FCPartsTexture;
import com.glodblock.github.common.item.ItemFluidDrop;
import com.glodblock.github.common.item.ItemFluidPacket;
import com.glodblock.github.inventory.BiggerAppEngInventory;
import com.glodblock.github.inventory.InventoryHandler;
import com.glodblock.github.common.parts.base.FCFluidEncodeTerminal;
import com.glodblock.github.inventory.gui.GuiType;
import com.glodblock.github.util.BlockPos;
import com.glodblock.github.util.Util;
import java.util.List;
import java.util.Objects;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.Vec3;
public class PartFluidPatternTerminalEx extends FCBasePart {
public class PartFluidPatternTerminalEx extends FCFluidEncodeTerminal {
private static final FCPartsTexture FRONT_BRIGHT_ICON = FCPartsTexture.PartFluidPatternTerminal_Bright;
private static final FCPartsTexture FRONT_DARK_ICON = FCPartsTexture.PartFluidPatternTerminal_Colored;
private static final FCPartsTexture FRONT_COLORED_ICON = FCPartsTexture.PartFluidPatternTerminal_Dark;
private final AppEngInternalInventory crafting = new BiggerAppEngInventory(this, 32);
private final AppEngInternalInventory output = new BiggerAppEngInventory(this, 32);
private final AppEngInternalInventory pattern = new AppEngInternalInventory(this, 2);
private boolean substitute = false;
private boolean combine = false;
private boolean prioritize = false;
private boolean inverted = false;
private boolean beSubstitute = false;
private int activePage = 0;
public PartFluidPatternTerminalEx(ItemStack is) {
super(is, true);
super(is);
this.crafting = new BiggerAppEngInventory(this, 32);
this.output = new BiggerAppEngInventory(this, 32);
this.craftingMode = false;
}
@Override
public void getDrops(final List<ItemStack> drops, final boolean wrenched) {
for (final ItemStack is : this.pattern) {
if (is != null) {
drops.add(is);
}
}
}
@Override
public boolean onPartActivate(final EntityPlayer player, final Vec3 pos) {
TileEntity te = this.getTile();
BlockPos tePos = new BlockPos(te);
if (Platform.isWrench(player, player.inventory.getCurrentItem(), tePos.getX(), tePos.getY(), tePos.getZ())) {
return super.onPartActivate(player, pos);
}
if (Platform.isServer()) {
if (Util.hasPermission(player, SecurityPermissions.INJECT, (IGridHost) this)
|| Util.hasPermission(player, SecurityPermissions.EXTRACT, (IGridHost) this)) {
InventoryHandler.openGui(
player,
te.getWorldObj(),
tePos,
Objects.requireNonNull(Util.from(getSide())),
GuiType.FLUID_PATTERN_TERMINAL_EX);
} else {
player.addChatComponentMessage(new ChatComponentText("You don't have permission to view."));
}
}
return true;
}
@Override
public void readFromNBT(final NBTTagCompound data) {
super.readFromNBT(data);
this.setSubstitution(data.getBoolean("substitute"));
this.setCombineMode(data.getBoolean("combine"));
this.pattern.readFromNBT(data, "pattern");
this.output.readFromNBT(data, "outputList");
this.crafting.readFromNBT(data, "craftingGrid");
this.setBeSubstitute(data.getBoolean("beSubstitute"));
this.setSubstitution(data.getBoolean("substitute"));
this.setPrioritization(data.getBoolean("priorization"));
this.setInverted(data.getBoolean("inverted"));
this.setActivePage(data.getInteger("activePage"));
}
@Override
public void writeToNBT(final NBTTagCompound data) {
super.writeToNBT(data);
data.setBoolean("substitute", this.substitute);
data.setBoolean("combine", this.combine);
this.pattern.writeToNBT(data, "pattern");
this.output.writeToNBT(data, "outputList");
this.crafting.writeToNBT(data, "craftingGrid");
data.setBoolean("beSubstitute", this.beSubstitute);
data.setBoolean("priorization", this.prioritize);
data.setBoolean("substitute", this.substitute);
data.setBoolean("inverted", this.inverted);
data.setInteger("activePage", this.activePage);
}
@Override
public GuiBridge getGui(final EntityPlayer p) {
int x = (int) p.posX;
int y = (int) p.posY;
int z = (int) p.posZ;
if (this.getHost().getTile() != null) {
x = this.getTile().xCoord;
y = this.getTile().yCoord;
z = this.getTile().zCoord;
}
if (GuiBridge.GUI_PATTERN_TERMINAL.hasPermissions(this.getHost().getTile(), x, y, z, this.getSide(), p)) {
return GuiBridge.GUI_PATTERN_TERMINAL;
}
return GuiBridge.GUI_ME;
public GuiType getGui() {
return GuiType.FLUID_PATTERN_TERMINAL_EX;
}
@Override
@@ -149,15 +52,13 @@ public class PartFluidPatternTerminalEx extends FCBasePart {
final IAEItemStack[] outItems = details.getOutputs();
int inputsCount = 0;
int outputCount = 0;
for (int i = 0; i < inItems.length; i++) {
if (inItems[i] != null) {
for (IAEItemStack inItem : inItems) {
if (inItem != null) {
inputsCount++;
}
}
for (int i = 0; i < outItems.length; i++) {
if (outItems[i] != null) {
for (IAEItemStack outItem : outItems) {
if (outItem != null) {
outputCount++;
}
}
@@ -166,7 +67,7 @@ public class PartFluidPatternTerminalEx extends FCBasePart {
if (newStack != null) {
NBTTagCompound data = newStack.getTagCompound();
this.setCombineMode(data.getInteger("combine") == 1);
this.setBeSubstitute(data.getBoolean("beSubstitute"));
this.setBeSubstitute(details.canBeSubstitute());
}
this.setInverted(inputsCount <= 8 && outputCount > 8);
this.setActivePage(0);
@@ -219,68 +120,14 @@ public class PartFluidPatternTerminalEx extends FCBasePart {
this.getHost().markForSave();
}
public boolean shouldCombine() {
return this.combine;
}
public void setCombineMode(boolean shouldCombine) {
this.combine = shouldCombine;
}
public boolean isSubstitution() {
return this.substitute;
}
public boolean isPrioritize() {
return this.prioritize;
}
public void setBeSubstitute(boolean canBeSubstitute) {
this.beSubstitute = canBeSubstitute;
}
public boolean canBeSubstitute() {
return this.beSubstitute;
}
public void setSubstitution(boolean canSubstitute) {
this.substitute = canSubstitute;
}
public void setPrioritization(boolean canPrioritize) {
this.prioritize = canPrioritize;
}
public void onChangeCrafting(IAEItemStack[] newCrafting, IAEItemStack[] newOutput) {
IInventory crafting = this.getInventoryByName("crafting");
IInventory output = this.getInventoryByName("output");
if (crafting instanceof AppEngInternalInventory && output instanceof AppEngInternalInventory) {
for (int x = 0; x < crafting.getSizeInventory() && x < newCrafting.length; x++) {
final IAEItemStack item = newCrafting[x];
crafting.setInventorySlotContents(x, item == null ? null : item.getItemStack());
}
for (int x = 0; x < output.getSizeInventory() && x < newOutput.length; x++) {
final IAEItemStack item = newOutput[x];
output.setInventorySlotContents(x, item == null ? null : item.getItemStack());
}
}
@Override
public void setCraftingRecipe(final boolean craftingMode) {
this.craftingMode = false;
}
@Override
public IInventory getInventoryByName(final String name) {
if (name.equals("crafting")) {
return this.crafting;
}
if (name.equals("output")) {
return this.output;
}
if (name.equals("pattern")) {
return this.pattern;
}
return super.getInventoryByName(name);
public boolean isCraftingRecipe() {
return false;
}
@Override
@@ -302,20 +149,4 @@ public class PartFluidPatternTerminalEx extends FCBasePart {
public boolean isLightSource() {
return false;
}
public boolean isInverted() {
return inverted;
}
public void setInverted(boolean inverted) {
this.inverted = inverted;
}
public int getActivePage() {
return this.activePage;
}
public void setActivePage(int activePage) {
this.activePage = activePage;
}
}
@@ -1,22 +1,11 @@
package com.glodblock.github.common.parts;
import appeng.api.config.SecurityPermissions;
import appeng.api.networking.IGridHost;
import appeng.core.sync.GuiBridge;
import appeng.util.Platform;
import com.glodblock.github.client.textures.FCPartsTexture;
import com.glodblock.github.inventory.InventoryHandler;
import com.glodblock.github.common.parts.base.FCPart;
import com.glodblock.github.inventory.gui.GuiType;
import com.glodblock.github.util.BlockPos;
import com.glodblock.github.util.Util;
import java.util.Objects;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.Vec3;
public class PartFluidTerminal extends FCBasePart {
public class PartFluidTerminal extends FCPart {
private static final FCPartsTexture FRONT_BRIGHT_ICON = FCPartsTexture.PartFluidTerminal_Bright;
private static final FCPartsTexture FRONT_DARK_ICON = FCPartsTexture.PartFluidTerminal_Colored;
private static final FCPartsTexture FRONT_COLORED_ICON = FCPartsTexture.PartFluidTerminal_Dark;
@@ -51,42 +40,7 @@ public class PartFluidTerminal extends FCBasePart {
}
@Override
public boolean onPartActivate(final EntityPlayer player, final Vec3 pos) {
TileEntity te = this.getTile();
BlockPos tePos = new BlockPos(te);
if (Platform.isWrench(player, player.inventory.getCurrentItem(), tePos.getX(), tePos.getY(), tePos.getZ())) {
return super.onPartActivate(player, pos);
}
if (Platform.isServer()) {
if (Util.hasPermission(player, SecurityPermissions.INJECT, (IGridHost) this)
|| Util.hasPermission(player, SecurityPermissions.EXTRACT, (IGridHost) this)) {
InventoryHandler.openGui(
player,
te.getWorldObj(),
tePos,
Objects.requireNonNull(Util.from(getSide())),
GuiType.FLUID_TERMINAL);
} else {
player.addChatComponentMessage(new ChatComponentText("You don't have permission to view."));
}
}
return true;
}
@Override
public GuiBridge getGui(final EntityPlayer p) {
int x = (int) p.posX;
int y = (int) p.posY;
int z = (int) p.posZ;
if (this.getHost().getTile() != null) {
x = this.getTile().xCoord;
y = this.getTile().yCoord;
z = this.getTile().zCoord;
}
if (GuiBridge.GUI_WIRELESS_TERM.hasPermissions(this.getHost().getTile(), x, y, z, this.getSide(), p)) {
return GuiBridge.GUI_WIRELESS_TERM;
}
return GuiBridge.GUI_ME;
public GuiType getGui() {
return GuiType.FLUID_TERMINAL;
}
}
@@ -0,0 +1,155 @@
package com.glodblock.github.common.parts.base;
import appeng.api.storage.data.IAEItemStack;
import appeng.tile.inventory.AppEngInternalInventory;
import java.util.List;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
public abstract class FCFluidEncodeTerminal extends FCPart {
protected AppEngInternalInventory crafting;
protected AppEngInternalInventory output;
protected final AppEngInternalInventory pattern = new AppEngInternalInventory(this, 2);
protected boolean craftingMode = true;
protected boolean substitute = false;
protected boolean combine = false;
protected boolean prioritize = false;
protected boolean inverted = false;
protected boolean beSubstitute = false;
protected int activePage = 0;
public FCFluidEncodeTerminal(ItemStack is) {
super(is, true);
}
@Override
public void getDrops(final List<ItemStack> drops, final boolean wrenched) {
super.getDrops(drops, wrenched);
for (final ItemStack is : this.pattern) {
if (is != null) {
drops.add(is);
}
}
}
@Override
public void readFromNBT(final NBTTagCompound data) {
super.readFromNBT(data);
this.setCraftingRecipe(data.getBoolean("craftingMode"));
this.setSubstitution(data.getBoolean("substitute"));
this.setCombineMode(data.getBoolean("combine"));
this.setBeSubstitute(data.getBoolean("beSubstitute"));
this.setPrioritization(data.getBoolean("priorization"));
this.setInverted(data.getBoolean("inverted"));
this.setActivePage(data.getInteger("activePage"));
this.pattern.readFromNBT(data, "pattern");
this.output.readFromNBT(data, "outputList");
this.crafting.readFromNBT(data, "craftingGrid");
}
@Override
public void writeToNBT(final NBTTagCompound data) {
super.writeToNBT(data);
data.setBoolean("craftingMode", this.craftingMode);
data.setBoolean("combine", this.combine);
data.setBoolean("beSubstitute", this.beSubstitute);
data.setBoolean("priorization", this.prioritize);
data.setBoolean("substitute", this.substitute);
data.setBoolean("inverted", this.inverted);
data.setInteger("activePage", this.activePage);
this.pattern.writeToNBT(data, "pattern");
this.output.writeToNBT(data, "outputList");
this.crafting.writeToNBT(data, "craftingGrid");
}
public boolean shouldCombine() {
return this.combine;
}
public void setCombineMode(boolean shouldCombine) {
this.combine = shouldCombine;
}
public boolean isSubstitution() {
return this.substitute;
}
public boolean isPrioritize() {
return this.prioritize;
}
public void setBeSubstitute(boolean canBeSubstitute) {
this.beSubstitute = canBeSubstitute;
}
public boolean canBeSubstitute() {
return this.beSubstitute;
}
public void setSubstitution(boolean canSubstitute) {
this.substitute = canSubstitute;
}
public void setPrioritization(boolean canPrioritize) {
this.prioritize = canPrioritize;
}
public boolean isInverted() {
return inverted;
}
public void setInverted(boolean inverted) {
this.inverted = inverted;
}
public int getActivePage() {
return this.activePage;
}
public void setActivePage(int activePage) {
this.activePage = activePage;
}
public void setCraftingRecipe(final boolean craftingMode) {
this.craftingMode = craftingMode;
}
public boolean isCraftingRecipe() {
return this.craftingMode;
}
public void onChangeCrafting(IAEItemStack[] newCrafting, IAEItemStack[] newOutput) {
IInventory crafting = this.getInventoryByName("crafting");
IInventory output = this.getInventoryByName("output");
if (crafting instanceof AppEngInternalInventory && output instanceof AppEngInternalInventory) {
for (int x = 0; x < crafting.getSizeInventory() && x < newCrafting.length; x++) {
final IAEItemStack item = newCrafting[x];
crafting.setInventorySlotContents(x, item == null ? null : item.getItemStack());
}
for (int x = 0; x < output.getSizeInventory() && x < newOutput.length; x++) {
final IAEItemStack item = newOutput[x];
output.setInventorySlotContents(x, item == null ? null : item.getItemStack());
}
}
}
@Override
public IInventory getInventoryByName(final String name) {
if (name.equals("crafting")) {
return this.crafting;
}
if (name.equals("output")) {
return this.output;
}
if (name.equals("pattern")) {
return this.pattern;
}
return super.getInventoryByName(name);
}
}
@@ -1,12 +1,10 @@
package com.glodblock.github.common.parts;
package com.glodblock.github.common.parts.base;
import appeng.api.config.Settings;
import appeng.api.config.SortDir;
import appeng.api.config.SortOrder;
import appeng.api.config.ViewItems;
import appeng.api.config.*;
import appeng.api.implementations.IPowerChannelState;
import appeng.api.implementations.tiles.IViewCellStorage;
import appeng.api.networking.GridFlags;
import appeng.api.networking.IGridHost;
import appeng.api.networking.events.MENetworkBootingStatusChange;
import appeng.api.networking.events.MENetworkEventSubscribe;
import appeng.api.networking.events.MENetworkPowerStatusChange;
@@ -18,7 +16,6 @@ import appeng.api.storage.data.IAEFluidStack;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.util.IConfigManager;
import appeng.client.texture.CableBusTextures;
import appeng.core.sync.GuiBridge;
import appeng.me.GridAccessException;
import appeng.parts.AEBasePart;
import appeng.tile.inventory.AppEngInternalInventory;
@@ -28,11 +25,16 @@ import appeng.util.ConfigManager;
import appeng.util.IConfigManagerHost;
import appeng.util.Platform;
import com.glodblock.github.client.textures.FCPartsTexture;
import com.glodblock.github.inventory.InventoryHandler;
import com.glodblock.github.inventory.gui.GuiType;
import com.glodblock.github.util.BlockPos;
import com.glodblock.github.util.Util;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf;
import java.io.IOException;
import java.util.List;
import java.util.Objects;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.entity.player.EntityPlayer;
@@ -40,12 +42,13 @@ import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.util.Vec3;
import net.minecraftforge.common.util.ForgeDirection;
public abstract class FCBasePart extends AEBasePart
public abstract class FCPart extends AEBasePart
implements IPowerChannelState, ITerminalHost, IConfigManagerHost, IViewCellStorage, IAEAppEngInventory {
protected static final int POWERED_FLAG = 4;
@@ -59,11 +62,11 @@ public abstract class FCBasePart extends AEBasePart
private final IConfigManager cm = new ConfigManager(this);
private final AppEngInternalInventory viewCell = new AppEngInternalInventory(this, 5);
public FCBasePart(final ItemStack is) {
public FCPart(final ItemStack is) {
this(is, false);
}
protected FCBasePart(final ItemStack is, final boolean requireChannel) {
protected FCPart(final ItemStack is, final boolean requireChannel) {
super(is);
if (requireChannel) {
@@ -137,9 +140,7 @@ public abstract class FCBasePart extends AEBasePart
this.viewCell.writeToNBT(data, "viewCell");
}
public GuiBridge getGui(final EntityPlayer player) {
return GuiBridge.GUI_ME;
}
public abstract GuiType getGui();
@Override
public void writeToStream(final ByteBuf data) throws IOException {
@@ -148,15 +149,15 @@ public abstract class FCBasePart extends AEBasePart
try {
if (this.getProxy().getEnergy().isNetworkPowered()) {
this.clientFlags = this.getClientFlags() | FCBasePart.POWERED_FLAG;
this.clientFlags = this.getClientFlags() | FCPart.POWERED_FLAG;
}
if (this.getProxy().getPath().isNetworkBooting()) {
this.clientFlags = this.getClientFlags() | FCBasePart.BOOTING_FLAG;
this.clientFlags = this.getClientFlags() | FCPart.BOOTING_FLAG;
}
if (this.getProxy().getNode().meetsChannelRequirements()) {
this.clientFlags = this.getClientFlags() | FCBasePart.CHANNEL_FLAG;
this.clientFlags = this.getClientFlags() | FCPart.CHANNEL_FLAG;
}
} catch (final GridAccessException e) {
// um.. nothing.
@@ -215,18 +216,21 @@ public abstract class FCBasePart extends AEBasePart
@Override
public boolean onPartActivate(final EntityPlayer player, final Vec3 pos) {
if (!onPartActivate0(player, pos)) {
if (!player.isSneaking()) {
if (Platform.isClient()) {
return true;
}
Platform.openGUI(player, this.getHost().getTile(), this.getSide(), this.getGui(player));
return true;
TileEntity te = this.getTile();
BlockPos tePos = new BlockPos(te);
if (Platform.isWrench(player, player.inventory.getCurrentItem(), tePos.getX(), tePos.getY(), tePos.getZ())) {
return super.onPartActivate(player, pos);
}
if (Platform.isServer()) {
if (Util.hasPermission(player, SecurityPermissions.INJECT, (IGridHost) this)
|| Util.hasPermission(player, SecurityPermissions.EXTRACT, (IGridHost) this)) {
InventoryHandler.openGui(
player, te.getWorldObj(), tePos, Objects.requireNonNull(Util.from(getSide())), getGui());
} else {
player.addChatComponentMessage(new ChatComponentText("You don't have permission to view."));
}
}
return false;
return true;
}
@Override
@@ -251,7 +255,6 @@ public abstract class FCBasePart extends AEBasePart
te.yCoord + this.getSide().offsetY,
te.zCoord + this.getSide().offsetZ);
}
return (int) (emit * (this.opacity / 255.0f));
}
@@ -261,7 +264,7 @@ public abstract class FCBasePart extends AEBasePart
if (Platform.isServer()) {
return this.getProxy().getEnergy().isNetworkPowered();
} else {
return ((this.getClientFlags() & FCBasePart.POWERED_FLAG) == FCBasePart.POWERED_FLAG);
return ((this.getClientFlags() & FCPart.POWERED_FLAG) == FCPart.POWERED_FLAG);
}
} catch (final GridAccessException e) {
return false;
@@ -309,8 +312,8 @@ public abstract class FCBasePart extends AEBasePart
@Override
public final boolean isActive() {
if (!this.isLightSource()) {
return ((this.getClientFlags() & (FCBasePart.CHANNEL_FLAG | FCBasePart.POWERED_FLAG))
== (FCBasePart.CHANNEL_FLAG | FCBasePart.POWERED_FLAG));
return ((this.getClientFlags() & (FCPart.CHANNEL_FLAG | FCPart.POWERED_FLAG))
== (FCPart.CHANNEL_FLAG | FCPart.POWERED_FLAG));
} else {
return this.isPowered();
}
@@ -407,9 +410,9 @@ public abstract class FCBasePart extends AEBasePart
rh.setBounds(4, 4, 13, 12, 12, 14);
rh.renderBlock(x, y, z, renderer);
final boolean hasChan = (this.getClientFlags() & (FCBasePart.POWERED_FLAG | FCBasePart.CHANNEL_FLAG))
== (FCBasePart.POWERED_FLAG | FCBasePart.CHANNEL_FLAG);
final boolean hasPower = (this.getClientFlags() & FCBasePart.POWERED_FLAG) == FCBasePart.POWERED_FLAG;
final boolean hasChan = (this.getClientFlags() & (FCPart.POWERED_FLAG | FCPart.CHANNEL_FLAG))
== (FCPart.POWERED_FLAG | FCPart.CHANNEL_FLAG);
final boolean hasPower = (this.getClientFlags() & FCPart.POWERED_FLAG) == FCPart.POWERED_FLAG;
if (hasChan) {
final int l = 14;
@@ -1,4 +1,4 @@
package com.glodblock.github.common.parts;
package com.glodblock.github.common.parts.base;
import appeng.api.config.RedstoneMode;
import appeng.api.config.Upgrades;
@@ -26,12 +26,12 @@ import net.minecraft.util.IIcon;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
public abstract class PartSharedFluidBus extends PartUpgradeable implements IGridTickable {
public abstract class FCSharedFluidBus extends PartUpgradeable implements IGridTickable {
private final AppEngInternalAEInventory config = new AppEngInternalAEInventory(this, 9);
private boolean lastRedstone;
public PartSharedFluidBus(ItemStack is) {
public FCSharedFluidBus(ItemStack is) {
super(is);
}