3c737d8d1e
# Conflicts: # src/main/java/appeng/client/gui/AEBaseScreen.java # src/main/java/appeng/client/gui/widgets/CustomSlotWidget.java # src/main/java/appeng/client/gui/widgets/ITooltip.java # src/main/java/appeng/client/gui/widgets/IconButton.java # src/main/java/appeng/client/gui/widgets/ProgressBar.java # src/main/java/appeng/client/gui/widgets/SettingToggleButton.java # src/main/java/appeng/client/gui/widgets/ToggleButton.java # src/main/java/appeng/container/slot/PlayerInvSlot.java # src/main/java/appeng/fluids/client/gui/widgets/FluidSlotWidget.java # src/main/java/appeng/fluids/client/gui/widgets/FluidTankWidget.java # src/main/java/appeng/fluids/client/gui/widgets/OptionalFluidSlotWidget.java # src/main/java/appeng/fluids/parts/FluidAnnihilationPlanePart.java # src/main/java/appeng/parts/automation/AbstractFormationPlanePart.java # src/main/java/appeng/parts/automation/AnnihilationPlanePart.java # src/main/java/appeng/parts/automation/FormationPlanePart.java # src/main/java/appeng/parts/automation/IdentityAnnihilationPlanePart.java # src/main/java/appeng/parts/p2p/FluidP2PTunnelPart.java
140 lines
3.8 KiB
Java
140 lines
3.8 KiB
Java
|
|
package appeng.parts.automation;
|
|
|
|
import net.minecraft.block.entity.BlockEntity;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.nbt.CompoundTag;
|
|
import net.minecraft.util.math.BlockPos;
|
|
import net.minecraft.util.math.Direction;
|
|
import net.minecraft.world.BlockView;
|
|
|
|
import appeng.api.config.Actionable;
|
|
import appeng.api.config.Settings;
|
|
import appeng.api.networking.security.IActionSource;
|
|
import appeng.api.parts.IPartCollisionHelper;
|
|
import appeng.api.storage.IMEInventory;
|
|
import appeng.api.storage.cells.ICellContainer;
|
|
import appeng.api.storage.cells.ICellInventory;
|
|
import appeng.api.storage.data.IAEStack;
|
|
import appeng.api.storage.data.IItemList;
|
|
import appeng.api.util.AECableType;
|
|
import appeng.api.util.AEPartLocation;
|
|
import appeng.api.util.IConfigManager;
|
|
import appeng.helpers.IPriorityHost;
|
|
|
|
public abstract class AbstractFormationPlanePart<T extends IAEStack<T>> extends UpgradeablePart
|
|
implements ICellContainer, IPriorityHost, IMEInventory<T> {
|
|
|
|
private boolean wasActive = false;
|
|
private int priority = 0;
|
|
protected boolean blocked = false;
|
|
private final PlaneConnectionHelper connectionHelper = new PlaneConnectionHelper(this);
|
|
|
|
public AbstractFormationPlanePart(ItemStack is) {
|
|
super(is);
|
|
}
|
|
|
|
protected abstract void updateHandler();
|
|
|
|
@Override
|
|
protected int getUpgradeSlots() {
|
|
return 5;
|
|
}
|
|
|
|
@Override
|
|
public void upgradesChanged() {
|
|
this.updateHandler();
|
|
}
|
|
|
|
@Override
|
|
public void updateSetting(final IConfigManager manager, final Settings settingName, final Enum<?> newValue) {
|
|
this.updateHandler();
|
|
this.getHost().markForSave();
|
|
}
|
|
|
|
public void stateChanged() {
|
|
final boolean currentActive = this.getProxy().isActive();
|
|
if (this.wasActive != currentActive) {
|
|
this.wasActive = currentActive;
|
|
this.updateHandler();
|
|
this.getHost().markForUpdate();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void getBoxes(final IPartCollisionHelper bch) {
|
|
connectionHelper.getBoxes(bch);
|
|
}
|
|
|
|
public PlaneConnections getConnections() {
|
|
return connectionHelper.getConnections();
|
|
}
|
|
|
|
@Override
|
|
public void onneighborUpdate(BlockView w, BlockPos pos, BlockPos neighbor) {
|
|
if (pos.offset(this.getSide().getFacing()).equals(neighbor)) {
|
|
final BlockEntity te = this.getHost().getTile();
|
|
final AEPartLocation side = this.getSide();
|
|
|
|
final BlockPos tePos = te.getPos().offset(side.getFacing());
|
|
|
|
this.blocked = isBlocking(w, tePos);
|
|
} else {
|
|
connectionHelper.updateConnections();
|
|
}
|
|
}
|
|
|
|
protected boolean isBlocking(BlockView w, BlockPos pos) {
|
|
return !w.getBlockState(pos).getMaterial().isReplaceable();
|
|
}
|
|
|
|
@Override
|
|
public float getCableConnectionLength(AECableType cable) {
|
|
return 1;
|
|
}
|
|
|
|
@Override
|
|
public T extractItems(final T request, final Actionable mode, final IActionSource src) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public IItemList<T> getAvailableItems(final IItemList<T> out) {
|
|
return out;
|
|
}
|
|
|
|
@Override
|
|
public void readFromNBT(final CompoundTag data) {
|
|
super.readFromNBT(data);
|
|
this.priority = data.getInt("priority");
|
|
}
|
|
|
|
@Override
|
|
public void writeToNBT(final CompoundTag data) {
|
|
super.writeToNBT(data);
|
|
data.putInt("priority", this.getPriority());
|
|
}
|
|
|
|
@Override
|
|
public int getPriority() {
|
|
return this.priority;
|
|
}
|
|
|
|
@Override
|
|
public void setPriority(final int newValue) {
|
|
this.priority = newValue;
|
|
this.getHost().markForSave();
|
|
this.updateHandler();
|
|
}
|
|
|
|
@Override
|
|
public void blinkCell(final int slot) {
|
|
// :P
|
|
}
|
|
|
|
@Override
|
|
public void saveChanges(final ICellInventory<?> cell) {
|
|
// nope!
|
|
}
|
|
}
|