Remove covers and the cutting tool

This commit is contained in:
raoulvdberge
2019-10-15 21:57:41 +02:00
parent 9ed9171046
commit 4036926487
42 changed files with 13 additions and 2221 deletions

View File

@@ -206,7 +206,6 @@ public final class RS {
e.getRegistry().register(new SecurityCardItem());
e.getRegistry().register(new NetworkCardItem());
e.getRegistry().register(new CuttingToolItem());
for (ItemStorageType type : ItemStorageType.values()) {
if (type != ItemStorageType.CREATIVE) {

View File

@@ -7,8 +7,6 @@ public final class RSItems {
public static final ItemWirelessGrid WIRELESS_GRID = null;
public static final ItemWirelessFluidGrid WIRELESS_FLUID_GRID = null;
public static final ItemWirelessCraftingMonitor WIRELESS_CRAFTING_MONITOR = null;
public static final ItemCover COVER = null;
public static final ItemHollowCover HOLLOW_COVER = null;
@ObjectHolder(RS.ID + ":quartz_enriched_iron")
public static final QuartzEnrichedIronItem QUARTZ_ENRICHED_IRON = null;
@@ -24,8 +22,6 @@ public final class RSItems {
public static final FilterItem FILTER = null;
@ObjectHolder(RS.ID + ":storage_housing")
public static final StorageHousingItem STORAGE_HOUSING = null;
@ObjectHolder(RS.ID + ":cutting_tool")
public static final CuttingToolItem CUTTING_TOOL = null;
@ObjectHolder(RS.ID + ":network_card")
public static final NetworkCardItem NETWORK_CARD = null;
@ObjectHolder(RS.ID + ":security_card")

View File

@@ -67,10 +67,6 @@ public class RSOldConfig {
public int readerWriterChannelEnergyCapacity;
//endregion
//region Covers
public boolean hideCovers;
//endregion
//region Autocrafting
public int calculationTimeoutMs;
//endregion
@@ -83,7 +79,6 @@ public class RSOldConfig {
private static final String WIRELESS_FLUID_GRID = "wirelessFluidGrid";
private static final String WIRELESS_CRAFTING_MONITOR = "wirelessCraftingMonitor";
private static final String READER_WRITER = "readerWriter";
private static final String COVERS = "covers";
private static final String AUTOCRAFTING = "autocrafting";
//endregion
@@ -154,10 +149,6 @@ public class RSOldConfig {
readerWriterChannelEnergyCapacity = config.getInt("channelEnergyCapacity", READER_WRITER, 16000, 0, Integer.MAX_VALUE, "The energy capacity of energy channels");
//endregion
//region Covers
hideCovers = config.getBoolean("hideCovers", COVERS, false, "Whether to hide covers in the creative mode tabs and JEI");
//endregion
//region Autocrafting
calculationTimeoutMs = config.getInt("calculationTimeoutMs", AUTOCRAFTING, 5000, 5000, Integer.MAX_VALUE, "The autocrafting calculation timeout in milliseconds, tasks taking longer than this to calculate (NOT execute) are cancelled to avoid server strain");
//endregion

View File

@@ -1,24 +1,13 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.node;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.Direction;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.common.util.Constants;
import net.minecraftforge.items.IItemHandler;
import javax.annotation.Nullable;
public class CableNetworkNode extends NetworkNode implements ICoverable {
public class CableNetworkNode extends NetworkNode {
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "cable");
private static final String NBT_COVERS = "Covers";
private CoverManager coverManager = new CoverManager(this);
public CableNetworkNode(World world, BlockPos pos) {
super(world, pos);
}
@@ -32,38 +21,4 @@ public class CableNetworkNode extends NetworkNode implements ICoverable {
public ResourceLocation getId() {
return ID;
}
@Override
public CoverManager getCoverManager() {
return coverManager;
}
@Override
public boolean canConduct(@Nullable Direction direction) {
return coverManager.canConduct(direction);
}
@Override
public CompoundNBT write(CompoundNBT tag) {
super.write(tag);
tag.put(NBT_COVERS, coverManager.writeToNbt());
return tag;
}
@Override
public void read(CompoundNBT tag) {
super.read(tag);
if (tag.contains(NBT_COVERS)) {
coverManager.readFromNbt(tag.getList(NBT_COVERS, Constants.NBT.TAG_COMPOUND));
}
}
@Nullable
@Override
public IItemHandler getDrops() {
return coverManager.getAsInventory();
}
}

View File

@@ -1,7 +0,0 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.node;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
public interface ICoverable {
CoverManager getCoverManager();
}

View File

@@ -4,7 +4,6 @@ import com.mojang.authlib.GameProfile;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.util.Action;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
import com.raoulvdberge.refinedstorage.container.slot.filter.FilterSlot;
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
@@ -33,24 +32,20 @@ import net.minecraft.world.World;
import net.minecraft.world.server.ServerWorld;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.BlockSnapshot;
import net.minecraftforge.common.util.Constants;
import net.minecraftforge.common.util.FakePlayer;
import net.minecraftforge.common.util.FakePlayerFactory;
import net.minecraftforge.event.world.BlockEvent;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.IItemHandlerModifiable;
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
import javax.annotation.Nullable;
import java.util.UUID;
public class NetworkNodeConstructor extends NetworkNode implements IComparable, IType, ICoverable {
public class NetworkNodeConstructor extends NetworkNode implements IComparable, IType {
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "constructor");
private static final String NBT_COMPARE = "Compare";
private static final String NBT_TYPE = "Type";
private static final String NBT_DROP = "Drop";
private static final String NBT_COVERS = "Covers";
private static final String NBT_FLUID_FILTERS = "FluidFilters";
private static final int BASE_SPEED = 20;
@@ -64,8 +59,6 @@ public class NetworkNodeConstructor extends NetworkNode implements IComparable,
private int type = IType.ITEMS;
private boolean drop = false;
private CoverManager coverManager = new CoverManager(this);
public NetworkNodeConstructor(World world, BlockPos pos) {
super(world, pos);
}
@@ -303,8 +296,6 @@ public class NetworkNodeConstructor extends NetworkNode implements IComparable,
StackUtils.writeItems(upgrades, 1, tag);
tag.put(NBT_COVERS, coverManager.writeToNbt());
return tag;
}
@@ -339,10 +330,6 @@ public class NetworkNodeConstructor extends NetworkNode implements IComparable,
drop = tag.getBoolean(NBT_DROP);
}
if (tag.contains(NBT_COVERS)) {
coverManager.readFromNbt(tag.getList(NBT_COVERS, Constants.NBT.TAG_COMPOUND));
}
StackUtils.readItems(itemFilters, 0, tag);
if (tag.contains(NBT_FLUID_FILTERS)) {
@@ -364,12 +351,7 @@ public class NetworkNodeConstructor extends NetworkNode implements IComparable,
@Override
public IItemHandler getDrops() {
return new CombinedInvWrapper(upgrades, coverManager.getAsInventory());
}
@Override
public boolean canConduct(@Nullable Direction direction) {
return coverManager.canConduct(direction);
return upgrades;
}
@Override
@@ -398,9 +380,4 @@ public class NetworkNodeConstructor extends NetworkNode implements IComparable,
public FluidInventory getFluidFilters() {
return fluidFilters;
}
@Override
public CoverManager getCoverManager() {
return coverManager;
}
}

View File

@@ -4,7 +4,6 @@ import com.mojang.authlib.GameProfile;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.util.Action;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler;
@@ -22,7 +21,6 @@ import net.minecraft.inventory.InventoryHelper;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.server.management.PlayerProfileCache;
import net.minecraft.util.Direction;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.AxisAlignedBB;
@@ -31,28 +29,24 @@ import net.minecraft.world.World;
import net.minecraft.world.chunk.Chunk;
import net.minecraft.world.server.ServerWorld;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.Constants;
import net.minecraftforge.common.util.FakePlayer;
import net.minecraftforge.common.util.FakePlayerFactory;
import net.minecraftforge.event.world.BlockEvent;
import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.IItemHandlerModifiable;
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class NetworkNodeDestructor extends NetworkNode implements IComparable, IWhitelistBlacklist, IType, ICoverable {
public class NetworkNodeDestructor extends NetworkNode implements IComparable, IWhitelistBlacklist, IType {
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "destructor");
private static final String NBT_COMPARE = "Compare";
private static final String NBT_MODE = "Mode";
private static final String NBT_TYPE = "Type";
private static final String NBT_PICKUP = "Pickup";
private static final String NBT_COVERS = "Covers";
private static final String NBT_FLUID_FILTERS = "FluidFilters";
private static final int BASE_SPEED = 20;
@@ -67,8 +61,6 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
private int type = IType.ITEMS;
private boolean pickupItem = false;
private CoverManager coverManager = new CoverManager(this);
public NetworkNodeDestructor(World world, BlockPos pos) {
super(world, pos);
}
@@ -232,10 +224,6 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
super.read(tag);
StackUtils.readItems(upgrades, 1, tag);
if (tag.contains(NBT_COVERS)) {
coverManager.readFromNbt(tag.getList(NBT_COVERS, Constants.NBT.TAG_COMPOUND));
}
}
@Override
@@ -249,8 +237,6 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
StackUtils.writeItems(upgrades, 1, tag);
tag.put(NBT_COVERS, coverManager.writeToNbt());
return tag;
}
@@ -312,7 +298,7 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
@Override
public IItemHandler getDrops() {
return new CombinedInvWrapper(upgrades, coverManager.getAsInventory());
return upgrades;
}
@Override
@@ -337,11 +323,6 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
return fluidFilters;
}
@Override
public boolean canConduct(@Nullable Direction direction) {
return coverManager.canConduct(direction);
}
public boolean isPickupItem() {
return pickupItem;
}
@@ -349,9 +330,4 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
public void setPickupItem(boolean pickupItem) {
this.pickupItem = pickupItem;
}
@Override
public CoverManager getCoverManager() {
return coverManager;
}
}

View File

@@ -3,7 +3,6 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.node;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.util.Action;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler;
@@ -16,27 +15,21 @@ import com.raoulvdberge.refinedstorage.util.StackUtils;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.Direction;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.common.util.Constants;
import net.minecraftforge.fluids.FluidAttributes;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.IItemHandlerModifiable;
import net.minecraftforge.items.ItemHandlerHelper;
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
import javax.annotation.Nullable;
public class NetworkNodeExporter extends NetworkNode implements IComparable, IType, ICoverable {
public class NetworkNodeExporter extends NetworkNode implements IComparable, IType {
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "exporter");
private static final String NBT_COMPARE = "Compare";
private static final String NBT_TYPE = "Type";
private static final String NBT_COVERS = "Covers";
private static final String NBT_FLUID_FILTERS = "FluidFilters";
private BaseItemHandler itemFilters = new BaseItemHandler(9, new NetworkNodeListener(this));
@@ -47,8 +40,6 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy
private int compare = IComparer.COMPARE_NBT;
private int type = IType.ITEMS;
private CoverManager coverManager = new CoverManager(this);
private int filterSlot;
public NetworkNodeExporter(World world, BlockPos pos) {
@@ -177,8 +168,6 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy
StackUtils.writeItems(upgrades, 1, tag);
tag.put(NBT_COVERS, coverManager.writeToNbt());
return tag;
}
@@ -201,10 +190,6 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy
super.read(tag);
StackUtils.readItems(upgrades, 1, tag);
if (tag.contains(NBT_COVERS)) {
coverManager.readFromNbt(tag.getList(NBT_COVERS, Constants.NBT.TAG_COMPOUND));
}
}
@Override
@@ -232,7 +217,7 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy
@Override
public IItemHandler getDrops() {
return new CombinedInvWrapper(upgrades, coverManager.getAsInventory());
return upgrades;
}
@Override
@@ -256,14 +241,4 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy
public FluidInventory getFluidFilters() {
return fluidFilters;
}
@Override
public boolean canConduct(@Nullable Direction direction) {
return coverManager.canConduct(direction);
}
@Override
public CoverManager getCoverManager() {
return coverManager;
}
}

View File

@@ -11,7 +11,6 @@ import com.raoulvdberge.refinedstorage.api.storage.externalstorage.IExternalStor
import com.raoulvdberge.refinedstorage.api.storage.externalstorage.IStorageExternal;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.FluidStorageCache;
import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.ItemStorageCache;
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
@@ -25,29 +24,24 @@ import com.raoulvdberge.refinedstorage.util.StackUtils;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Direction;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.world.World;
import net.minecraftforge.common.util.Constants;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.IItemHandlerModifiable;
import javax.annotation.Nullable;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
public class NetworkNodeExternalStorage extends NetworkNode implements IStorageProvider, IStorageScreen, IComparable, IWhitelistBlacklist, IPrioritizable, IType, IAccessType, IExternalStorageContext, ICoverable {
public class NetworkNodeExternalStorage extends NetworkNode implements IStorageProvider, IStorageScreen, IComparable, IWhitelistBlacklist, IPrioritizable, IType, IAccessType, IExternalStorageContext {
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "external_storage");
private static final String NBT_PRIORITY = "Priority";
private static final String NBT_COMPARE = "Compare";
private static final String NBT_MODE = "Mode";
private static final String NBT_TYPE = "Type";
private static final String NBT_COVERS = "Covers";
private static final String NBT_FLUID_FILTERS = "FluidFilters";
private BaseItemHandler itemFilters = new BaseItemHandler(9, new NetworkNodeListener(this));
@@ -60,8 +54,6 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
private AccessType accessType = AccessType.INSERT_EXTRACT;
private int networkTicks;
private CoverManager coverManager = new CoverManager(this);
private List<IStorageExternal<ItemStack>> itemStorages = new CopyOnWriteArrayList<>();
private List<IStorageExternal<FluidStack>> fluidStorages = new CopyOnWriteArrayList<>();
@@ -116,24 +108,6 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
return ID;
}
@Override
public void read(CompoundNBT tag) {
super.read(tag);
if (tag.contains(NBT_COVERS)) {
coverManager.readFromNbt(tag.getList(NBT_COVERS, Constants.NBT.TAG_COMPOUND));
}
}
@Override
public CompoundNBT write(CompoundNBT tag) {
super.write(tag);
tag.put(NBT_COVERS, coverManager.writeToNbt());
return tag;
}
@Override
public CompoundNBT writeConfiguration(CompoundNBT tag) {
super.writeConfiguration(tag);
@@ -367,20 +341,4 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
public List<IStorageExternal<FluidStack>> getFluidStorages() {
return fluidStorages;
}
@Override
public boolean canConduct(@Nullable Direction direction) {
return coverManager.canConduct(direction);
}
@Nullable
@Override
public IItemHandler getDrops() {
return coverManager.getAsInventory();
}
@Override
public CoverManager getCoverManager() {
return coverManager;
}
}

View File

@@ -3,7 +3,6 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.node;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.util.Action;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler;
@@ -18,27 +17,21 @@ import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Direction;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.common.util.Constants;
import net.minecraftforge.fluids.FluidAttributes;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.IItemHandlerModifiable;
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
import javax.annotation.Nullable;
public class NetworkNodeImporter extends NetworkNode implements IComparable, IWhitelistBlacklist, IType, ICoverable {
public class NetworkNodeImporter extends NetworkNode implements IComparable, IWhitelistBlacklist, IType {
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "importer");
private static final String NBT_COMPARE = "Compare";
private static final String NBT_MODE = "Mode";
private static final String NBT_TYPE = "Type";
private static final String NBT_COVERS = "Covers";
private static final String NBT_FLUID_FILTERS = "FLuidFilters";
private BaseItemHandler itemFilters = new BaseItemHandler(9, new NetworkNodeListener(this));
@@ -50,8 +43,6 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IWh
private int mode = IWhitelistBlacklist.BLACKLIST;
private int type = IType.ITEMS;
private CoverManager coverManager = new CoverManager(this);
private int currentSlot;
public NetworkNodeImporter(World world, BlockPos pos) {
@@ -158,10 +149,6 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IWh
super.read(tag);
StackUtils.readItems(upgrades, 1, tag);
if (tag.contains(NBT_COVERS)) {
coverManager.readFromNbt(tag.getList(NBT_COVERS, Constants.NBT.TAG_COMPOUND));
}
}
@Override
@@ -175,8 +162,6 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IWh
StackUtils.writeItems(upgrades, 1, tag);
tag.put(NBT_COVERS, coverManager.writeToNbt());
return tag;
}
@@ -224,12 +209,7 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IWh
@Override
public IItemHandler getDrops() {
return new CombinedInvWrapper(upgrades, coverManager.getAsInventory());
}
@Override
public boolean canConduct(@Nullable Direction direction) {
return coverManager.canConduct(direction);
return upgrades;
}
@Override
@@ -253,9 +233,4 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IWh
public FluidInventory getFluidFilters() {
return fluidFilters;
}
@Override
public CoverManager getCoverManager() {
return coverManager;
}
}

View File

@@ -2,29 +2,21 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.node;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReader;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
import com.raoulvdberge.refinedstorage.block.NodeBlock;
import com.raoulvdberge.refinedstorage.tile.TileReader;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.Direction;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.common.util.Constants;
import javax.annotation.Nullable;
public class NetworkNodeReader extends NetworkNode implements IReader, IGuiReaderWriter, ICoverable {
public class NetworkNodeReader extends NetworkNode implements IReader, IGuiReaderWriter {
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "reader");
private static final String NBT_CHANNEL = "Channel";
private static final String NBT_COVERS = "Covers";
private String channel = "";
private CoverManager coverManager = new CoverManager(this);
public NetworkNodeReader(World world, BlockPos pos) {
super(world, pos);
}
@@ -81,10 +73,6 @@ public class NetworkNodeReader extends NetworkNode implements IReader, IGuiReade
if (tag.contains(NBT_CHANNEL)) {
channel = tag.getString(NBT_CHANNEL);
}
if (tag.contains(NBT_COVERS)) {
coverManager.readFromNbt(tag.getList(NBT_COVERS, Constants.NBT.TAG_COMPOUND));
}
}
@Override
@@ -98,18 +86,6 @@ public class NetworkNodeReader extends NetworkNode implements IReader, IGuiReade
tag.putString(NBT_CHANNEL, channel);
tag.put(NBT_COVERS, coverManager.writeToNbt());
return tag;
}
@Override
public boolean canConduct(@Nullable Direction direction) {
return coverManager.canConduct(direction);
}
@Override
public CoverManager getCoverManager() {
return coverManager;
}
}

View File

@@ -5,32 +5,24 @@ import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel;
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandler;
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IWriter;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
import com.raoulvdberge.refinedstorage.block.NodeBlock;
import com.raoulvdberge.refinedstorage.tile.TileWriter;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.Direction;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.common.util.Constants;
import javax.annotation.Nullable;
public class NetworkNodeWriter extends NetworkNode implements IWriter, IGuiReaderWriter, ICoverable {
public class NetworkNodeWriter extends NetworkNode implements IWriter, IGuiReaderWriter {
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "writer");
private static final String NBT_CHANNEL = "Channel";
private static final String NBT_COVERS = "Covers";
private String channel = "";
private int redstoneStrength;
private int lastRedstoneStrength;
private CoverManager coverManager = new CoverManager(this);
public NetworkNodeWriter(World world, BlockPos pos) {
super(world, pos);
}
@@ -113,10 +105,6 @@ public class NetworkNodeWriter extends NetworkNode implements IWriter, IGuiReade
if (tag.contains(NBT_CHANNEL)) {
channel = tag.getString(NBT_CHANNEL);
}
if (tag.contains(NBT_COVERS)) {
coverManager.readFromNbt(tag.getList(NBT_COVERS, Constants.NBT.TAG_COMPOUND));
}
}
@Override
@@ -130,18 +118,6 @@ public class NetworkNodeWriter extends NetworkNode implements IWriter, IGuiReade
tag.putString(NBT_CHANNEL, channel);
tag.put(NBT_COVERS, coverManager.writeToNbt());
return tag;
}
@Override
public boolean canConduct(@Nullable Direction direction) {
return coverManager.canConduct(direction);
}
@Override
public CoverManager getCoverManager() {
return coverManager;
}
}

View File

@@ -1,21 +0,0 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.node.cover;
import net.minecraft.item.ItemStack;
public class Cover {
private ItemStack stack;
private CoverType type;
public Cover(ItemStack stack, CoverType type) {
this.stack = stack;
this.type = type;
}
public ItemStack getStack() {
return stack;
}
public CoverType getType() {
return type;
}
}

View File

@@ -1,193 +0,0 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.node.cover;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
import com.raoulvdberge.refinedstorage.api.util.Action;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.CableNetworkNode;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.ICoverable;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
import net.minecraft.block.*;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.ListNBT;
import net.minecraft.util.Direction;
import net.minecraft.world.server.ServerWorld;
import net.minecraftforge.items.IItemHandlerModifiable;
import net.minecraftforge.items.ItemStackHandler;
import javax.annotation.Nullable;
import java.util.HashMap;
import java.util.Map;
public class CoverManager {
private static final String NBT_DIRECTION = "Direction";
private static final String NBT_ITEM = "Item";
private static final String NBT_TYPE = "Type";
private Map<Direction, Cover> covers = new HashMap<>();
private NetworkNode node;
public CoverManager(NetworkNode node) {
this.node = node;
}
public boolean canConduct(Direction direction) {
Cover cover = getCover(direction);
if (cover != null && cover.getType() != CoverType.HOLLOW) {
return false;
}
INetworkNode neighbor = API.instance().getNetworkNodeManager((ServerWorld) node.getWorld()).getNode(node.getPos().offset(direction));
if (neighbor instanceof ICoverable) {
cover = ((ICoverable) neighbor).getCoverManager().getCover(direction.getOpposite());
if (cover != null && cover.getType() != CoverType.HOLLOW) {
return false;
}
}
return true;
}
@Nullable
public Cover getCover(Direction facing) {
return covers.get(facing);
}
public boolean hasCover(Direction facing) {
return covers.containsKey(facing);
}
public boolean setCover(Direction facing, @Nullable Cover cover) {
if (cover == null || (isValidCover(cover.getStack()) && !hasCover(facing))) {
if (cover != null) {
if (facing == node.getDirection() && !(node instanceof CableNetworkNode) && cover.getType() != CoverType.HOLLOW) {
return false;
}
}
if (cover == null) {
covers.remove(facing);
} else {
covers.put(facing, cover);
}
node.markDirty();
if (node.getNetwork() != null) {
node.getNetwork().getNodeGraph().invalidate(Action.PERFORM, node.getNetwork().world(), node.getNetwork().getPosition());
}
return true;
}
return false;
}
public void readFromNbt(ListNBT list) {
covers.clear();
for (int i = 0; i < list.size(); ++i) {
CompoundNBT tag = list.getCompound(i);
if (tag.contains(NBT_DIRECTION) && tag.contains(NBT_ITEM)) {
Direction direction = Direction.byIndex(tag.getInt(NBT_DIRECTION));
ItemStack item = ItemStack.read(tag.getCompound(NBT_ITEM));
int type = tag.contains(NBT_TYPE) ? tag.getInt(NBT_TYPE) : 0;
if (type >= CoverType.values().length) {
type = 0;
}
if (isValidCover(item)) {
covers.put(direction, new Cover(item, CoverType.values()[type]));
}
}
}
}
public ListNBT writeToNbt() {
ListNBT list = new ListNBT();
for (Map.Entry<Direction, Cover> entry : covers.entrySet()) {
CompoundNBT tag = new CompoundNBT();
tag.putInt(NBT_DIRECTION, entry.getKey().ordinal());
tag.put(NBT_ITEM, entry.getValue().getStack().serializeNBT());
tag.putInt(NBT_TYPE, entry.getValue().getType().ordinal());
list.add(tag);
}
return list;
}
public IItemHandlerModifiable getAsInventory() {
ItemStackHandler handler = new ItemStackHandler(covers.size());
int i = 0;
for (Map.Entry<Direction, Cover> entry : covers.entrySet()) {
ItemStack cover = entry.getValue().getType().createStack();
// TODO ItemCover.setItem(cover, entry.getValue().getStack());
handler.setStackInSlot(i++, cover);
}
return handler;
}
@SuppressWarnings("deprecation")
public static boolean isValidCover(ItemStack item) {
if (item.isEmpty()) {
return false;
}
Block block = getBlock(item);
BlockState state = getBlockState(item);
// TODO: block.isSolid was isTopSolid! correct?
return block != null && state != null && ((isModelSupported(state) && block.isSolid(state) && !block.ticksRandomly(state) && !block.hasTileEntity(state)) || block instanceof GlassBlock || block instanceof StainedGlassBlock);
}
private static boolean isModelSupported(BlockState state) {
if (state.getRenderType() != BlockRenderType.MODEL) {
return false;
}
return state.isSolid(); // TODO: correct? was isFullCube
}
@Nullable
public static Block getBlock(@Nullable ItemStack item) {
if (item == null) {
return null;
}
Block block = Block.getBlockFromItem(item.getItem());
if (block == Blocks.AIR) {
return null;
}
return block;
}
@Nullable
@SuppressWarnings("deprecation")
public static BlockState getBlockState(@Nullable ItemStack item) {
Block block = getBlock(item);
if (block == null) {
return null;
}
try {
return block.getDefaultState(); // TODO: is still correct?
} catch (Exception e) {
return null;
}
}
}

View File

@@ -1,13 +0,0 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.node.cover;
import com.raoulvdberge.refinedstorage.RSItems;
import net.minecraft.item.ItemStack;
public enum CoverType {
NORMAL,
HOLLOW;
public ItemStack createStack() {
return new ItemStack(this == NORMAL ? RSItems.COVER : RSItems.HOLLOW_COVER);
}
}

View File

@@ -57,22 +57,6 @@ public abstract class NodeBlock extends BaseBlock {
}
}
/* TODO - Covers needed for this one
@Override
public boolean rotateBlock(World world, BlockPos pos, Direction axis) {
if (!world.isRemote && getDirection() != null) {
TileBase tile = (TileBase) world.getTileEntity(pos);
Direction newDirection = getDirection().cycle(tile.getDirection());
if (tile instanceof TileNode && ((TileNode) tile).getNode() instanceof ICoverable && ((ICoverable) ((TileNode) tile).getNode()).getCoverManager().hasCover(newDirection)) {
return false;
}
}
return super.rotateBlock(world, pos, axis);
}*/
public boolean hasConnectedState() {
return false;
}

View File

@@ -15,9 +15,6 @@ public class RSJeiPlugin implements IModPlugin {
public static IJeiRuntime RUNTIME;
// TODO registry.addRecipeRegistryPlugin(new RecipeRegistryPluginCover());
// TODO registry.addRecipeRegistryPlugin(new RecipeRegistryPluginHollowCover());
@Override
public ResourceLocation getPluginUid() {
return ID;

View File

@@ -1,63 +0,0 @@
package com.raoulvdberge.refinedstorage.integration.jei;
/*
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
import com.raoulvdberge.refinedstorage.item.ItemCover;
import mezz.jei.api.recipe.*;
import net.minecraft.item.ItemStack;
import java.util.Collections;
import java.util.List;
public class RecipeRegistryPluginCover implements IRecipeRegistryPlugin {
@Override
public <V> List<String> getRecipeCategoryUids(IFocus<V> focus) {
if (focus.getValue() instanceof ItemStack) {
ItemStack stack = (ItemStack) focus.getValue();
if (focus.getMode() == IFocus.Mode.INPUT) {
if ((!RS.INSTANCE.config.hideCovers && CoverManager.isValidCover(stack)) || API.instance().getComparer().isEqualNoQuantity(stack, ItemCover.HIDDEN_COVER_ALTERNATIVE)) {
return Collections.singletonList(VanillaRecipeCategoryUid.CRAFTING);
}
} else if (focus.getMode() == IFocus.Mode.OUTPUT) {
if (stack.getItem() == RSItems.COVER) {
return Collections.singletonList(VanillaRecipeCategoryUid.CRAFTING);
}
}
}
return Collections.emptyList();
}
@Override
public <T extends IRecipeWrapper, V> List<T> getRecipeWrappers(IRecipeCategory<T> recipeCategory, IFocus<V> focus) {
if (focus.getValue() instanceof ItemStack) {
ItemStack stack = (ItemStack) focus.getValue();
if (focus.getMode() == IFocus.Mode.INPUT) {
if ((!RS.INSTANCE.config.hideCovers && CoverManager.isValidCover(stack)) || API.instance().getComparer().isEqualNoQuantity(stack, ItemCover.HIDDEN_COVER_ALTERNATIVE)) {
ItemStack cover = new ItemStack(RSItems.COVER);
ItemCover.setItem(cover, stack);
return Collections.singletonList((T) new RecipeWrapperCover(stack, cover));
}
} else if (focus.getMode() == IFocus.Mode.OUTPUT) {
if (stack.getItem() == RSItems.COVER) {
return Collections.singletonList((T) new RecipeWrapperCover(ItemCover.getItem(stack), stack));
}
}
}
return Collections.emptyList();
}
@Override
public <T extends IRecipeWrapper> List<T> getRecipeWrappers(IRecipeCategory<T> recipeCategory) {
return Collections.emptyList();
}
}
*/

View File

@@ -1,75 +0,0 @@
package com.raoulvdberge.refinedstorage.integration.jei;
/*
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
import com.raoulvdberge.refinedstorage.item.ItemCover;
import com.raoulvdberge.refinedstorage.item.ItemHollowCover;
import mezz.jei.api.recipe.*;
import net.minecraft.item.ItemStack;
import java.util.Collections;
import java.util.List;
public class RecipeRegistryPluginHollowCover implements IRecipeRegistryPlugin {
@Override
public <V> List<String> getRecipeCategoryUids(IFocus<V> focus) {
if (focus.getValue() instanceof ItemStack) {
ItemStack stack = (ItemStack) focus.getValue();
if (focus.getMode() == IFocus.Mode.INPUT) {
if (stack.getItem() == RSItems.COVER) {
ItemStack itemInCover = ItemCover.getItem(stack);
if ((!RS.INSTANCE.config.hideCovers && CoverManager.isValidCover(itemInCover)) || API.instance().getComparer().isEqualNoQuantity(itemInCover, ItemHollowCover.HIDDEN_COVER_ALTERNATIVE)) {
return Collections.singletonList(VanillaRecipeCategoryUid.CRAFTING);
}
}
} else if (focus.getMode() == IFocus.Mode.OUTPUT) {
if (stack.getItem() == RSItems.HOLLOW_COVER) {
return Collections.singletonList(VanillaRecipeCategoryUid.CRAFTING);
}
}
}
return Collections.emptyList();
}
@Override
public <T extends IRecipeWrapper, V> List<T> getRecipeWrappers(IRecipeCategory<T> recipeCategory, IFocus<V> focus) {
if (focus.getValue() instanceof ItemStack) {
ItemStack stack = (ItemStack) focus.getValue();
if (focus.getMode() == IFocus.Mode.INPUT) {
if (stack.getItem() == RSItems.COVER) {
ItemStack itemInCover = ItemCover.getItem(stack);
if ((!RS.INSTANCE.config.hideCovers && CoverManager.isValidCover(itemInCover)) || API.instance().getComparer().isEqualNoQuantity(itemInCover, ItemHollowCover.HIDDEN_COVER_ALTERNATIVE)) {
ItemStack hollowCover = new ItemStack(RSItems.HOLLOW_COVER);
ItemCover.setItem(hollowCover, itemInCover);
return Collections.singletonList((T) new RecipeWrapperHollowCover(stack, hollowCover));
}
}
} else if (focus.getMode() == IFocus.Mode.OUTPUT) {
if (stack.getItem() == RSItems.HOLLOW_COVER) {
ItemStack cover = new ItemStack(RSItems.COVER);
ItemCover.setItem(cover, ItemCover.getItem(stack));
return Collections.singletonList((T) new RecipeWrapperHollowCover(cover, stack));
}
}
}
return Collections.emptyList();
}
@Override
public <T extends IRecipeWrapper> List<T> getRecipeWrappers(IRecipeCategory<T> recipeCategory) {
return Collections.emptyList();
}
}
*/

View File

@@ -1,34 +0,0 @@
package com.raoulvdberge.refinedstorage.integration.jei;
/*
import com.raoulvdberge.refinedstorage.RSItems;
import mezz.jei.api.ingredients.IIngredients;
import mezz.jei.api.ingredients.VanillaTypes;
import mezz.jei.api.recipe.wrapper.ICraftingRecipeWrapper;
import net.minecraft.item.ItemStack;
import net.minecraftforge.items.ItemHandlerHelper;
import java.util.ArrayList;
import java.util.List;
public class RecipeWrapperCover implements ICraftingRecipeWrapper {
private ItemStack stack;
private ItemStack cover;
public RecipeWrapperCover(ItemStack stack, ItemStack cover) {
this.stack = ItemHandlerHelper.copyStackWithSize(stack, 1);
this.cover = ItemHandlerHelper.copyStackWithSize(cover, 6);
}
@Override
public void getIngredients(IIngredients ingredients) {
List<ItemStack> inputs = new ArrayList<>();
inputs.add(new ItemStack(RSItems.CUTTING_TOOL));
inputs.add(stack);
ingredients.setInputs(VanillaTypes.ITEM, inputs);
ingredients.setOutput(VanillaTypes.ITEM, cover);
}
}
*/

View File

@@ -1,48 +0,0 @@
package com.raoulvdberge.refinedstorage.integration.jei;
/*
import mezz.jei.api.ingredients.IIngredients;
import mezz.jei.api.ingredients.VanillaTypes;
import mezz.jei.api.recipe.wrapper.IShapedCraftingRecipeWrapper;
import net.minecraft.item.ItemStack;
import net.minecraftforge.items.ItemHandlerHelper;
import java.util.ArrayList;
import java.util.List;
public class RecipeWrapperHollowCover implements IShapedCraftingRecipeWrapper {
private ItemStack cover;
private ItemStack hollowCover;
public RecipeWrapperHollowCover(ItemStack cover, ItemStack hollowCover) {
this.cover = ItemHandlerHelper.copyStackWithSize(cover, 1);
this.hollowCover = ItemHandlerHelper.copyStackWithSize(hollowCover, 8);
}
@Override
public void getIngredients(IIngredients ingredients) {
List<ItemStack> inputs = new ArrayList<>();
for (int i = 0; i < 9; ++i) {
if (i == 4) {
inputs.add(ItemStack.EMPTY);
} else {
inputs.add(cover);
}
}
ingredients.setInputs(VanillaTypes.ITEM, inputs);
ingredients.setOutput(VanillaTypes.ITEM, hollowCover);
}
@Override
public int getWidth() {
return 3;
}
@Override
public int getHeight() {
return 3;
}
}
*/

View File

@@ -1,32 +0,0 @@
package com.raoulvdberge.refinedstorage.item;
import com.raoulvdberge.refinedstorage.RS;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
public class CuttingToolItem extends Item {
public CuttingToolItem() {
super(new Item.Properties().group(RS.MAIN_GROUP).maxDamage(50 - 1));
this.setRegistryName(RS.ID, "cutting_tool");
}
@Override
public boolean getIsRepairable(ItemStack a, ItemStack b) {
return false;
}
@Override
public ItemStack getContainerItem(ItemStack stack) {
ItemStack copy = stack.copy();
copy.setDamage(stack.getDamage() + 1);
return copy;
}
@Override
public boolean hasContainerItem(ItemStack stack) {
return true;
}
}

View File

@@ -1,141 +0,0 @@
package com.raoulvdberge.refinedstorage.item;
import net.minecraft.item.Item;
public class ItemCover extends Item {
private static final String NBT_ITEM = "Item";
// public static final ItemStack HIDDEN_COVER_ALTERNATIVE = new ItemStack(Blocks.STONEBRICK);
public ItemCover() {
super(null);
//setCreativeTab(RS.INSTANCE.coversTab);
}
/* TODO
@Override
@SideOnly(Side.CLIENT)
public void registerModels(IModelRegistration modelRegistration) {
modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory"));
modelRegistration.addModelLoader(() -> new CustomModelLoaderCover()); // Don't use a method reference here, it crashes the server!
}
public static void setItem(ItemStack cover, ItemStack item) {
if (!cover.hasTagCompound()) {
cover.setTagCompound(new CompoundNBT());
}
cover.getTagCompound().put(NBT_ITEM, item.serializeNBT());
}
@Nonnull
public static ItemStack getItem(ItemStack cover) {
if (!cover.hasTagCompound() || !cover.getTagCompound().hasKey(NBT_ITEM)) {
return ItemStack.EMPTY;
}
return new ItemStack(cover.getTagCompound().getCompound(NBT_ITEM));
}
@Override
public void addInformation(ItemStack stack, @Nullable World world, List<String> tooltip, ITooltipFlag flag) {
super.addInformation(stack, world, tooltip, flag);
ItemStack item = getItem(stack);
if (!item.isEmpty()) {
tooltip.add(item.getItem().getItemStackDisplayName(item));
}
}
@Override
public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> items) {
if (!isInCreativeTab(tab)) {
return;
}
if (RS.INSTANCE.config.hideCovers) {
ItemStack stack = new ItemStack(this);
setItem(stack, HIDDEN_COVER_ALTERNATIVE);
items.add(stack);
return;
}
for (Block block : Block.REGISTRY) {
Item item = Item.getItemFromBlock(block);
if (item == Items.AIR) {
continue;
}
NonNullList<ItemStack> subBlocks = NonNullList.create();
block.getSubBlocks(CreativeTabs.SEARCH, subBlocks);
for (ItemStack subBlock : subBlocks) {
if (CoverManager.isValidCover(subBlock)) {
ItemStack stack = new ItemStack(this);
setItem(stack, subBlock);
items.add(stack);
}
}
}
}
@Override
public EnumActionResult onItemUse(PlayerEntity player, World world, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
ItemStack stack = player.getHeldItem(hand);
TileEntity tile = world.getTileEntity(pos);
// Support placing on the bottom side without too much hassle.
if (!canPlaceOn(tile)) {
pos = pos.up();
facing = EnumFacing.DOWN;
tile = world.getTileEntity(pos);
}
if (canPlaceOn(tile)) {
if (world.isRemote) {
return EnumActionResult.SUCCESS;
}
INetworkNode node = ((TileNode) tile).getNode();
if (node.getNetwork() != null && !node.getNetwork().getSecurityManager().hasPermission(Permission.BUILD, player)) {
WorldUtils.sendNoPermissionMessage(player);
return EnumActionResult.FAIL;
}
if (((ICoverable) node).getCoverManager().setCover(facing, createCover(getItem(stack)))) {
player.getHeldItem(hand).shrink(1);
WorldUtils.updateBlock(world, pos);
return EnumActionResult.SUCCESS;
}
return EnumActionResult.FAIL;
}
return EnumActionResult.PASS;
}
private boolean canPlaceOn(TileEntity tile) {
return tile instanceof TileNode && ((TileNode) tile).getNode() instanceof ICoverable;
}
protected Cover createCover(ItemStack stack) {
return new Cover(stack, CoverType.NORMAL);
}*/
}

View File

@@ -1,18 +0,0 @@
package com.raoulvdberge.refinedstorage.item;
public class ItemHollowCover extends ItemCover {
public ItemHollowCover() {
super();
}
/* TODO
@Override
@SideOnly(Side.CLIENT)
public void registerModels(IModelRegistration modelRegistration) {
modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory"));
}
@Override
protected Cover createCover(ItemStack stack) {
return new Cover(stack, CoverType.HOLLOW);
}*/
}

View File

@@ -41,37 +41,6 @@ public class WrenchItem extends Item {
BlockState state = ctx.getWorld().getBlockState(ctx.getPos());
/* TODO - Covers
if (block instanceof BlockCable && tile instanceof TileNode && ((TileNode) tile).getNode() instanceof ICoverable) {
CoverManager manager = ((ICoverable) ((TileNode) tile).getNode()).getCoverManager();
@SuppressWarnings("deprecation")
AdvancedRayTraceResult result = AdvancedRayTracer.rayTrace(
pos,
AdvancedRayTracer.getStart(player),
AdvancedRayTracer.getEnd(player),
((BlockCable) block).getCollisions(tile, block.getActualState(state, world, pos))
);
if (result != null && result.getGroup().getDirection() != null) {
EnumFacing facingSelected = result.getGroup().getDirection();
if (manager.hasCover(facingSelected)) {
ItemStack cover = manager.getCover(facingSelected).getType().createStack();
ItemCover.setItem(cover, manager.getCover(facingSelected).getStack());
manager.setCover(facingSelected, null);
WorldUtils.updateBlock(world, pos);
InventoryHelper.spawnItemStack(world, pos.getX(), pos.getY(), pos.getZ(), cover);
return ActionResultType.SUCCESS;
}
}
}*/
ctx.getWorld().setBlockState(ctx.getPos(), state.rotate(Rotation.CLOCKWISE_90));
return ActionResultType.SUCCESS;

View File

@@ -48,12 +48,6 @@ public class ProxyCommon {
}
}
@SubscribeEvent
public void registerRecipes(RegistryEvent.Register<IRecipe> e) {
e.getRegistry().register(new RecipeCover().setRegistryName(new ResourceLocation(RS.ID, "cover")));
e.getRegistry().register(new RecipeHollowCover().setRegistryName(new ResourceLocation(RS.ID, "hollow_cover")));
}
@SubscribeEvent
public void onHarvestCheck(PlayerEvent.HarvestCheck e) {
if (e.getTargetBlock().getBlock() instanceof BlockBase) {

View File

@@ -1,88 +0,0 @@
package com.raoulvdberge.refinedstorage.recipe;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
import net.minecraft.inventory.CraftingInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.IRecipeSerializer;
import net.minecraft.item.crafting.IRecipeType;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
public class RecipeCover implements IRecipe<CraftingInventory> {
@Override
public boolean matches(CraftingInventory inv, World world) {
boolean hadCuttingTool = false;
boolean hadItem = false;
for (int i = 0; i < inv.getSizeInventory(); ++i) {
ItemStack slot = inv.getStackInSlot(i);
if (!slot.isEmpty() && hadCuttingTool && hadItem) {
return false;
}
if (slot.getItem() == RSItems.CUTTING_TOOL) {
if (hadCuttingTool) {
return false;
}
hadCuttingTool = true;
}
if (CoverManager.isValidCover(slot)) {
if (hadItem) {
return false;
}
hadItem = true;
}
}
return hadCuttingTool && hadItem;
}
@Override
public ItemStack getCraftingResult(CraftingInventory inv) {
for (int i = 0; i < inv.getSizeInventory(); ++i) {
ItemStack slot = inv.getStackInSlot(i);
if (CoverManager.isValidCover(slot)) {
ItemStack cover = new ItemStack(RSItems.COVER, 6);
// TODO ItemCover.setItem(cover, ItemHandlerHelper.copyStackWithSize(slot, 1));
return cover;
}
}
return ItemStack.EMPTY;
}
@Override
public boolean canFit(int width, int height) {
return true;
}
@Override
public ItemStack getRecipeOutput() {
return ItemStack.EMPTY;
}
@Override
public ResourceLocation getId() {
return new ResourceLocation(RS.ID, "cover");
}
@Override
public IRecipeSerializer<?> getSerializer() {
return null;
}
@Override
public IRecipeType<?> getType() {
return IRecipeType.CRAFTING;
}
}

View File

@@ -1,88 +0,0 @@
package com.raoulvdberge.refinedstorage.recipe;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSItems;
import net.minecraft.inventory.CraftingInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.IRecipeSerializer;
import net.minecraft.item.crafting.IRecipeType;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class RecipeHollowCover implements IRecipe<CraftingInventory> {
protected boolean isValid(ItemStack slot, @Nullable ItemStack previousValidSlot) {
// TODO ItemStack currentCover = ItemCover.getItem(slot);
/*if (slot.getItem() == RSItems.COVER && CoverManager.isValidCover(currentCover)) {
if (previousValidSlot == null) {
return true;
}
// TODO ItemStack previousCover = ItemCover.getItem(previousValidSlot);
// TODO return previousCover.getItem() == currentCover.getItem();
}*/
return false;
}
@Override
public boolean matches(CraftingInventory inv, World worldIn) {
ItemStack previousValidSlot = null;
for (int i = 0; i < 9; ++i) {
ItemStack slot = inv.getStackInSlot(i);
if (i == 4) {
if (!slot.isEmpty()) {
return false;
}
} else {
if (isValid(slot, previousValidSlot)) {
previousValidSlot = slot;
} else {
return false;
}
}
}
return true;
}
@Override
public ItemStack getCraftingResult(CraftingInventory inv) {
ItemStack stack = new ItemStack(RSItems.HOLLOW_COVER, 8);
// TODO ItemHollowCover.setItem(stack, ItemCover.getItem(inv.getStackInSlot(0)));
return stack;
}
@Override
public boolean canFit(int width, int height) {
return width == 3 && height == 3;
}
@Override
public ItemStack getRecipeOutput() {
return ItemStack.EMPTY;
}
@Override
public ResourceLocation getId() {
return new ResourceLocation(RS.ID, "hollow_cover");
}
@Override
public IRecipeSerializer<?> getSerializer() {
return null;
}
@Override
public IRecipeType<?> getType() {
return IRecipeType.CRAFTING;
}
}

View File

@@ -1,352 +0,0 @@
package com.raoulvdberge.refinedstorage.render;
import com.raoulvdberge.refinedstorage.util.RenderUtils;
import net.minecraft.client.renderer.Vector3f;
import net.minecraft.client.renderer.model.BakedQuad;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.client.renderer.vertex.VertexFormat;
import net.minecraft.client.renderer.vertex.VertexFormatElement;
import net.minecraft.util.Direction;
import net.minecraftforge.client.model.pipeline.UnpackedBakedQuad;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
public class CubeBuilder {
public enum UvRotation {
CLOCKWISE_0,
CLOCKWISE_90,
CLOCKWISE_180,
CLOCKWISE_270
}
private static class Uv {
private float xFrom;
private float xTo;
private float yFrom;
private float yTo;
}
public static class Face {
private Direction face;
private TextureAtlasSprite sprite;
private int light;
private UvRotation uvRotation = UvRotation.CLOCKWISE_0;
public Face(Direction face, TextureAtlasSprite sprite) {
this.face = face;
this.sprite = sprite;
}
public Face(Direction face, TextureAtlasSprite sprite, UvRotation uvRotation) {
this(face, sprite);
this.uvRotation = uvRotation;
}
public Face(Direction face, TextureAtlasSprite sprite, UvRotation uvRotation, int light) {
this(face, sprite, uvRotation);
this.light = light;
}
}
private Vector3f from;
private Vector3f to;
private VertexFormat format = DefaultVertexFormats.ITEM;
private Map<Direction, Face> faces = new HashMap<>();
private int color = 0xFFFFFFFF;
public CubeBuilder from(float x, float y, float z) {
this.from = new Vector3f(x / 16, y / 16, z / 16);
return this;
}
public CubeBuilder to(float x, float y, float z) {
this.to = new Vector3f(x / 16, y / 16, z / 16);
return this;
}
public CubeBuilder color(int color) {
this.color = color;
return this;
}
public CubeBuilder lightmap() {
this.format = RenderUtils.getFormatWithLightMap(format);
return this;
}
public CubeBuilder addFaces(Function<Direction, Face> faceSupplier) {
for (Direction facing : Direction.values()) {
addFace(faceSupplier.apply(facing));
}
return this;
}
public CubeBuilder addFace(Face face) {
faces.put(face.face, face);
return this;
}
public List<BakedQuad> bake() {
List<BakedQuad> quads = new ArrayList<>();
for (Map.Entry<Direction, Face> entry : faces.entrySet()) {
quads.add(bakeFace(entry.getKey(), entry.getValue()));
}
return quads;
}
private BakedQuad bakeFace(Direction facing, Face cubeFace) {
UnpackedBakedQuad.Builder builder = new UnpackedBakedQuad.Builder(format);
builder.setTexture(cubeFace.sprite);
builder.setQuadOrientation(facing);
builder.setQuadTint(-1);
builder.setApplyDiffuseLighting(true);
Uv uv = getDefaultUv(facing, cubeFace.sprite, from.getX(), from.getY(), from.getZ(), to.getX(), to.getY(), to.getZ());
switch (facing) {
case DOWN:
addVertexTopRight(builder, cubeFace, to.getX(), from.getY(), from.getZ(), uv);
addVertexBottomRight(builder, cubeFace, to.getX(), from.getY(), to.getZ(), uv);
addVertexBottomLeft(builder, cubeFace, from.getX(), from.getY(), to.getZ(), uv);
addVertexTopLeft(builder, cubeFace, from.getX(), from.getY(), from.getZ(), uv);
break;
case UP:
addVertexTopLeft(builder, cubeFace, from.getX(), to.getY(), from.getZ(), uv);
addVertexBottomLeft(builder, cubeFace, from.getX(), to.getY(), to.getZ(), uv);
addVertexBottomRight(builder, cubeFace, to.getX(), to.getY(), to.getZ(), uv);
addVertexTopRight(builder, cubeFace, to.getX(), to.getY(), from.getZ(), uv);
break;
case NORTH:
addVertexBottomRight(builder, cubeFace, to.getX(), to.getY(), from.getZ(), uv);
addVertexTopRight(builder, cubeFace, to.getX(), from.getY(), from.getZ(), uv);
addVertexTopLeft(builder, cubeFace, from.getX(), from.getY(), from.getZ(), uv);
addVertexBottomLeft(builder, cubeFace, from.getX(), to.getY(), from.getZ(), uv);
break;
case SOUTH:
addVertexBottomLeft(builder, cubeFace, from.getX(), to.getY(), to.getZ(), uv);
addVertexTopLeft(builder, cubeFace, from.getX(), from.getY(), to.getZ(), uv);
addVertexTopRight(builder, cubeFace, to.getX(), from.getY(), to.getZ(), uv);
addVertexBottomRight(builder, cubeFace, to.getX(), to.getY(), to.getZ(), uv);
break;
case WEST:
addVertexTopLeft(builder, cubeFace, from.getX(), from.getY(), from.getZ(), uv);
addVertexTopRight(builder, cubeFace, from.getX(), from.getY(), to.getZ(), uv);
addVertexBottomRight(builder, cubeFace, from.getX(), to.getY(), to.getZ(), uv);
addVertexBottomLeft(builder, cubeFace, from.getX(), to.getY(), from.getZ(), uv);
break;
case EAST:
addVertexBottomRight(builder, cubeFace, to.getX(), to.getY(), from.getZ(), uv);
addVertexBottomLeft(builder, cubeFace, to.getX(), to.getY(), to.getZ(), uv);
addVertexTopLeft(builder, cubeFace, to.getX(), from.getY(), to.getZ(), uv);
addVertexTopRight(builder, cubeFace, to.getX(), from.getY(), from.getZ(), uv);
break;
}
return builder.build();
}
private Uv getDefaultUv(Direction face, TextureAtlasSprite texture, float fromX, float fromY, float fromZ, float toX, float toY, float toZ) {
Uv uv = new Uv();
switch (face) {
case DOWN:
uv.xFrom = texture.getInterpolatedU(fromX * 16);
uv.yFrom = texture.getInterpolatedV(16 - fromZ * 16);
uv.xTo = texture.getInterpolatedU(toX * 16);
uv.yTo = texture.getInterpolatedV(16 - toZ * 16);
break;
case UP:
uv.xFrom = texture.getInterpolatedU(fromX * 16);
uv.yFrom = texture.getInterpolatedV(fromZ * 16);
uv.xTo = texture.getInterpolatedU(toX * 16);
uv.yTo = texture.getInterpolatedV(toZ * 16);
break;
case NORTH:
uv.xFrom = texture.getInterpolatedU(16 - fromX * 16);
uv.yFrom = texture.getInterpolatedV(16 - fromY * 16);
uv.xTo = texture.getInterpolatedU(16 - toX * 16);
uv.yTo = texture.getInterpolatedV(16 - toY * 16);
break;
case SOUTH:
uv.xFrom = texture.getInterpolatedU(fromX * 16);
uv.yFrom = texture.getInterpolatedV(16 - fromY * 16);
uv.xTo = texture.getInterpolatedU(toX * 16);
uv.yTo = texture.getInterpolatedV(16 - toY * 16);
break;
case WEST:
uv.xFrom = texture.getInterpolatedU(fromZ * 16);
uv.yFrom = texture.getInterpolatedV(16 - fromY * 16);
uv.xTo = texture.getInterpolatedU(toZ * 16);
uv.yTo = texture.getInterpolatedV(16 - toY * 16);
break;
case EAST:
uv.xFrom = texture.getInterpolatedU(16 - toZ * 16);
uv.yFrom = texture.getInterpolatedV(16 - fromY * 16);
uv.xTo = texture.getInterpolatedU(16 - fromZ * 16);
uv.yTo = texture.getInterpolatedV(16 - toY * 16);
break;
}
return uv;
}
private void addVertexTopLeft(UnpackedBakedQuad.Builder builder, Face face, float x, float y, float z, Uv uv) {
float u;
float v;
switch (face.uvRotation) {
default:
case CLOCKWISE_0:
u = uv.xFrom;
v = uv.yFrom;
break;
case CLOCKWISE_90:
u = uv.xFrom;
v = uv.yTo;
break;
case CLOCKWISE_180:
u = uv.xTo;
v = uv.yTo;
break;
case CLOCKWISE_270:
u = uv.xTo;
v = uv.yFrom;
break;
}
addVertex(builder, face, x, y, z, u, v);
}
private void addVertexTopRight(UnpackedBakedQuad.Builder builder, Face face, float x, float y, float z, Uv uv) {
float u;
float v;
switch (face.uvRotation) {
default:
case CLOCKWISE_0:
u = uv.xTo;
v = uv.yFrom;
break;
case CLOCKWISE_90:
u = uv.xFrom;
v = uv.yFrom;
break;
case CLOCKWISE_180:
u = uv.xFrom;
v = uv.yTo;
break;
case CLOCKWISE_270:
u = uv.xTo;
v = uv.yTo;
break;
}
addVertex(builder, face, x, y, z, u, v);
}
private void addVertexBottomRight(UnpackedBakedQuad.Builder builder, Face face, float x, float y, float z, Uv uv) {
float u;
float v;
switch (face.uvRotation) {
default:
case CLOCKWISE_0:
u = uv.xTo;
v = uv.yTo;
break;
case CLOCKWISE_90:
u = uv.xTo;
v = uv.yFrom;
break;
case CLOCKWISE_180:
u = uv.xFrom;
v = uv.yFrom;
break;
case CLOCKWISE_270:
u = uv.xFrom;
v = uv.yTo;
break;
}
addVertex(builder, face, x, y, z, u, v);
}
private void addVertexBottomLeft(UnpackedBakedQuad.Builder builder, Face face, float x, float y, float z, Uv uv) {
float u;
float v;
switch (face.uvRotation) {
default:
case CLOCKWISE_0:
u = uv.xFrom;
v = uv.yTo;
break;
case CLOCKWISE_90:
u = uv.xTo;
v = uv.yTo;
break;
case CLOCKWISE_180:
u = uv.xTo;
v = uv.yFrom;
break;
case CLOCKWISE_270:
u = uv.xFrom;
v = uv.yFrom;
break;
}
addVertex(builder, face, x, y, z, u, v);
}
private void addVertex(UnpackedBakedQuad.Builder builder, Face face, float x, float y, float z, float u, float v) {
VertexFormat format = builder.getVertexFormat();
for (int i = 0; i < format.getElementCount(); i++) {
VertexFormatElement e = format.getElement(i);
switch (e.getUsage()) {
case POSITION:
builder.put(i, x, y, z);
break;
case NORMAL:
builder.put(i, face.face.getXOffset(), face.face.getYOffset(), face.face.getZOffset());
break;
case COLOR:
float r = (color >> 16 & 0xFF) / 255F;
float g = (color >> 8 & 0xFF) / 255F;
float b = (color & 0xFF) / 255F;
float a = (color >> 24 & 0xFF) / 255F;
builder.put(i, r, g, b, a);
break;
case UV:
if (e.getIndex() == 0) {
builder.put(i, u, v);
} else {
builder.put(i, (float) (face.light * 0x20) / 0xFFFF, (float) (face.light * 0x20) / 0xFFFF);
}
break;
default:
builder.put(i);
break;
}
}
}
}

View File

@@ -1,40 +0,0 @@
package com.raoulvdberge.refinedstorage.render.model;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverType;
import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.IUnbakedModel;
import net.minecraft.client.renderer.model.ModelBakery;
import net.minecraft.client.renderer.texture.ISprite;
import net.minecraft.client.renderer.vertex.VertexFormat;
import net.minecraft.util.ResourceLocation;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Set;
import java.util.function.Function;
public class ModelCover implements IUnbakedModel {
private CoverType coverType;
public ModelCover(CoverType coverType) {
this.coverType = coverType;
}
@Nullable
@Override
public IBakedModel bake(ModelBakery bakery, Function spriteGetter, ISprite sprite, VertexFormat format) {
return null;
//return new BakedModelCover(null, coverType);
}
@Override
public Collection<ResourceLocation> getDependencies() {
return new ArrayList<>();
}
@Override
public Collection<ResourceLocation> getTextures(Function<ResourceLocation, IUnbakedModel> modelGetter, Set<String> missingTextureErrors) {
return new ArrayList<>();
}
}

View File

@@ -1,338 +0,0 @@
package com.raoulvdberge.refinedstorage.render.model.baked;
/*
public class BakedModelCableCover extends BakedModelDelegate {
private static TextureAtlasSprite BORDER_SPRITE;
public BakedModelCableCover(IBakedModel base) {
super(base);
}
@Override
public List<BakedQuad> getQuads(@Nullable BlockState state, @Nullable Direction side, long rand) {
List<BakedQuad> quads = new ArrayList<>(base.getQuads(state, side, rand));
if (state != null) {
IExtendedBlockState extendedState = (IExtendedBlockState) state;
addCover(quads, extendedState.getValue(BlockCable.COVER_NORTH), Direction.NORTH, side, rand, extendedState, true);
addCover(quads, extendedState.getValue(BlockCable.COVER_SOUTH), Direction.SOUTH, side, rand, extendedState, true);
addCover(quads, extendedState.getValue(BlockCable.COVER_EAST), Direction.EAST, side, rand, extendedState, true);
addCover(quads, extendedState.getValue(BlockCable.COVER_WEST), Direction.WEST, side, rand, extendedState, true);
addCover(quads, extendedState.getValue(BlockCable.COVER_DOWN), Direction.DOWN, side, rand, extendedState, true);
addCover(quads, extendedState.getValue(BlockCable.COVER_UP), Direction.UP, side, rand, extendedState, true);
}
return quads;
}
private static int getHollowCoverSize(@Nullable BlockState state, Direction coverSide) {
if (state == null) {
return 6;
}
BlockBase block = (BlockBase) state.getBlock();
if (block.getDirection() != null && state.getValue(block.getDirection().getProperty()) == coverSide) {
if (block == RSBlocks.CABLE || block == RSBlocks.EXPORTER) {
return 6;
} else if (block == RSBlocks.EXTERNAL_STORAGE || block == RSBlocks.IMPORTER) {
return 3;
} else if (block == RSBlocks.CONSTRUCTOR || block == RSBlocks.DESTRUCTOR || block == RSBlocks.READER || block == RSBlocks.WRITER) {
return 2;
}
}
return 6;
}
protected static void addCover(List<BakedQuad> quads, @Nullable Cover cover, Direction coverSide, Direction side, long rand, @Nullable IExtendedBlockState state, boolean handle) {
if (cover == null) {
return;
}
BlockState coverState = CoverManager.getBlockState(cover.getStack());
if (coverState == null) {
return;
}
boolean hasUp = false, hasDown = false, hasEast = false, hasWest = false;
if (state != null) {
hasUp = state.getValue(BlockCable.COVER_UP) != null;
hasDown = state.getValue(BlockCable.COVER_DOWN) != null;
hasEast = state.getValue(BlockCable.COVER_EAST) != null;
hasWest = state.getValue(BlockCable.COVER_WEST) != null;
}
TextureAtlasSprite sprite = RenderUtils.getSprite(Minecraft.getMinecraft().getBlockRendererDispatcher().getModelForState(coverState), coverState, side, rand);
switch (cover.getType()) {
case NORMAL:
addNormalCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest, handle);
break;
case HOLLOW:
addHollowCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest, getHollowCoverSize(state, coverSide));
break;
}
}
private static void addNormalCover(List<BakedQuad> quads, TextureAtlasSprite sprite, Direction coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest, boolean handle) {
AxisAlignedBB bounds = ConstantsCable.getCoverBounds(coverSide);
Vector3f from = new Vector3f((float) bounds.minX * 16, (float) bounds.minY * 16, (float) bounds.minZ * 16);
Vector3f to = new Vector3f((float) bounds.maxX * 16, (float) bounds.maxY * 16, (float) bounds.maxZ * 16);
if (coverSide == Direction.NORTH) {
if (hasWest) {
from.setX(2);
}
if (hasEast) {
to.setX(14);
}
} else if (coverSide == Direction.SOUTH) {
if (hasWest) {
from.setX(2);
}
if (hasEast) {
to.setX(14);
}
}
if (coverSide.getAxis() != Direction.Axis.Y) {
if (hasDown) {
from.setY(2);
}
if (hasUp) {
to.setY(14);
}
}
quads.addAll(new CubeBuilder().from(from.getX(), from.getY(), from.getZ()).to(to.getX(), to.getY(), to.getZ()).addFaces(face -> new CubeBuilder.Face(face, sprite)).bake());
if (handle) {
if (BORDER_SPRITE == null) {
BORDER_SPRITE = Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(RS.ID + ":blocks/cable_part_border");
}
bounds = ConstantsCable.getHolderBounds(coverSide);
from = new Vector3f((float) bounds.minX * 16, (float) bounds.minY * 16, (float) bounds.minZ * 16);
to = new Vector3f((float) bounds.maxX * 16, (float) bounds.maxY * 16, (float) bounds.maxZ * 16);
quads.addAll(new CubeBuilder().from(from.getX(), from.getY(), from.getZ()).to(to.getX(), to.getY(), to.getZ()).addFaces(face -> new CubeBuilder.Face(face, BORDER_SPRITE)).bake());
}
}
private static void addHollowCover(List<BakedQuad> quads, TextureAtlasSprite sprite, Direction coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest, int size) {
AxisAlignedBB bounds = ConstantsCable.getCoverBounds(coverSide);
Vector3f from = new Vector3f((float) bounds.minX * 16, (float) bounds.minY * 16, (float) bounds.minZ * 16);
Vector3f to = new Vector3f((float) bounds.maxX * 16, (float) bounds.maxY * 16, (float) bounds.maxZ * 16);
if (coverSide.getAxis() != Direction.Axis.Y) {
if (hasDown) {
from.setY(2);
}
if (hasUp) {
to.setY(14);
}
}
// Right
if (coverSide == Direction.NORTH) {
if (hasWest) {
from.setX(2);
} else {
from.setX(0);
}
to.setX(size);
} else if (coverSide == Direction.SOUTH) {
if (hasEast) {
to.setX(14);
} else {
to.setX(16);
}
from.setX(16 - size);
} else if (coverSide == Direction.EAST) {
from.setZ(0);
to.setZ(size);
} else if (coverSide == Direction.WEST) {
from.setZ(16 - size);
to.setZ(16);
} else if (coverSide == Direction.DOWN || coverSide == Direction.UP) {
from.setZ(16 - size);
to.setZ(16);
}
quads.addAll(new CubeBuilder()
.from(from.getX(), from.getY(), from.getZ())
.to(to.getX(), to.getY(), to.getZ())
.addFaces(face -> new CubeBuilder.Face(face, sprite))
.bake()
);
// Left
if (coverSide == Direction.NORTH) {
if (hasEast) {
to.setX(14);
} else {
to.setX(16);
}
from.setX(16 - size);
} else if (coverSide == Direction.SOUTH) {
if (hasWest) {
from.setX(2);
} else {
from.setX(0);
}
to.setX(size);
} else if (coverSide == Direction.EAST) {
from.setZ(16 - size);
to.setZ(16);
} else if (coverSide == Direction.WEST) {
from.setZ(0);
to.setZ(size);
} else if (coverSide == Direction.DOWN || coverSide == Direction.UP) {
from.setZ(0);
to.setZ(size);
}
quads.addAll(new CubeBuilder()
.from(from.getX(), from.getY(), from.getZ())
.to(to.getX(), to.getY(), to.getZ())
.addFaces(face -> new CubeBuilder.Face(face, sprite))
.bake()
);
// Bottom
if (coverSide == Direction.NORTH) {
from.setX(size);
to.setX(16 - size);
if (hasDown) {
from.setY(2);
} else {
from.setY(0);
}
to.setY(size);
} else if (coverSide == Direction.SOUTH) {
from.setX(size);
to.setX(16 - size);
if (hasDown) {
from.setY(2);
} else {
from.setY(0);
}
to.setY(size);
} else if (coverSide == Direction.EAST) {
from.setZ(size);
to.setZ(16 - size);
if (hasDown) {
from.setY(2);
} else {
from.setY(0);
}
to.setY(size);
} else if (coverSide == Direction.WEST) {
from.setZ(size);
to.setZ(16 - size);
if (hasDown) {
from.setY(2);
} else {
from.setY(0);
}
to.setY(size);
} else if (coverSide == Direction.DOWN || coverSide == Direction.UP) {
from.setZ(size);
to.setZ(16 - size);
from.setX(0);
to.setX(size);
}
quads.addAll(new CubeBuilder()
.from(from.getX(), from.getY(), from.getZ())
.to(to.getX(), to.getY(), to.getZ())
.addFaces(face -> new CubeBuilder.Face(face, sprite))
.bake()
);
// Up
if (coverSide == Direction.NORTH) {
from.setX(size);
to.setX(16 - size);
if (hasUp) {
to.setY(14);
} else {
to.setY(16);
}
from.setY(16 - size);
} else if (coverSide == Direction.SOUTH) {
from.setX(size);
to.setX(16 - size);
if (hasUp) {
to.setY(14);
} else {
to.setY(16);
}
from.setY(16 - size);
} else if (coverSide == Direction.EAST) {
from.setZ(size);
to.setZ(16 - size);
if (hasUp) {
to.setY(14);
} else {
to.setY(16);
}
from.setY(16 - size);
} else if (coverSide == Direction.WEST) {
from.setZ(size);
to.setZ(16 - size);
if (hasUp) {
to.setY(14);
} else {
to.setY(16);
}
from.setY(16 - size);
} else if (coverSide == Direction.DOWN || coverSide == Direction.UP) {
from.setZ(size);
to.setZ(16 - size);
from.setX(16 - size);
to.setX(16);
}
quads.addAll(new CubeBuilder()
.from(from.getX(), from.getY(), from.getZ())
.to(to.getX(), to.getY(), to.getZ())
.addFaces(face -> new CubeBuilder.Face(face, sprite))
.bake()
);
}
}
*/

View File

@@ -1,154 +0,0 @@
package com.raoulvdberge.refinedstorage.render.model.baked;
/*
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.Cover;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverType;
import com.raoulvdberge.refinedstorage.item.ItemCover;
import com.raoulvdberge.refinedstorage.util.RenderUtils;
import net.minecraft.block.state.BlockState;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
import net.minecraft.client.renderer.block.model.ItemOverrideList;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Direction;
import net.minecraft.world.World;
import net.minecraftforge.common.model.TRSRTransformation;
import org.apache.commons.lang3.tuple.Pair;
import javax.annotation.Nullable;
import javax.vecmath.Matrix4f;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
public class BakedModelCover extends BakedModelCableCover {
private class CacheKey {
private BlockState state;
private ItemStack stack;
private Direction side;
private CoverType type;
CacheKey(BlockState state, ItemStack stack, Direction side, CoverType type) {
this.state = state;
this.stack = stack;
this.side = side;
this.type = type;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
BakedModelCover.CacheKey cacheKey = (BakedModelCover.CacheKey) o;
return cacheKey.type == type && cacheKey.stack.getItem() == stack.getItem() && cacheKey.stack.getItemDamage() == stack.getItemDamage() && cacheKey.side == side && Objects.equals(cacheKey.state, state);
}
@Override
public int hashCode() {
int result = stack.getItem().hashCode();
result = 31 * result + stack.getItemDamage();
result = 31 * result + (side != null ? side.hashCode() : 0);
result = 31 * result + (state != null ? state.hashCode() : 0);
result = 31 * result + type.hashCode();
return result;
}
}
private static final LoadingCache<CacheKey, List<BakedQuad>> CACHE = CacheBuilder.newBuilder().build(new CacheLoader<CacheKey, List<BakedQuad>>() {
@Override
public List<BakedQuad> load(CacheKey key) {
List<BakedQuad> quads = new ArrayList<>();
addCover(quads, new Cover(key.stack, key.type), Direction.NORTH, key.side, 0, null, false);
return quads;
}
});
@Nullable
private ItemStack stack;
private CoverType type;
public BakedModelCover(@Nullable ItemStack stack, CoverType type) {
super(null);
this.stack = stack;
this.type = type;
}
@Override
public List<BakedQuad> getQuads(@Nullable BlockState state, @Nullable Direction side, long rand) {
if (stack == null) {
return Collections.emptyList();
}
CacheKey key = new CacheKey(state, ItemCover.getItem(stack), side, type);
return CACHE.getUnchecked(key);
}
@Override
public ItemOverrideList getOverrides() {
if (stack != null) {
return ItemOverrideList.NONE;
}
return new ItemOverrideList(Collections.emptyList()) {
@Override
public IBakedModel handleItemState(IBakedModel originalModel, ItemStack stack, @Nullable World world, @Nullable EntityLivingBase entity) {
return new BakedModelCover(stack, type);
}
};
}
@Override
public Pair<? extends IBakedModel, Matrix4f> handlePerspective(ItemCameraTransforms.TransformType cameraTransformType) {
TRSRTransformation transform = RenderUtils.getDefaultBlockTransforms().get(cameraTransformType);
return Pair.of(this, transform == null ? RenderUtils.EMPTY_MATRIX_TRANSFORM : transform.getMatrix());
}
@Override
public boolean isAmbientOcclusion() {
return true;
}
@Override
public boolean isGui3d() {
return true;
}
@Override
public boolean isBuiltInRenderer() {
return false;
}
@Override
public TextureAtlasSprite getParticleTexture() {
return null;
}
@Override
public boolean isAmbientOcclusion(BlockState state) {
return true;
}
@Override
@SuppressWarnings("deprecation")
public ItemCameraTransforms getItemCameraTransforms() {
return ItemCameraTransforms.DEFAULT;
}
}*/

View File

@@ -1,40 +0,0 @@
package com.raoulvdberge.refinedstorage.render.model.loader;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverType;
import com.raoulvdberge.refinedstorage.render.model.ModelCover;
import net.minecraft.client.renderer.model.IUnbakedModel;
import net.minecraft.resources.IResourceManager;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.ICustomModelLoader;
import javax.annotation.Nullable;
public class CoverCustomModelLoader implements ICustomModelLoader {
@Override
public void onResourceManagerReload(IResourceManager resourceManager) {
// NO OP
}
@Override
public boolean accepts(ResourceLocation modelLocation) {
return modelLocation.getNamespace().equals(RS.ID) && getType(modelLocation) != null;
}
@Override
public IUnbakedModel loadModel(ResourceLocation modelLocation) {
return new ModelCover(getType(modelLocation));
}
@Nullable
private CoverType getType(ResourceLocation modelLocation) {
switch (modelLocation.getPath()) {
case "cover":
return CoverType.NORMAL;
case "hollow_cover":
return CoverType.HOLLOW;
default:
return null;
}
}
}

View File

@@ -26,7 +26,6 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeGraph;
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.FluidGridHandler;
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.ItemGridHandler;
import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemHandler;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.ICoverable;
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterManager;
import com.raoulvdberge.refinedstorage.apiimpl.network.security.SecurityManager;
import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.FluidStorageCache;
@@ -46,7 +45,6 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.tileentity.ITickableTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Direction;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
@@ -677,24 +675,7 @@ public class ControllerTile extends BaseTile implements ITickableTileEntity, INe
@Override
public void visit(Operator operator) {
for (Direction facing : Direction.values()) {
BlockPos pos = this.pos.offset(facing);
TileEntity tile = world.getTileEntity(pos);
// Little hack to support not conducting through covers (if the cover is right next to the controller).
if (tile != null) {
INetworkNodeProxy otherNodeProxy = tile.getCapability(NETWORK_NODE_PROXY_CAPABILITY).orElse(null);
if (otherNodeProxy != null) {
INetworkNode otherNode = otherNodeProxy.getNode();
if (otherNode instanceof ICoverable && ((ICoverable) otherNode).getCoverManager().hasCover(facing.getOpposite())) {
continue;
}
}
}
operator.apply(world, pos, facing.getOpposite());
operator.apply(world, pos.offset(facing), facing.getOpposite());
}
}

View File

@@ -5,20 +5,17 @@ import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeManager;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy;
import com.raoulvdberge.refinedstorage.api.util.Action;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.ICoverable;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
import com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability;
import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable;
import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.server.ServerWorld;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.Constants;
import net.minecraftforge.common.util.LazyOptional;
import javax.annotation.Nonnull;
@@ -27,8 +24,6 @@ import javax.annotation.Nullable;
public abstract class NetworkNodeTile<N extends NetworkNode> extends BaseTile implements INetworkNodeProxy<N>, IRedstoneConfigurable {
public static final TileDataParameter<Integer, NetworkNodeTile> REDSTONE_MODE = RedstoneMode.createParameter();
private static final String NBT_COVERS = "Cover";
private N clientNode;
private LazyOptional<INetworkNodeProxy<N>> networkNodeProxy = LazyOptional.of(() -> this);
@@ -51,24 +46,6 @@ public abstract class NetworkNodeTile<N extends NetworkNode> extends BaseTile im
getNode().setRedstoneMode(mode);
}
public CompoundNBT writeUpdate(CompoundNBT tag) {
super.writeUpdate(tag);
if (getNode() instanceof ICoverable) {
tag.put(NBT_COVERS, ((ICoverable) getNode()).getCoverManager().writeToNbt());
}
return tag;
}
public void readUpdate(CompoundNBT tag) {
super.readUpdate(tag);
if (getNode() instanceof ICoverable && tag.contains(NBT_COVERS)) {
((ICoverable) getNode()).getCoverManager().readFromNbt(tag.getList(NBT_COVERS, Constants.NBT.TAG_COMPOUND));
}
}
@Override
@Nonnull
@SuppressWarnings("unchecked")

View File

@@ -4,27 +4,18 @@ import com.google.common.collect.Lists;
import com.mojang.blaze3d.platform.GlStateManager;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import net.minecraft.block.BlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.model.BakedQuad;
import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.texture.MissingTextureSprite;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.client.renderer.vertex.VertexFormat;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.Direction;
import net.minecraft.util.NonNullList;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.Style;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.client.ForgeHooksClient;
import net.minecraftforge.client.MinecraftForgeClient;
import net.minecraftforge.client.event.RenderTooltipEvent;
import net.minecraftforge.common.ForgeMod;
import net.minecraftforge.common.MinecraftForge;
@@ -34,7 +25,6 @@ import net.minecraftforge.fml.client.config.GuiUtils;
import javax.annotation.Nonnull;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Set;
public final class RenderUtils {
@@ -275,51 +265,6 @@ public final class RenderUtils {
return format;
}
@SuppressWarnings("deprecation")
public static TextureAtlasSprite getSprite(IBakedModel coverModel, BlockState coverState, Direction facing, Random rand) {
TextureAtlasSprite sprite = null;
BlockRenderLayer originalLayer = MinecraftForgeClient.getRenderLayer();
try {
for (BlockRenderLayer layer : BlockRenderLayer.values()) {
ForgeHooksClient.setRenderLayer(layer);
for (BakedQuad bakedQuad : coverModel.getQuads(coverState, facing, rand)) {
return bakedQuad.getSprite();
}
for (BakedQuad bakedQuad : coverModel.getQuads(coverState, null, rand)) {
if (sprite == null) {
sprite = bakedQuad.getSprite();
}
if (bakedQuad.getFace() == facing) {
return bakedQuad.getSprite();
}
}
}
} catch (Exception e) {
// NO OP
} finally {
ForgeHooksClient.setRenderLayer(originalLayer);
}
if (sprite == null) {
try {
sprite = coverModel.getParticleTexture();
} catch (Exception e) {
// NO OP
}
}
if (sprite == null) {
sprite = MissingTextureSprite.func_217790_a();
}
return sprite;
}
public static boolean inBounds(int x, int y, int w, int h, double ox, double oy) {
return ox >= x && ox <= x + w && oy >= y && oy <= y + h;
}

View File

@@ -1,18 +0,0 @@
{
"forge_marker": 1,
"defaults": {
"textures": {
"cable": "refinedstorage:blocks/cable"
},
"model": "refinedstorage:cable_core",
"uvlock": true
},
"variants": {
"inventory": [
{
"model": "refinedstorage:cable_core",
"transform": "forge:default-block"
}
]
}
}

View File

@@ -1,18 +0,0 @@
{
"forge_marker": 1,
"defaults": {
"textures": {
"cable": "refinedstorage:blocks/cable"
},
"model": "refinedstorage:cable_core",
"uvlock": true
},
"variants": {
"inventory": [
{
"model": "refinedstorage:cable_core",
"transform": "forge:default-block"
}
]
}
}

View File

@@ -269,9 +269,6 @@
"item.refinedstorage.wrench": "Wrench",
"item.refinedstorage.security_card": "Security Card",
"item.refinedstorage.security_card.owner": "Bound to: %s",
"item.refinedstorage.cutting_tool": "Cutting Tool",
"item.refinedstorage:cover": "Cover",
"item.refinedstorage:hollow_cover": "Hollow Cover",
"item.refinedstorage.processor_binding": "Processor Binding",
"commands.refinedstorage.createdisk.usage": "/createdisk <player> <item> <metadata> <id>",
"commands.refinedstorage.createdisk.error.notADisk": "The given disk item is not a disk.",

View File

@@ -1,6 +0,0 @@
{
"parent": "item/generated",
"textures": {
"layer0": "refinedstorage:item/cutting_tool"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,19 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
" E",
" S ",
"S "
],
"key": {
"S": {
"tag": "forge:rods/wooden"
},
"E": {
"item": "refinedstorage:quartz_enriched_iron"
}
},
"result": {
"item": "refinedstorage:cutting_tool"
}
}