diff --git a/build.gradle b/build.gradle index f4caed76d..982c41889 100755 --- a/build.gradle +++ b/build.gradle @@ -97,20 +97,6 @@ sourceSets { main.resources.srcDirs += 'src/generated/resources' } -processResources { - inputs.property 'version', project.version - - from(sourceSets.main.resources.srcDirs) { - include 'META-INF/mods.toml' - - expand 'version': project.version - } - - from(sourceSets.main.resources.srcDirs) { - exclude 'META-INF/mods.toml' - } -} - dependencies { minecraft 'net.minecraftforge:forge:1.16.5-36.1.31' diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ExternalStorageNetworkNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ExternalStorageNetworkNode.java index 8620a8f45..99c7431b8 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ExternalStorageNetworkNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ExternalStorageNetworkNode.java @@ -2,6 +2,7 @@ package com.refinedmods.refinedstorage.apiimpl.network.node; import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.api.network.INetwork; +import com.refinedmods.refinedstorage.api.network.node.ICoverable; import com.refinedmods.refinedstorage.api.storage.AccessType; import com.refinedmods.refinedstorage.api.storage.IStorage; import com.refinedmods.refinedstorage.api.storage.IStorageProvider; @@ -12,6 +13,7 @@ import com.refinedmods.refinedstorage.api.storage.externalstorage.IExternalStora import com.refinedmods.refinedstorage.api.storage.externalstorage.IExternalStorageProvider; import com.refinedmods.refinedstorage.api.util.IComparer; import com.refinedmods.refinedstorage.apiimpl.API; +import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; import com.refinedmods.refinedstorage.apiimpl.storage.cache.FluidStorageCache; import com.refinedmods.refinedstorage.apiimpl.storage.cache.ItemStorageCache; import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory; @@ -39,7 +41,7 @@ import org.apache.logging.log4j.Logger; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; -public class ExternalStorageNetworkNode extends NetworkNode implements IStorageProvider, IStorageScreen, IComparable, IWhitelistBlacklist, IPrioritizable, IType, IAccessType, IExternalStorageContext { +public class ExternalStorageNetworkNode extends NetworkNode implements IStorageProvider, IStorageScreen, IComparable, IWhitelistBlacklist, IPrioritizable, IType, IAccessType, IExternalStorageContext, ICoverable { public static final ResourceLocation ID = new ResourceLocation(RS.ID, "external_storage"); private static final Logger LOGGER = LogManager.getLogger(ExternalStorageNetworkNode.class); @@ -63,8 +65,11 @@ public class ExternalStorageNetworkNode extends NetworkNode implements IStorageP private final List> itemStorages = new CopyOnWriteArrayList<>(); private final List> fluidStorages = new CopyOnWriteArrayList<>(); + private CoverManager coverManager; + public ExternalStorageNetworkNode(World world, BlockPos pos) { super(world, pos); + this.coverManager = new CoverManager(this); } @Override @@ -319,4 +324,27 @@ public class ExternalStorageNetworkNode extends NetworkNode implements IStorageP public List> getFluidStorages() { return fluidStorages; } + + @Override + public CoverManager getCoverManager() { + return coverManager; + } + + @Override + public void read(CompoundNBT tag) { + super.read(tag); + + if (tag.contains("Cover")) this.coverManager.readFromNbt(tag.getCompound("Cover")); + } + + + + @Override + public CompoundNBT write(CompoundNBT tag) { + super.write(tag); + + tag.put("Cover", this.coverManager.writeToNbt()); + + return tag; + } } diff --git a/src/main/java/com/refinedmods/refinedstorage/block/ExternalStorageBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/ExternalStorageBlock.java index 7d69ab68b..67255e7f0 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/ExternalStorageBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/ExternalStorageBlock.java @@ -50,13 +50,13 @@ public class ExternalStorageBlock extends CableBlock { @Override public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext ctx) { - return ShapeCache.getOrCreate(state, s -> { + return ConstantsCable.addCoverVoxelShapes(ShapeCache.getOrCreate(state, s -> { VoxelShape shape = getCableShape(s); shape = VoxelShapes.or(shape, getHeadShape(s)); - return ConstantsCable.addCoverVoxelShapes(shape, world, pos); - }); + return shape; + }), world, pos); } private VoxelShape getHeadShape(BlockState state) { diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/BakedModelCover.java b/src/main/java/com/refinedmods/refinedstorage/render/model/BakedModelCover.java index 4e2592f9d..4ee1b2ace 100644 --- a/src/main/java/com/refinedmods/refinedstorage/render/model/BakedModelCover.java +++ b/src/main/java/com/refinedmods/refinedstorage/render/model/BakedModelCover.java @@ -100,7 +100,7 @@ public class BakedModelCover extends BakedModelCableCover{ public ItemOverrideList getOverrides() { return new ItemOverrideList() { @Override - public IBakedModel func_239290_a_(IBakedModel originalModel, ItemStack stack, @Nullable ClientWorld world, @Nullable LivingEntity entity) { + public IBakedModel getOverrideModel(IBakedModel originalModel, ItemStack stack, @Nullable ClientWorld world, @Nullable LivingEntity entity) { return new BakedModelCover(stack, type); } }; @@ -152,7 +152,7 @@ public class BakedModelCover extends BakedModelCableCover{ } @Override - public boolean func_230044_c_() { + public boolean isSideLit() { return true; } } diff --git a/src/main/java/com/refinedmods/refinedstorage/setup/ClientSetup.java b/src/main/java/com/refinedmods/refinedstorage/setup/ClientSetup.java index a945dfb8b..579d66fca 100644 --- a/src/main/java/com/refinedmods/refinedstorage/setup/ClientSetup.java +++ b/src/main/java/com/refinedmods/refinedstorage/setup/ClientSetup.java @@ -108,6 +108,7 @@ public class ClientSetup { bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "importer"), (base, registry) -> new BakedModelCableCover(base)); bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "constructor"), (base, registry) -> new BakedModelCableCover(new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/constructor/cutouts/connected")))); bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "destructor"), (base, registry) -> new BakedModelCableCover(new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/destructor/cutouts/connected")))); + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "external_storage"), (base, registry) -> new BakedModelCableCover(base)); bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "cover"), (base, registry) -> new BakedModelCover(ItemStack.EMPTY, CoverType.NORMAL)); bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "hollow_cover"), (base, registry) -> new BakedModelCover(ItemStack.EMPTY, CoverType.HOLLOW)); diff --git a/src/main/java/com/refinedmods/refinedstorage/tile/DestructorTile.java b/src/main/java/com/refinedmods/refinedstorage/tile/DestructorTile.java index 5498d723a..94804686f 100644 --- a/src/main/java/com/refinedmods/refinedstorage/tile/DestructorTile.java +++ b/src/main/java/com/refinedmods/refinedstorage/tile/DestructorTile.java @@ -44,6 +44,7 @@ public class DestructorTile extends NetworkNodeTile { dataManager.addWatchedParameter(WHITELIST_BLACKLIST); dataManager.addWatchedParameter(TYPE); dataManager.addWatchedParameter(PICKUP); + dataManager.addWatchedParameter(COVER_MANAGER); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/tile/ExternalStorageTile.java b/src/main/java/com/refinedmods/refinedstorage/tile/ExternalStorageTile.java index 8d9fbc4d5..c2da86ca8 100644 --- a/src/main/java/com/refinedmods/refinedstorage/tile/ExternalStorageTile.java +++ b/src/main/java/com/refinedmods/refinedstorage/tile/ExternalStorageTile.java @@ -4,12 +4,20 @@ import com.refinedmods.refinedstorage.RSTiles; import com.refinedmods.refinedstorage.api.storage.AccessType; import com.refinedmods.refinedstorage.api.storage.externalstorage.IExternalStorage; import com.refinedmods.refinedstorage.apiimpl.network.node.ExternalStorageNetworkNode; +import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; import com.refinedmods.refinedstorage.tile.config.*; import com.refinedmods.refinedstorage.tile.data.RSSerializers; +import com.refinedmods.refinedstorage.tile.data.TileDataManager; import com.refinedmods.refinedstorage.tile.data.TileDataParameter; +import com.refinedmods.refinedstorage.util.WorldUtils; +import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.network.datasync.DataSerializers; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.client.model.data.IModelData; +import net.minecraftforge.client.model.data.ModelDataMap; import net.minecraftforge.fluids.FluidStack; import javax.annotation.Nonnull; @@ -47,6 +55,15 @@ public class ExternalStorageTile extends NetworkNodeTile COVER_MANAGER = new TileDataParameter<>(DataSerializers.COMPOUND_NBT, new CompoundNBT(), + t -> t.getNode().getCoverManager().writeToNbt(), + (t, v) -> t.getNode().getCoverManager().readFromNbt(v), + (initial, p) -> Minecraft.getInstance().enqueue(() -> {})); + + static { + TileDataManager.registerParameter(COVER_MANAGER); + } + public ExternalStorageTile() { super(RSTiles.EXTERNAL_STORAGE); @@ -57,6 +74,7 @@ public class ExternalStorageTile extends NetworkNodeTile