diff --git a/java/javapower/storagetech/block/BBaseContainer.java b/java/javapower/storagetech/block/BBaseContainer.java index 6dd6928..8c0918a 100644 --- a/java/javapower/storagetech/block/BBaseContainer.java +++ b/java/javapower/storagetech/block/BBaseContainer.java @@ -1,52 +1,45 @@ package javapower.storagetech.block; import javapower.storagetech.core.StorageTech; -import javapower.storagetech.util.IBlockRegister; -import javapower.storagetech.util.IRenderItemRegister; -import javapower.storagetech.util.ITileRegister; -import javapower.storagetech.util.ItemRenderCast; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; +import net.minecraft.block.Block; +import net.minecraft.block.ContainerBlock; +import net.minecraft.item.BlockItem; import net.minecraft.item.Item; -import net.minecraft.item.ItemBlock; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -public abstract class BBaseContainer extends BlockContainer implements IBlockRegister, IRenderItemRegister, ITileRegister +public abstract class BBaseContainer extends ContainerBlock { - String _name; - Item thisItem; + protected Item thisItem; + public String name; - public BBaseContainer(Material materialIn, String name) + protected BBaseContainer(Properties builder, String _name) { - super(materialIn); - setRegistryName(name); - setUnlocalizedName(name); - _name = name; - setCreativeTab(StorageTech.creativeTab); - setHardness(2.5F); - setResistance(3F); + super(builder); + name = _name; + setRegistryName(StorageTech.MODID,name); } - @Override public Item getItem() { if(thisItem == null) { - thisItem = new ItemBlock(this); - thisItem.setRegistryName(_name); + thisItem = new BlockItem(this, new Item.Properties().group(StorageTech.creativeTab)); + thisItem.setRegistryName(StorageTech.MODID,name); } return thisItem; } @Override - @SideOnly(Side.CLIENT) - public ItemRenderCast[] getItemsRender() + public Item asItem() { - return new ItemRenderCast[] - { - new ItemRenderCast(0, "inventory") - }; + return getItem(); } + @Override + public Block getBlock() + { + return this; + } + + + } diff --git a/java/javapower/storagetech/block/BlockCustomStorage.java b/java/javapower/storagetech/block/BlockCustomStorage.java new file mode 100644 index 0000000..3ac29b2 --- /dev/null +++ b/java/javapower/storagetech/block/BlockCustomStorage.java @@ -0,0 +1,203 @@ +package javapower.storagetech.block; + +import java.util.List; +import java.util.UUID; + +import javax.annotation.Nullable; + +import com.refinedmods.refinedstorage.RSBlocks; +import com.refinedmods.refinedstorage.api.storage.disk.IStorageDisk; +import com.refinedmods.refinedstorage.api.storage.disk.StorageDiskSyncData; +import com.refinedmods.refinedstorage.apiimpl.API; +import com.refinedmods.refinedstorage.apiimpl.network.node.storage.StorageNetworkNode; +import com.refinedmods.refinedstorage.block.NetworkNodeBlock; +import com.refinedmods.refinedstorage.container.factory.PositionalTileContainerProvider; +import com.refinedmods.refinedstorage.item.blockitem.BaseBlockItem; +import com.refinedmods.refinedstorage.render.Styles; +import com.refinedmods.refinedstorage.util.NetworkUtils; + +import javapower.storagetech.container.CustomStorageContainer; +import javapower.storagetech.core.StorageTech; +import javapower.storagetech.item.ItemMemoryItem; +import javapower.storagetech.node.CustomStorageNetworkNode; +import javapower.storagetech.tileentity.CustomStorageTile; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.inventory.InventoryHelper; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ActionResult; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; +import net.minecraft.world.server.ServerWorld; +import net.minecraftforge.fml.network.NetworkHooks; + +public class BlockCustomStorage extends NetworkNodeBlock +{ + protected Item thisItem; + public static String raw_name = "customstorageblock"; + + public BlockCustomStorage() + { + super(STBlocks.DEFAULT_BLOCK_PROPERTIES); + setRegistryName(StorageTech.MODID, raw_name); + } + + public Item getItem() + { + if(thisItem == null) + { + thisItem = new BaseBlockItem(this, new Item.Properties().group(StorageTech.creativeTab)) + { + @Override + public void addInformation(ItemStack stack, @Nullable World world, List tooltip, ITooltipFlag flag) + { + super.addInformation(stack, world, tooltip, flag); + + if (isValid(stack)) + { + UUID id = getId(stack); + + API.instance().getStorageDiskSync().sendRequest(id); + + StorageDiskSyncData data = API.instance().getStorageDiskSync().getData(id); + if (data != null) { + if (data.getCapacity() == -1) { + tooltip.add(new TranslationTextComponent("misc.refinedstorage.storage.stored", API.instance().getQuantityFormatter().format(data.getStored())).setStyle(Styles.GRAY)); + } else { + tooltip.add(new TranslationTextComponent("misc.refinedstorage.storage.stored_capacity", API.instance().getQuantityFormatter().format(data.getStored()), API.instance().getQuantityFormatter().format(data.getCapacity())).setStyle(Styles.GRAY)); + } + } + + if (flag.isAdvanced()) { + tooltip.add(new StringTextComponent(id.toString()).setStyle(Styles.GRAY)); + } + } + } + + @Override + public ActionResult onItemRightClick(World world, PlayerEntity player, Hand hand) + { + ItemStack storageStack = player.getHeldItem(hand); + + if (!world.isRemote && player.isCrouching()) + { + UUID diskId = null; + IStorageDisk disk = null; + + if (isValid(storageStack)) { + diskId = getId(storageStack); + disk = API.instance().getStorageDiskManager((ServerWorld) world).get(diskId); + } + + // Newly created storages won't have a tag yet, so allow invalid disks as well. + if (disk == null || disk.getStored() == 0) + { + ItemStack storagePart = ItemMemoryItem.createItem(disk.getCapacity()); + + if (!player.inventory.addItemStackToInventory(storagePart.copy())) + { + InventoryHelper.spawnItemStack(world, player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ(), storagePart); + } + + if (disk != null) + { + API.instance().getStorageDiskManager((ServerWorld) world).remove(diskId); + API.instance().getStorageDiskManager((ServerWorld) world).markForSaving(); + } + + return new ActionResult<>(ActionResultType.SUCCESS, new ItemStack(RSBlocks.MACHINE_CASING)); + } + } + + return new ActionResult<>(ActionResultType.PASS, storageStack); + } + + @Override + public int getEntityLifespan(ItemStack stack, World world) + { + return Integer.MAX_VALUE; + } + + private UUID getId(ItemStack disk) + { + return disk.getTag().getUniqueId(StorageNetworkNode.NBT_ID); + } + + private boolean isValid(ItemStack disk) + { + return disk.hasTag() && disk.getTag().hasUniqueId(StorageNetworkNode.NBT_ID); + } + + }; + + thisItem.setRegistryName(StorageTech.MODID,raw_name); + } + return thisItem; + } + + @Override + public Item asItem() + { + return getItem(); + } + + @Override + public Block getBlock() + { + return this; + } + + @Override + public void onBlockPlacedBy(World world, BlockPos pos, BlockState state, @Nullable LivingEntity entity, ItemStack stack) + { + if (!world.isRemote) + { + CustomStorageNetworkNode storage = ((CustomStorageTile) world.getTileEntity(pos)).getNode(); + + if (stack.hasTag() && stack.getTag().hasUniqueId(CustomStorageNetworkNode.NBT_ID)) + { + storage.setStorageId(stack.getTag().getUniqueId(CustomStorageNetworkNode.NBT_ID)); + } + + storage.loadStorage(); + } + + super.onBlockPlacedBy(world, pos, state, entity, stack); + } + + @Nullable + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) + { + return new CustomStorageTile(); + } + + @Override + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) + { + if (!world.isRemote) + { + return NetworkUtils.attemptModify(world, pos, hit.getFace(), player, () -> NetworkHooks.openGui((ServerPlayerEntity) player, new PositionalTileContainerProvider( + ((CustomStorageTile) world.getTileEntity(pos)).getNode().getTitle(), + (tile, windowId, inventory, p) -> new CustomStorageContainer(tile, player, windowId), + pos + ), pos)); + } + + return ActionResultType.SUCCESS; + } + +} diff --git a/java/javapower/storagetech/block/BlockDiskWorkbench.java b/java/javapower/storagetech/block/BlockDiskWorkbench.java index ba9d833..1fd6223 100644 --- a/java/javapower/storagetech/block/BlockDiskWorkbench.java +++ b/java/javapower/storagetech/block/BlockDiskWorkbench.java @@ -1,121 +1,170 @@ package javapower.storagetech.block; +import java.util.List; + +import com.refinedmods.refinedstorage.container.factory.PositionalTileContainerProvider; +import com.refinedmods.refinedstorage.render.Styles; + import javapower.storagetech.container.ContainerDiskWorkbench; import javapower.storagetech.core.StorageTech; -import javapower.storagetech.gui.GuiContainerDiskWorkbench; -import javapower.storagetech.item.ItemMemory; import javapower.storagetech.tileentity.TileEntityDiskWorkbench; -import javapower.storagetech.util.GuiUtils; -import javapower.storagetech.util.IGuiRegister; -import javapower.storagetech.util.TileNamed; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.block.state.IBlockState; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; +import javapower.storagetech.util.Tools; +import net.minecraft.block.BlockRenderType; +import net.minecraft.block.BlockState; +import net.minecraft.client.resources.I18n; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.inventory.InventoryHelper; +import net.minecraft.item.BlockItem; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumBlockRenderType; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.EnumHand; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockAccess; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.IBlockReader; import net.minecraft.world.World; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; +import net.minecraft.world.storage.loot.LootContext.Builder; +import net.minecraftforge.fml.network.NetworkHooks; -public class BlockDiskWorkbench extends BBaseContainer implements IGuiRegister +public class BlockDiskWorkbench extends BBaseContainer { - public BlockDiskWorkbench() { - super(Material.IRON, "diskworkbench"); + super(STBlocks.DEFAULT_BLOCK_PROPERTIES, "diskworkbench"); } @Override - public Block getBlock() - { - return this; - } - - @Override - public TileNamed[] getTilesEntity() - { - return new TileNamed[]{new TileNamed(TileEntityDiskWorkbench.class, "diskworkbench")}; - } - - @Override - public TileEntity createNewTileEntity(World worldIn, int meta) + public TileEntity createNewTileEntity(IBlockReader worldIn) { return new TileEntityDiskWorkbench(); } - // ---------- Render ---------- - @Override - public EnumBlockRenderType getRenderType(IBlockState state) + public Item getItem() { - return EnumBlockRenderType.MODEL; + if(thisItem == null) + { + thisItem = new BlockItem(this, new Item.Properties().group(StorageTech.creativeTab)) + { + @Override + public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) + { + if(stack.hasTag()) + { + CompoundNBT nbt = stack.getTag(); + if(nbt.contains("memory")) + tooltip.add(new TranslationTextComponent(I18n.format("storagetech.tooltip.memory")+": "+Tools.longFormatToString(nbt.getLong("memory"))+" VIB")); + if(nbt.contains("prosses")) + tooltip.add(new TranslationTextComponent(I18n.format("storagetech.tooltip.inprocess")+": "+nbt.getBoolean("prosses")).setStyle(Styles.GRAY)); + } + super.addInformation(stack, worldIn, tooltip, flagIn); + } + + @Override + protected boolean placeBlock(BlockItemUseContext context, BlockState newState) + { + World world = context.getWorld(); + BlockPos pos = context.getPos(); + ItemStack stack = context.getPlayer().getHeldItem(context.getHand()); + + //if (!world.setBlockState(pos, newState, 11)) return false; + if(!super.placeBlock(context, newState)) + return false; + + if (newState.getBlock() == this.getBlock()) + { + setTileEntityNBT(world, context.getPlayer(), pos, stack); + + if(stack.hasTag()) + { + TileEntity tile = world.getTileEntity(pos); + if(tile != null && tile instanceof TileEntityDiskWorkbench) + { + ((TileEntityDiskWorkbench)tile).readFromNBT(stack.getTag()); + } + } + + this.getBlock().onBlockPlacedBy(world, pos, newState, context.getPlayer(), stack); + } + + return true; + } + }; + thisItem.setRegistryName(StorageTech.MODID,name); + } + return thisItem; } @Override - public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) + public void onBlockHarvested(World world, BlockPos pos, BlockState state, PlayerEntity player) { - if(!playerIn.isSneaking()) - GuiUtils.openGui(playerIn, StorageTech.MODID, 0, worldIn, pos); - //playerIn.openGui(StorageTech.MODID, 0, worldIn, pos.getX(), pos.getY(), pos.getZ()); - return true; - } - - public void getDropsBlock(NonNullList drops, IBlockAccess world, BlockPos pos) - { - TileEntity te = world.getTileEntity(pos); + super.onBlockHarvested(world, pos, state, player); + if(world.isRemote) + return; + + if(player.isCreative()) + return; + + ItemStack itemblock = new ItemStack(getItem(), 1); + CompoundNBT nbt = new CompoundNBT(); + + TileEntity te = world.getTileEntity(pos); if(te instanceof TileEntityDiskWorkbench) { TileEntityDiskWorkbench te_dwb = (TileEntityDiskWorkbench) te; - for(ItemStack is : te_dwb.block_inv_content) - drops.add(is); - - if(te_dwb.memory > 0) - { - drops.add(ItemMemory.createItem(te_dwb.memory, false)); - } + te_dwb.write(nbt); + nbt.remove("x"); + nbt.remove("y"); + nbt.remove("z"); + itemblock.setTag(nbt); } + InventoryHelper.spawnItemStack(world, pos.getX(), pos.getY(), pos.getZ(), itemblock); + } @Override - public void breakBlock(World worldIn, BlockPos pos, IBlockState state) + public List getDrops(BlockState state, Builder builder) { - if(!worldIn.isRemote) - { - NonNullList items = NonNullList.create(); - getDropsBlock(items, worldIn, pos); - for(ItemStack item : items) - { - InventoryHelper.spawnItemStack(worldIn, pos.getX(), pos.getY(), pos.getZ(), item); - } - - } - super.breakBlock(worldIn, pos, state); + return NonNullList.create(); } - // ---------- user interface ---------- - + + // ---------- Render ---------- + @Override - @SideOnly(Side.CLIENT) - public GuiContainer getGui(TileEntity tile, EntityPlayer player) + public BlockRenderType getRenderType(BlockState state) { - return new GuiContainerDiskWorkbench((TileEntityDiskWorkbench) tile, player); + return BlockRenderType.MODEL; } - + @Override - public Container getContainer(TileEntity tile, EntityPlayer player) + public ActionResultType onBlockActivated(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult p_225533_6_) { - // TODO Auto-generated method stub - return new ContainerDiskWorkbench((TileEntityDiskWorkbench) tile, player); + + if(!worldIn.isRemote) + { + NetworkHooks.openGui + ( + (ServerPlayerEntity) player, + new PositionalTileContainerProvider + ( + ((TileEntityDiskWorkbench) worldIn.getTileEntity(pos)).getDisplayName(), + (tile, windowId, inventory, p) -> new ContainerDiskWorkbench(windowId, tile, inventory), + pos + ), + pos + ); + } + + return ActionResultType.SUCCESS; } } diff --git a/java/javapower/storagetech/block/BlockFluidDiskWorkbench.java b/java/javapower/storagetech/block/BlockFluidDiskWorkbench.java index fa2cd91..a6ccf0b 100644 --- a/java/javapower/storagetech/block/BlockFluidDiskWorkbench.java +++ b/java/javapower/storagetech/block/BlockFluidDiskWorkbench.java @@ -1,119 +1,170 @@ package javapower.storagetech.block; +import java.util.List; + +import com.refinedmods.refinedstorage.container.factory.PositionalTileContainerProvider; +import com.refinedmods.refinedstorage.render.Styles; + import javapower.storagetech.container.ContainerFluidDiskWorkbench; import javapower.storagetech.core.StorageTech; -import javapower.storagetech.gui.GuiContainerFluidDiskWorkbench; -import javapower.storagetech.item.ItemMemory; import javapower.storagetech.tileentity.TileEntityFluidDiskWorkbench; -import javapower.storagetech.util.GuiUtils; -import javapower.storagetech.util.IGuiRegister; -import javapower.storagetech.util.TileNamed; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.block.state.IBlockState; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; +import javapower.storagetech.util.Tools; +import net.minecraft.block.BlockRenderType; +import net.minecraft.block.BlockState; +import net.minecraft.client.resources.I18n; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.inventory.InventoryHelper; +import net.minecraft.item.BlockItem; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumBlockRenderType; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.EnumHand; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockAccess; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.IBlockReader; import net.minecraft.world.World; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; +import net.minecraft.world.storage.loot.LootContext.Builder; +import net.minecraftforge.fml.network.NetworkHooks; -public class BlockFluidDiskWorkbench extends BBaseContainer implements IGuiRegister +public class BlockFluidDiskWorkbench extends BBaseContainer { - public BlockFluidDiskWorkbench() { - super(Material.IRON, "fluiddiskworkbench"); + super(STBlocks.DEFAULT_BLOCK_PROPERTIES, "fluiddiskworkbench"); } @Override - public Block getBlock() - { - return this; - } - - @Override - public TileNamed[] getTilesEntity() - { - return new TileNamed[]{new TileNamed(TileEntityFluidDiskWorkbench.class, "fluiddiskworkbench")}; - } - - @Override - public TileEntity createNewTileEntity(World worldIn, int meta) + public TileEntity createNewTileEntity(IBlockReader worldIn) { return new TileEntityFluidDiskWorkbench(); } - // ---------- Render ---------- - @Override - public EnumBlockRenderType getRenderType(IBlockState state) + public Item getItem() { - return EnumBlockRenderType.MODEL; + if(thisItem == null) + { + thisItem = new BlockItem(this, new Item.Properties().group(StorageTech.creativeTab)) + { + @Override + public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) + { + if(stack.hasTag()) + { + CompoundNBT nbt = stack.getTag(); + if(nbt.contains("memory")) + tooltip.add(new TranslationTextComponent(I18n.format("storagetech.tooltip.memory")+": "+Tools.longFormatToString(nbt.getLong("memory"))+" VFT")); + if(nbt.contains("prosses")) + tooltip.add(new TranslationTextComponent(I18n.format("storagetech.tooltip.inprocess")+": "+nbt.getBoolean("prosses")).setStyle(Styles.GRAY)); + } + super.addInformation(stack, worldIn, tooltip, flagIn); + } + + @Override + protected boolean placeBlock(BlockItemUseContext context, BlockState newState) + { + World world = context.getWorld(); + BlockPos pos = context.getPos(); + ItemStack stack = context.getPlayer().getHeldItem(context.getHand()); + + //if (!world.setBlockState(pos, newState, 11)) return false; + if(!super.placeBlock(context, newState)) + return false; + + if (newState.getBlock() == this.getBlock()) + { + setTileEntityNBT(world, context.getPlayer(), pos, stack); + + if(stack.hasTag()) + { + TileEntity tile = world.getTileEntity(pos); + if(tile != null && tile instanceof TileEntityFluidDiskWorkbench) + { + ((TileEntityFluidDiskWorkbench)tile).readFromNBT(stack.getTag()); + } + } + + this.getBlock().onBlockPlacedBy(world, pos, newState, context.getPlayer(), stack); + } + + return true; + } + }; + thisItem.setRegistryName(StorageTech.MODID,name); + } + return thisItem; } @Override - public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) + public void onBlockHarvested(World world, BlockPos pos, BlockState state, PlayerEntity player) { - if(!playerIn.isSneaking()) - GuiUtils.openGui(playerIn, StorageTech.MODID, 0, worldIn, pos); - return true; - } - - public void getDropsBlock(NonNullList drops, IBlockAccess world, BlockPos pos) - { - TileEntity te = world.getTileEntity(pos); + super.onBlockHarvested(world, pos, state, player); + if(world.isRemote) + return; + + if(player.isCreative()) + return; + + ItemStack itemblock = new ItemStack(getItem(), 1); + CompoundNBT nbt = new CompoundNBT(); + + TileEntity te = world.getTileEntity(pos); if(te instanceof TileEntityFluidDiskWorkbench) { TileEntityFluidDiskWorkbench te_dwb = (TileEntityFluidDiskWorkbench) te; - for(ItemStack is : te_dwb.block_inv_content) - drops.add(is); - - if(te_dwb.memory > 0) - { - drops.add(ItemMemory.createItem(te_dwb.memory, true)); - } + te_dwb.write(nbt); + nbt.remove("x"); + nbt.remove("y"); + nbt.remove("z"); + itemblock.setTag(nbt); } + InventoryHelper.spawnItemStack(world, pos.getX(), pos.getY(), pos.getZ(), itemblock); + } @Override - public void breakBlock(World worldIn, BlockPos pos, IBlockState state) + public List getDrops(BlockState state, Builder builder) { - if(!worldIn.isRemote) - { - NonNullList items = NonNullList.create(); - getDropsBlock(items, worldIn, pos); - for(ItemStack item : items) - { - InventoryHelper.spawnItemStack(worldIn, pos.getX(), pos.getY(), pos.getZ(), item); - } - - } - super.breakBlock(worldIn, pos, state); + return NonNullList.create(); } - // ---------- user interface ---------- - + + // ---------- Render ---------- + @Override - @SideOnly(Side.CLIENT) - public GuiContainer getGui(TileEntity tile, EntityPlayer player) + public BlockRenderType getRenderType(BlockState state) { - return new GuiContainerFluidDiskWorkbench((TileEntityFluidDiskWorkbench) tile, player); + return BlockRenderType.MODEL; } - + @Override - public Container getContainer(TileEntity tile, EntityPlayer player) + public ActionResultType onBlockActivated(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult p_225533_6_) { - return new ContainerFluidDiskWorkbench((TileEntityFluidDiskWorkbench) tile, player); + + if(!worldIn.isRemote) + { + NetworkHooks.openGui + ( + (ServerPlayerEntity) player, + new PositionalTileContainerProvider + ( + ((TileEntityFluidDiskWorkbench) worldIn.getTileEntity(pos)).getDisplayName(), + (tile, windowId, inventory, p) -> new ContainerFluidDiskWorkbench(windowId, tile, inventory), + pos + ), + pos + ); + } + + return ActionResultType.SUCCESS; } } diff --git a/java/javapower/storagetech/block/BlockGenerator.java b/java/javapower/storagetech/block/BlockGenerator.java new file mode 100644 index 0000000..d31cddb --- /dev/null +++ b/java/javapower/storagetech/block/BlockGenerator.java @@ -0,0 +1,74 @@ +package javapower.storagetech.block; + +import javapower.storagetech.core.StorageTech; +import net.minecraft.block.BlockRenderType; +import net.minecraft.block.BlockState; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.Direction; +import net.minecraft.world.IBlockReader; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.energy.CapabilityEnergy; +import net.minecraftforge.energy.IEnergyStorage; +import net.minecraftforge.registries.ObjectHolder; + +public class BlockGenerator extends BBaseContainer +{ + + protected BlockGenerator() + { + super(STBlocks.DEFAULT_BLOCK_PROPERTIES, "generator"); + } + + @Override + public TileEntity createNewTileEntity(IBlockReader worldIn) + { + return new TileEntityGenerator(); + } + + // ---------- Render ---------- + @Override + public BlockRenderType getRenderType(BlockState state) + { + return BlockRenderType.MODEL; + } + + + public static class TileEntityGenerator extends TileEntity implements ITickableTileEntity + { + @ObjectHolder(StorageTech.MODID+":generator") + public static final TileEntityType CURRENT_TILE = null; + + public TileEntityGenerator() + { + super(CURRENT_TILE); + } + + @Override + public void tick() + { + if(world != null && !world.isRemote) + for(Direction dir : Direction.values()) + { + TileEntity tileSide = world.getTileEntity(pos.offset(dir)); + if(tileSide != null) + { + LazyOptional energycap = tileSide.getCapability(CapabilityEnergy.ENERGY, dir.getOpposite()); + if(energycap != null) + { + energycap.ifPresent(storage -> + { + if(storage.canReceive()) + { + storage.receiveEnergy(200, false); + } + }); + } + } + } + } + + } + +} diff --git a/java/javapower/storagetech/block/STBlocks.java b/java/javapower/storagetech/block/STBlocks.java index 644b2b6..470ad0e 100644 --- a/java/javapower/storagetech/block/STBlocks.java +++ b/java/javapower/storagetech/block/STBlocks.java @@ -1,9 +1,67 @@ package javapower.storagetech.block; +import com.refinedmods.refinedstorage.container.factory.PositionalTileContainerFactory; + +import javapower.storagetech.container.ContainerDiskWorkbench; +import javapower.storagetech.container.ContainerFluidDiskWorkbench; +import javapower.storagetech.core.StorageTech; +import javapower.storagetech.tileentity.TileEntityDiskWorkbench; +import javapower.storagetech.tileentity.TileEntityFluidDiskWorkbench; import net.minecraft.block.Block; +import net.minecraft.block.SoundType; +import net.minecraft.block.material.Material; +import net.minecraft.inventory.container.ContainerType; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntityType; +import net.minecraftforge.common.extensions.IForgeContainerType; +import net.minecraftforge.registries.IForgeRegistry; public class STBlocks { - public static final Block block_diskWorkbench = new BlockDiskWorkbench(); - public static final Block block_fluiddiskWorkbench = new BlockFluidDiskWorkbench(); + public static final Block.Properties DEFAULT_BLOCK_PROPERTIES = Block.Properties.create(Material.IRON).hardnessAndResistance(2.5F).sound(SoundType.METAL); + + public static final BlockDiskWorkbench blockDiskWorkbench = new BlockDiskWorkbench(); + public static final BlockFluidDiskWorkbench blockFluidDiskWorkbench = new BlockFluidDiskWorkbench(); + //public static final BlockCustomStorage blockCustomStorage = new BlockCustomStorage(); + + public static final BlockGenerator blockGenerator = new BlockGenerator(); + + public static void registerBlocks(IForgeRegistry registry) + { + registry.register(blockDiskWorkbench.getBlock()); + registry.register(blockFluidDiskWorkbench.getBlock()); + //registry.register(blockCustomStorage.getBlock()); + + if(StorageTech.DEBUG) + registry.register(blockGenerator.getBlock()); + } + + public static void registerItems(IForgeRegistry registry) + { + registry.register(blockDiskWorkbench.getItem()); + registry.register(blockFluidDiskWorkbench.getItem()); + //registry.register(blockCustomStorage.getItem()); + + if(StorageTech.DEBUG) + registry.register(blockGenerator.getItem()); + } + + public static void registerTiles(IForgeRegistry> registry) + { + registry.register(TileEntityType.Builder.create(() -> new TileEntityDiskWorkbench(), blockDiskWorkbench).build(null).setRegistryName(StorageTech.MODID, blockDiskWorkbench.name)); + registry.register(TileEntityType.Builder.create(() -> new TileEntityFluidDiskWorkbench(), blockFluidDiskWorkbench).build(null).setRegistryName(StorageTech.MODID, blockFluidDiskWorkbench.name)); + //registry.register(TileEntityType.Builder.create(() -> new CustomStorageTile(), blockCustomStorage).build(null).setRegistryName(StorageTech.MODID, blockCustomStorage.raw_name)); + + if(StorageTech.DEBUG) + registry.register(TileEntityType.Builder.create(() -> new BlockGenerator.TileEntityGenerator(), blockGenerator).build(null).setRegistryName(StorageTech.MODID, blockGenerator.name)); + } + + public static void registerContainers(IForgeRegistry> registry) + { + //registry.register(IForgeContainerType.create((windowId, inv, data) -> new ContainerDiskWorkbench(windowId, inv)).setRegistryName(StorageTech.MODID, blockDiskWorkbench.name)); + registry.register(IForgeContainerType.create(new PositionalTileContainerFactory((windowId, inv, tile) -> new ContainerDiskWorkbench(windowId, tile, inv))).setRegistryName(StorageTech.MODID, blockDiskWorkbench.name)); + registry.register(IForgeContainerType.create(new PositionalTileContainerFactory((windowId, inv, tile) -> new ContainerFluidDiskWorkbench(windowId, tile, inv))).setRegistryName(StorageTech.MODID, blockFluidDiskWorkbench.name)); + //registry.register(IForgeContainerType.create(new PositionalTileContainerFactory((windowId, inv, tile) -> new CustomStorageContainer(tile, inv.player, windowId))).setRegistryName(StorageTech.MODID, blockCustomStorage.raw_name)); + + } } diff --git a/java/javapower/storagetech/container/ContainerDiskWorkbench.java b/java/javapower/storagetech/container/ContainerDiskWorkbench.java index 494e126..518f51f 100644 --- a/java/javapower/storagetech/container/ContainerDiskWorkbench.java +++ b/java/javapower/storagetech/container/ContainerDiskWorkbench.java @@ -1,57 +1,68 @@ package javapower.storagetech.container; -import com.raoulvdberge.refinedstorage.RSItems; +import com.refinedmods.refinedstorage.RSItems; +import javapower.storagetech.core.StorageTech; import javapower.storagetech.slot.IFilterStack; import javapower.storagetech.slot.SlotFiltred; import javapower.storagetech.slot.SlotOutput; import javapower.storagetech.tileentity.TileEntityDiskWorkbench; import javapower.storagetech.util.DiskUtils; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.IContainerListener; -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.Slot; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.inventory.container.Container; +import net.minecraft.inventory.container.ContainerType; +import net.minecraft.inventory.container.IContainerListener; +import net.minecraft.inventory.container.Slot; import net.minecraft.item.ItemStack; +import net.minecraftforge.registries.ObjectHolder; public class ContainerDiskWorkbench extends Container { - IInventory block_inv; - InventoryPlayer playerInventory; + @ObjectHolder(StorageTech.MODID+":diskworkbench") + public static final ContainerType CURRENT_CONTAINER = null; - public ContainerDiskWorkbench(TileEntityDiskWorkbench tile, EntityPlayer player) + public TileEntityDiskWorkbench tile; + PlayerInventory playerInventory; + + public ContainerDiskWorkbench(int windowId, PlayerInventory _playerInventory) { - playerInventory = player.inventory; - block_inv = tile; + this(windowId, new TileEntityDiskWorkbench(), _playerInventory); + } + + public ContainerDiskWorkbench(int windowId, TileEntityDiskWorkbench _tile, PlayerInventory _playerInventory) + { + super(CURRENT_CONTAINER, windowId); + + playerInventory = _playerInventory; + tile = _tile; for (int i = 0; i < 3; ++i) { for (int j = 0; j < 9; ++j) { - this.addSlotToContainer(new Slot(playerInventory, j + i * 9 + 9, 8 + j * 18, 107 + i * 18)); + this.addSlot(new Slot(playerInventory, j + i * 9 + 9, 8 + j * 18, 107 + i * 18)); } } for (int k = 0; k < 9; ++k) { - this.addSlotToContainer(new Slot(playerInventory, k, 8 + k * 18, 165)); + this.addSlot(new Slot(playerInventory, k, 8 + k * 18, 165)); } - this.addSlotToContainer(new SlotFiltred(block_inv, 0, 8, 16, new IFilterStack() + this.addSlot(new SlotFiltred(tile, 0, 8, 16, new IFilterStack() { @Override public boolean canPutThisStack(ItemStack stack) { if(stack != null && !stack.isEmpty()) - return DiskUtils.validItemDisk(stack); - //return stack.getItem().equals(RSItems.STORAGE_PART) || (stack.getItem().equals(STItems.item_memory) && stack.getItemDamage() == 0); + return DiskUtils.validItemPart(stack); return false; } })); - this.addSlotToContainer(new SlotFiltred(block_inv, 1, 148, 16, new IFilterStack() + this.addSlot(new SlotFiltred(tile, 1, 148, 16, new IFilterStack() { @Override public boolean canPutThisStack(ItemStack stack) @@ -63,17 +74,17 @@ public boolean canPutThisStack(ItemStack stack) } })); - this.addSlotToContainer(new SlotOutput(block_inv, 2, 148, 66)); + this.addSlot(new SlotOutput(tile, 2, 148, 66)); for(int ids = 0; ids < 4; ++ids) { - this.addSlotToContainer(new SlotFiltred(block_inv, 3+ids, -17, 16+18*ids, new IFilterStack() + this.addSlot(new SlotFiltred(tile, 3+ids, -17, 16+18*ids, new IFilterStack() { @Override public boolean canPutThisStack(ItemStack stack) { if(stack != null && !stack.isEmpty()) - return stack.isItemEqual(new ItemStack(RSItems.UPGRADE, 1, RSItems.UPGRADE.TYPE_SPEED)); + return stack.isItemEqual(new ItemStack(RSItems.SPEED_UPGRADE,1)); return false; } @@ -88,14 +99,8 @@ public int getSlotStackLimit() } } - public void addListener(IContainerListener listener) - { - super.addListener(listener); - listener.sendAllWindowProperties(this, this.block_inv); - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer playerIn, int index) + @Override + public ItemStack transferStackInSlot(PlayerEntity playerIn, int index) { ItemStack from = getSlot(index).getStack(); if(index >= 36 && index <= 42) @@ -151,10 +156,10 @@ else if(from.getItem().equals(RSItems.STORAGE_HOUSING)) from.setCount(from.getCount() - putitemscount); } } - else if(DiskUtils.validItemDisk(from)) + else if(DiskUtils.validItemPart(from)) { Slot go = getSlot(36); - if(go.getStack().isEmpty() || DiskUtils.validItemDisk(go.getStack())) + if(go.getStack().isEmpty() || DiskUtils.validItemPart(go.getStack())) { int total = go.getStack().getCount() + from.getCount(); if(total <= go.getStack().getMaxStackSize()) @@ -181,12 +186,17 @@ else if(DiskUtils.validItemDisk(from)) return ItemStack.EMPTY; } + + public void addListener(IContainerListener listener) + { + super.addListener(listener); + //listener.sendAllContents(this, this.tile); + } @Override - public boolean canInteractWith(EntityPlayer playerIn) + public boolean canInteractWith(PlayerEntity playerIn) { return true; } - } diff --git a/java/javapower/storagetech/container/ContainerFluidDiskWorkbench.java b/java/javapower/storagetech/container/ContainerFluidDiskWorkbench.java index d4b44ba..126d465 100644 --- a/java/javapower/storagetech/container/ContainerFluidDiskWorkbench.java +++ b/java/javapower/storagetech/container/ContainerFluidDiskWorkbench.java @@ -1,57 +1,68 @@ package javapower.storagetech.container; -import com.raoulvdberge.refinedstorage.RSItems; +import com.refinedmods.refinedstorage.RSItems; +import javapower.storagetech.core.StorageTech; import javapower.storagetech.slot.IFilterStack; import javapower.storagetech.slot.SlotFiltred; import javapower.storagetech.slot.SlotOutput; import javapower.storagetech.tileentity.TileEntityFluidDiskWorkbench; import javapower.storagetech.util.DiskUtils; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.IContainerListener; -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.Slot; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.inventory.container.Container; +import net.minecraft.inventory.container.ContainerType; +import net.minecraft.inventory.container.IContainerListener; +import net.minecraft.inventory.container.Slot; import net.minecraft.item.ItemStack; +import net.minecraftforge.registries.ObjectHolder; public class ContainerFluidDiskWorkbench extends Container { - IInventory block_inv; - InventoryPlayer playerInventory; + @ObjectHolder(StorageTech.MODID+":fluiddiskworkbench") + public static final ContainerType CURRENT_CONTAINER = null; - public ContainerFluidDiskWorkbench(TileEntityFluidDiskWorkbench tile, EntityPlayer player) + public TileEntityFluidDiskWorkbench tile; + PlayerInventory playerInventory; + + public ContainerFluidDiskWorkbench(int windowId, PlayerInventory _playerInventory) { - playerInventory = player.inventory; - block_inv = tile; + this(windowId, new TileEntityFluidDiskWorkbench(), _playerInventory); + } + + public ContainerFluidDiskWorkbench(int windowId, TileEntityFluidDiskWorkbench _tile, PlayerInventory _playerInventory) + { + super(CURRENT_CONTAINER, windowId); + + playerInventory = _playerInventory; + tile = _tile; for (int i = 0; i < 3; ++i) { for (int j = 0; j < 9; ++j) { - this.addSlotToContainer(new Slot(playerInventory, j + i * 9 + 9, 8 + j * 18, 107 + i * 18)); + this.addSlot(new Slot(playerInventory, j + i * 9 + 9, 8 + j * 18, 107 + i * 18)); } } for (int k = 0; k < 9; ++k) { - this.addSlotToContainer(new Slot(playerInventory, k, 8 + k * 18, 165)); + this.addSlot(new Slot(playerInventory, k, 8 + k * 18, 165)); } - this.addSlotToContainer(new SlotFiltred(block_inv, 0, 8, 16, new IFilterStack() + this.addSlot(new SlotFiltred(tile, 0, 8, 16, new IFilterStack() { @Override public boolean canPutThisStack(ItemStack stack) { if(stack != null && !stack.isEmpty()) - return DiskUtils.validFluidDisk(stack); - //return stack.getItem().equals(RSItems.FLUID_STORAGE_PART) || (stack.getItem().equals(STItems.item_memory) && stack.getItemDamage() == 1); + return DiskUtils.validFluidPart(stack); return false; } })); - this.addSlotToContainer(new SlotFiltred(block_inv, 1, 148, 16, new IFilterStack() + this.addSlot(new SlotFiltred(tile, 1, 148, 16, new IFilterStack() { @Override public boolean canPutThisStack(ItemStack stack) @@ -63,17 +74,17 @@ public boolean canPutThisStack(ItemStack stack) } })); - this.addSlotToContainer(new SlotOutput(block_inv, 2, 148, 66)); + this.addSlot(new SlotOutput(tile, 2, 148, 66)); for(int ids = 0; ids < 4; ++ids) { - this.addSlotToContainer(new SlotFiltred(block_inv, 3+ids, -17, 16+18*ids, new IFilterStack() + this.addSlot(new SlotFiltred(tile, 3+ids, -17, 16+18*ids, new IFilterStack() { @Override public boolean canPutThisStack(ItemStack stack) { if(stack != null && !stack.isEmpty()) - return stack.isItemEqual(new ItemStack(RSItems.UPGRADE, 1, RSItems.UPGRADE.TYPE_SPEED)); + return stack.isItemEqual(new ItemStack(RSItems.SPEED_UPGRADE,1)); return false; } @@ -88,14 +99,8 @@ public int getSlotStackLimit() } } - public void addListener(IContainerListener listener) - { - super.addListener(listener); - listener.sendAllWindowProperties(this, this.block_inv); - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer playerIn, int index) + @Override + public ItemStack transferStackInSlot(PlayerEntity playerIn, int index) { ItemStack from = getSlot(index).getStack(); if(index >= 36 && index <= 42) @@ -151,10 +156,10 @@ else if(from.getItem().equals(RSItems.STORAGE_HOUSING)) from.setCount(from.getCount() - putitemscount); } } - else if(DiskUtils.validFluidDisk(from)) + else if(DiskUtils.validFluidPart(from)) { Slot go = getSlot(36); - if(go.getStack().isEmpty() || DiskUtils.validFluidDisk(go.getStack())) + if(go.getStack().isEmpty() || DiskUtils.validFluidPart(go.getStack())) { int total = go.getStack().getCount() + from.getCount(); if(total <= go.getStack().getMaxStackSize()) @@ -179,11 +184,17 @@ else if(DiskUtils.validFluidDisk(from)) } } - return ItemStack.EMPTY; + return ItemStack.EMPTY; + } + + public void addListener(IContainerListener listener) + { + super.addListener(listener); + //listener.sendAllContents(this, this.tile); } @Override - public boolean canInteractWith(EntityPlayer playerIn) + public boolean canInteractWith(PlayerEntity playerIn) { return true; } diff --git a/java/javapower/storagetech/container/CustomStorageContainer.java b/java/javapower/storagetech/container/CustomStorageContainer.java new file mode 100644 index 0000000..e832008 --- /dev/null +++ b/java/javapower/storagetech/container/CustomStorageContainer.java @@ -0,0 +1,30 @@ +package javapower.storagetech.container; + +import com.refinedmods.refinedstorage.container.BaseContainer; +import com.refinedmods.refinedstorage.container.slot.filter.FilterSlot; + +import javapower.storagetech.core.StorageTech; +import javapower.storagetech.tileentity.CustomStorageTile; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.inventory.container.ContainerType; +import net.minecraftforge.registries.ObjectHolder; + +public class CustomStorageContainer extends BaseContainer +{ + @ObjectHolder(StorageTech.MODID+":customstorageblock") + public static final ContainerType CURRENT_CONTAINER = null; + + public CustomStorageContainer(CustomStorageTile storage, PlayerEntity player, int windowId) + { + super(CURRENT_CONTAINER, storage, player, windowId); + + for (int i = 0; i < 9; ++i) + { + addSlot(new FilterSlot(storage.getNode().getFilters(), i, 8 + (18 * i), 20)); + } + + addPlayerInventory(8, 141); + + transferManager.addItemFilterTransfer(player.inventory, storage.getNode().getFilters()); + } +} \ No newline at end of file diff --git a/java/javapower/storagetech/core/ClientConfig.java b/java/javapower/storagetech/core/ClientConfig.java new file mode 100644 index 0000000..1aba9e5 --- /dev/null +++ b/java/javapower/storagetech/core/ClientConfig.java @@ -0,0 +1,43 @@ +package javapower.storagetech.core; + +import net.minecraftforge.common.ForgeConfigSpec; +import net.minecraftforge.common.ForgeConfigSpec.BooleanValue; + +public class ClientConfig +{ + private ForgeConfigSpec.Builder builder = new ForgeConfigSpec.Builder(); + private ForgeConfigSpec spec; + + /*public static boolean overlayEnable = true; + public static boolean showHelp = true;*/ + + public static BooleanValue overlayEnable; + public static boolean Value_overlayEnable; + + public static BooleanValue showHelp; + public static boolean Value_showHelp; + + public ClientConfig() + { + //config + builder.push("general"); + + overlayEnable = builder.define("overlayEnable", true); + showHelp = builder.define("showHelp", true); + + builder.pop(); + //end config + spec = builder.build(); + } + + public ForgeConfigSpec getSpec() + { + return spec; + } + + public static void loadConfig() + { + Value_showHelp = showHelp.get(); + Value_overlayEnable = overlayEnable.get(); + } +} diff --git a/java/javapower/storagetech/core/ClientDiskOverlay.java b/java/javapower/storagetech/core/ClientDiskOverlay.java new file mode 100644 index 0000000..aff55d9 --- /dev/null +++ b/java/javapower/storagetech/core/ClientDiskOverlay.java @@ -0,0 +1,201 @@ +package javapower.storagetech.core; + +import java.util.UUID; + +import org.lwjgl.opengl.GL11; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.systems.RenderSystem; +import com.refinedmods.refinedstorage.api.storage.disk.IStorageDiskProvider; +import com.refinedmods.refinedstorage.api.storage.disk.StorageDiskSyncData; +import com.refinedmods.refinedstorage.apiimpl.API; +import com.refinedmods.refinedstorage.apiimpl.network.node.storage.FluidStorageNetworkNode; +import com.refinedmods.refinedstorage.apiimpl.network.node.storage.StorageNetworkNode; +import com.refinedmods.refinedstorage.item.blockitem.FluidStorageBlockItem; +import com.refinedmods.refinedstorage.item.blockitem.StorageBlockItem; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.BufferBuilder; +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.Matrix4f; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.item.BlockItem; +import net.minecraft.item.ItemStack; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.event.RenderTooltipEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.client.gui.GuiUtils; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber(Dist.CLIENT) +public class ClientDiskOverlay +{ + public static Minecraft minecraft = Minecraft.getInstance(); + + @SubscribeEvent + @OnlyIn(Dist.CLIENT) + public static void drawTooltip(RenderTooltipEvent.PostBackground event) + { + if(ClientConfig.Value_overlayEnable) + { + ItemStack itemstack = event.getStack(); + if(itemstack != null) + { + if(itemstack.getItem() instanceof IStorageDiskProvider) + { + if(!((IStorageDiskProvider)itemstack.getItem()).isValid(itemstack)) + return; + UUID uuid = ((IStorageDiskProvider)itemstack.getItem()).getId(itemstack); + if(uuid == null) + return; + StorageDiskSyncData data = API.instance().getStorageDiskSync().getData(uuid); + if(data != null) + { + if(data.getCapacity() != -1) + { + float size = data.getStored()/(float)data.getCapacity(); + int color = size >= 0.75f ? size >= 1 ? 0xffff0000 : 0xffffd800 : 0xff00eded; + minecraft.textureManager.bindTexture(ResourceLocationRegister.overlay); + GuiUtils.drawTexturedModalRect(event.getX() - 4, event.getY() - 24, 0, 0, 93, 20, 0.1f); + drawRect(event.getX(), event.getY() - 18, event.getX() + 60, event.getY() - 10, 0xff444444); + if(size > 0) + drawRect(event.getX(), event.getY() - 18, event.getX() + (int)(60*size), event.getY() - 10, color); + + IRenderTypeBuffer.Impl renderType = IRenderTypeBuffer.getImpl(Tessellator.getInstance().getBuffer()); + MatrixStack textStack = new MatrixStack(); + textStack.translate(0.0D, 0.0D, 300D); + Matrix4f textLocation = textStack.getLast().getMatrix(); + minecraft.fontRenderer.renderString(((int) (size*100))+"%", event.getX() + 62, event.getY() - 17, color, false, textLocation, renderType, false, 0, 15728880); + renderType.finish(); + } + else + { + minecraft.textureManager.bindTexture(ResourceLocationRegister.overlay); + GuiUtils.drawTexturedModalRect(event.getX() - 4, event.getY() - 24, 0, 0, 93, 20, 0.1f); + //minecraft.fontRenderer.drawString("Infinite", event.getX() + 25, event.getY() - 17, 0xff00eded); + IRenderTypeBuffer.Impl renderType = IRenderTypeBuffer.getImpl(Tessellator.getInstance().getBuffer()); + MatrixStack textStack = new MatrixStack(); + textStack.translate(0.0D, 0.0D, 300D); + Matrix4f textLocation = textStack.getLast().getMatrix(); + minecraft.fontRenderer.renderString("Infinite", event.getX() + 25, event.getY() - 17, 0xff00eded, false, textLocation, renderType, false, 0, 15728880); + renderType.finish(); + } + } + } + else if(itemstack.getItem() instanceof BlockItem) + { + if(itemstack.getItem() instanceof StorageBlockItem) + { + if(itemstack.hasTag() && itemstack.getTag().hasUniqueId(StorageNetworkNode.NBT_ID)) + { + UUID uuid = itemstack.getTag().getUniqueId(StorageNetworkNode.NBT_ID); + StorageDiskSyncData data = API.instance().getStorageDiskSync().getData(uuid); + if(data != null) + { + if(data.getCapacity() != -1) + { + float size = data.getStored()/(float)data.getCapacity(); + int color = size >= 0.75f ? size >= 1 ? 0xffff0000 : 0xffffd800 : 0xff00eded; + minecraft.textureManager.bindTexture(ResourceLocationRegister.overlay); + GuiUtils.drawTexturedModalRect(event.getX() - 4, event.getY() - 24, 0, 0, 93, 20, 0.1f); + drawRect(event.getX(), event.getY() - 18, event.getX() + 60, event.getY() - 10, 0xff444444); + if(size > 0) + drawRect(event.getX(), event.getY() - 18, event.getX() + (int)(60*size), event.getY() - 10, color); + + IRenderTypeBuffer.Impl renderType = IRenderTypeBuffer.getImpl(Tessellator.getInstance().getBuffer()); + MatrixStack textStack = new MatrixStack(); + textStack.translate(0.0D, 0.0D, 300D); + Matrix4f textLocation = textStack.getLast().getMatrix(); + minecraft.fontRenderer.renderString(((int) (size*100))+"%", event.getX() + 62, event.getY() - 17, color, false, textLocation, renderType, false, 0, 15728880); + renderType.finish(); + } + else + { + minecraft.textureManager.bindTexture(ResourceLocationRegister.overlay); + GuiUtils.drawTexturedModalRect(event.getX() - 4, event.getY() - 24, 0, 0, 93, 20, 0.1f); + //minecraft.fontRenderer.drawString("Infinite", event.getX() + 25, event.getY() - 17, 0xff00eded); + IRenderTypeBuffer.Impl renderType = IRenderTypeBuffer.getImpl(Tessellator.getInstance().getBuffer()); + MatrixStack textStack = new MatrixStack(); + textStack.translate(0.0D, 0.0D, 300D); + Matrix4f textLocation = textStack.getLast().getMatrix(); + minecraft.fontRenderer.renderString("Infinite", event.getX() + 25, event.getY() - 17, 0xff00eded, false, textLocation, renderType, false, 0, 15728880); + renderType.finish(); + } + } + } + } + else if(itemstack.getItem() instanceof FluidStorageBlockItem) + { + if(itemstack.hasTag() && itemstack.getTag().hasUniqueId(FluidStorageNetworkNode.NBT_ID)) + { + UUID uuid = itemstack.getTag().getUniqueId(FluidStorageNetworkNode.NBT_ID); + StorageDiskSyncData data = API.instance().getStorageDiskSync().getData(uuid); + if(data != null) + { + if(data.getCapacity() != -1) + { + float size = data.getStored()/(float)data.getCapacity(); + int color = size >= 0.75f ? size >= 1 ? 0xffff0000 : 0xffffd800 : 0xff00eded; + minecraft.textureManager.bindTexture(ResourceLocationRegister.overlay); + GuiUtils.drawTexturedModalRect(event.getX() - 4, event.getY() - 24, 0, 0, 93, 20, 0.1f); + drawRect(event.getX(), event.getY() - 18, event.getX() + 60, event.getY() - 10, 0xff444444); + if(size > 0) + drawRect(event.getX(), event.getY() - 18, event.getX() + (int)(60*size), event.getY() - 10, color); + + IRenderTypeBuffer.Impl renderType = IRenderTypeBuffer.getImpl(Tessellator.getInstance().getBuffer()); + MatrixStack textStack = new MatrixStack(); + textStack.translate(0.0D, 0.0D, 300D); + Matrix4f textLocation = textStack.getLast().getMatrix(); + minecraft.fontRenderer.renderString(((int) (size*100))+"%", event.getX() + 62, event.getY() - 17, color, false, textLocation, renderType, false, 0, 15728880); + renderType.finish(); + } + else + { + minecraft.textureManager.bindTexture(ResourceLocationRegister.overlay); + GuiUtils.drawTexturedModalRect(event.getX() - 4, event.getY() - 24, 0, 0, 93, 20, 0.1f); + //minecraft.fontRenderer.drawString("Infinite", event.getX() + 25, event.getY() - 17, 0xff00eded); + IRenderTypeBuffer.Impl renderType = IRenderTypeBuffer.getImpl(Tessellator.getInstance().getBuffer()); + MatrixStack textStack = new MatrixStack(); + textStack.translate(0.0D, 0.0D, 300D); + Matrix4f textLocation = textStack.getLast().getMatrix(); + minecraft.fontRenderer.renderString("Infinite", event.getX() + 25, event.getY() - 17, 0xff00eded, false, textLocation, renderType, false, 0, 15728880); + renderType.finish(); + } + } + } + } + } + } + } + } + + public static void drawRect(int left, int top, int right, int bottom, int color) + { + float startAlpha = (float)(color >> 24 & 255) / 255.0F; + float startRed = (float)(color >> 16 & 255) / 255.0F; + float startGreen = (float)(color >> 8 & 255) / 255.0F; + float startBlue = (float)(color & 255) / 255.0F; + + RenderSystem.disableTexture(); + RenderSystem.enableBlend(); + RenderSystem.disableAlphaTest(); + RenderSystem.defaultBlendFunc(); + RenderSystem.shadeModel(GL11.GL_SMOOTH); + + Tessellator tessellator = Tessellator.getInstance(); + BufferBuilder buffer = tessellator.getBuffer(); + buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR); + buffer.pos(right, top, 300).color(startRed, startGreen, startBlue, startAlpha).endVertex(); + buffer.pos( left, top, 300).color(startRed, startGreen, startBlue, startAlpha).endVertex(); + buffer.pos( left, bottom, 300).color(startRed, startGreen, startBlue, startAlpha).endVertex(); + buffer.pos(right, bottom, 300).color(startRed, startGreen, startBlue, startAlpha).endVertex(); + tessellator.draw(); + + RenderSystem.shadeModel(GL11.GL_FLAT); + RenderSystem.disableBlend(); + RenderSystem.enableAlphaTest(); + RenderSystem.enableTexture(); + } +} diff --git a/java/javapower/storagetech/core/ClientSetup.java b/java/javapower/storagetech/core/ClientSetup.java new file mode 100644 index 0000000..014ddad --- /dev/null +++ b/java/javapower/storagetech/core/ClientSetup.java @@ -0,0 +1,44 @@ +package javapower.storagetech.core; + +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; +import java.text.NumberFormat; +import java.util.Locale; + +import javapower.storagetech.container.ContainerDiskWorkbench; +import javapower.storagetech.container.ContainerFluidDiskWorkbench; +import javapower.storagetech.screen.ScreenContainerDiskWorkbench; +import javapower.storagetech.screen.ScreenContainerFluidDiskWorkbench; +import net.minecraft.client.gui.ScreenManager; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; + +public class ClientSetup +{ + + public static DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US); + public static DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols(); + + public ClientSetup() + { + FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setupClient); + MinecraftForge.EVENT_BUS.register(ClientDiskOverlay.class); + + } + + @OnlyIn(Dist.CLIENT) + public void setupClient(final FMLClientSetupEvent event) + { + ResourceLocationRegister.register(); + ClientConfig.loadConfig(); + + ScreenManager.registerFactory(ContainerDiskWorkbench.CURRENT_CONTAINER, ScreenContainerDiskWorkbench::new); + ScreenManager.registerFactory(ContainerFluidDiskWorkbench.CURRENT_CONTAINER, ScreenContainerFluidDiskWorkbench::new); + //ScreenManager.registerFactory(CustomStorageContainer.CURRENT_CONTAINER, CustomStorageBlockScreen::new); + + } + +} diff --git a/java/javapower/storagetech/core/CommandGiveMemory.java b/java/javapower/storagetech/core/CommandGiveMemory.java deleted file mode 100644 index 18654d9..0000000 --- a/java/javapower/storagetech/core/CommandGiveMemory.java +++ /dev/null @@ -1,134 +0,0 @@ -package javapower.storagetech.core; - -import javapower.storagetech.item.ItemMemory; -import net.minecraft.command.CommandBase; -import net.minecraft.command.CommandException; -import net.minecraft.command.ICommandSender; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.server.MinecraftServer; - -public class CommandGiveMemory extends CommandBase -{ - - @Override - public String getName() - { - return "givememory"; - } - - @Override - public String getUsage(ICommandSender sender) - { - return "givememory [k,M,G]"; - } - - @Override - public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException - { - if(sender.getCommandSenderEntity() instanceof EntityPlayer) - { - EntityPlayer player = ((EntityPlayer)sender.getCommandSenderEntity()); - if(args != null) - { - if(args.length == 2) - { - try - { - int type = getType(args[0]); - long mem = Long.parseLong(args[1]); - if(type == 1)//item - { - ItemStack is = ItemMemory.createItem(mem, false); - player.dropItem(is, true); - return; - } - else if(type == 2)//fluid - { - ItemStack is = ItemMemory.createItem(mem, true); - player.dropItem(is, true); - return; - } - else - { - throw new CommandException("Bad argument /givememory [k,M,G]", args[0]); - } - } - catch (NumberFormatException | NullPointerException e) - { - throw new CommandException("Bad argument /givememory [k,M,G]", args[1]); - } - } - else if(args.length == 3) - { - try - { - int type = getType(args[0]); - long mem = Long.parseLong(args[1]); - int multi = getMultiplier(args[2]); - - if(multi == -1) - throw new CommandException("Bad argument /givememory [k,M,G]", args[0]); - - if(type == 1)//item - { - ItemStack is = ItemMemory.createItem(mem*multi, false); - player.dropItem(is, true); - return; - } - else if(type == 2)//fluid - { - ItemStack is = ItemMemory.createItem(mem*multi, true); - player.dropItem(is, true); - return; - } - else - { - throw new CommandException("Bad argument /givememory [k,M,G]", args[0]); - } - } - catch (NumberFormatException | NullPointerException e) - { - throw new CommandException("Bad argument /givememory [k,M,G]", args[1]); - } - } - else - { - throw new CommandException("Bad amount of arguments /givememory [k,M,G]", args.length); - } - } - else - { - throw new CommandException("Bad amount of arguments /givememory [k,M,G]", ""); - } - } - } - - private int getType(String arg) - { - if(arg != null) - { - if(arg.equalsIgnoreCase("Item")) - return 1; - else if(arg.equalsIgnoreCase("Fluid")) - return 2; - } - return 0; - } - - private int getMultiplier(String arg) - { - if(arg == null || arg.length() != 1) - return -1; - - int m = "kMG".indexOf(arg.charAt(0)); - if(m == 0) - return 1000; - else if(m == 1) - return 1000000; - else if(m == 2) - return 1000000000; - return -1; - } - -} \ No newline at end of file diff --git a/java/javapower/storagetech/core/CommonConfig.java b/java/javapower/storagetech/core/CommonConfig.java new file mode 100644 index 0000000..1ecb091 --- /dev/null +++ b/java/javapower/storagetech/core/CommonConfig.java @@ -0,0 +1,74 @@ +package javapower.storagetech.core; + +import net.minecraftforge.common.ForgeConfigSpec; +import net.minecraftforge.common.ForgeConfigSpec.BooleanValue; +import net.minecraftforge.common.ForgeConfigSpec.IntValue; + +public class CommonConfig +{ + private ForgeConfigSpec.Builder builder = new ForgeConfigSpec.Builder(); + private ForgeConfigSpec spec; + + public static IntValue DiskMaxSize; + public static int Value_DiskMaxSize; + public static IntValue DiskFluidMaxSize; + public static int Value_DiskFluidMaxSize; + + public static BooleanValue EnableCostDisk; + public static boolean Value_EnableCostDisk; + + public static IntValue EnergyCostPerSize; + public static int Value_EnergyCostPerSize; + public static IntValue TimeCostPerSize; + public static int Value_TimeCostPerSize; + public static IntValue ProssesAdvancementSize; + public static int Value_ProssesAdvancementSize; + public static IntValue ProssesAdvancementSizeFluid; + public static int Value_ProssesAdvancementSizeFluid; + public static IntValue EnergyBuffer; + public static int Value_EnergyBuffer; + + public CommonConfig() + { + //config + builder.push("general"); + + builder.comment("The maximum size of custom disk (Item)"); + DiskMaxSize = builder.defineInRange("diskMaxSize", Integer.MAX_VALUE - 65, 1, Integer.MAX_VALUE - 65); + builder.comment("The maximum size of custom disk (Fluid)"); + DiskFluidMaxSize = builder.defineInRange("fluidDiskMaxSize", Integer.MAX_VALUE - 64001, 1, Integer.MAX_VALUE - 64001); + builder.comment("If is enable the workbench (fluid/item) required energy to create disk"); + EnableCostDisk = builder.define("enableCostDisk", true); + builder.comment("The energy cost per disk","the total energy cost = energyCost * disk size"); + EnergyCostPerSize = builder.defineInRange("energyCost", 5, 1, 1000000); + builder.comment("The time elapsed per disk","the total time elapsed = timeCost * disk size"); + TimeCostPerSize = builder.defineInRange("timeCost", 2, 1, 1000); + builder.comment("tick per step (item workbench)"); + ProssesAdvancementSize = builder.defineInRange("prossesAdvancementSize", 10000, 1, 1000000000); + builder.comment("tick per step (fluid workbench)"); + ProssesAdvancementSizeFluid = builder.defineInRange("prossesAdvancementSizeFluid", 20000, 1, 1000000000); + builder.comment("The energy buffer of workbench (fluid/item)"); + EnergyBuffer = builder.defineInRange("energyBuffer", 200000, 10000, Integer.MAX_VALUE-1); + + builder.pop(); + //end config + spec = builder.build(); + } + + public ForgeConfigSpec getSpec() + { + return spec; + } + + public static void loadConfig() + { + Value_DiskMaxSize = DiskMaxSize.get(); + Value_DiskFluidMaxSize = DiskFluidMaxSize.get(); + Value_EnableCostDisk = EnableCostDisk.get(); + Value_EnergyCostPerSize = EnergyCostPerSize.get()*8; + Value_TimeCostPerSize = TimeCostPerSize.get(); + Value_ProssesAdvancementSize = ProssesAdvancementSize.get(); + Value_ProssesAdvancementSizeFluid = ProssesAdvancementSizeFluid.get(); + Value_EnergyBuffer = EnergyBuffer.get(); + } +} diff --git a/java/javapower/storagetech/core/CommonSetup.java b/java/javapower/storagetech/core/CommonSetup.java new file mode 100644 index 0000000..9f588fd --- /dev/null +++ b/java/javapower/storagetech/core/CommonSetup.java @@ -0,0 +1,125 @@ +package javapower.storagetech.core; + +import java.util.ArrayList; +import java.util.List; + +import javapower.storagetech.block.STBlocks; +import javapower.storagetech.item.STItems; +import javapower.storagetech.util.DiskUtils; +import javapower.storagetech.util.PartValue; +import net.minecraft.block.Block; +import net.minecraft.inventory.container.ContainerType; +import net.minecraft.item.Item; +import net.minecraft.item.crafting.IRecipeSerializer; +import net.minecraft.tileentity.TileEntityType; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.registries.ForgeRegistries; + +public class CommonSetup +{ + @SubscribeEvent + public void onCommonSetup(FMLCommonSetupEvent e) + { + CommonConfig.loadConfig(); + + List item_part = new ArrayList(); + List fluid_part = new ArrayList(); + + for(Item item : ForgeRegistries.ITEMS.getValues()) + { + String path = item.getRegistryName().getPath(); + if(path.contains("_fluid_storage_part")) + { + String value = path.substring(0, path.indexOf('_')); + int sufix = "kKmMgG".indexOf(value.charAt(value.length()-1))/2; + long multi = 0; + if(sufix != -1) + { + if(sufix == 0) + multi = 1000; + else if(sufix == 1) + multi = 1000_000; + else if(sufix == 2) + multi = 1000_000_000; + } + + try + { + long part_value = Integer.parseInt(value.substring(0, value.length()-1)) * multi; + fluid_part.add(new PartValue(item, part_value)); + } + catch (Exception e2) + { + + } + } + else if(path.contains("_storage_part")) + { + String value = path.substring(0, path.indexOf('_')); + int sufix = "kKmMgG".indexOf(value.charAt(value.length()-1))/2; + long multi = 0; + if(sufix != -1) + { + if(sufix == 0) + multi = 1000; + else if(sufix == 1) + multi = 1000_000; + else if(sufix == 2) + multi = 1000_000_000; + } + + try + { + long part_value = Integer.parseInt(value.substring(0, value.length()-1)) * multi; + item_part.add(new PartValue(item, part_value)); + } + catch (Exception e2) + { + + } + } + } + + DiskUtils.updateValidParts(item_part, fluid_part); + } + + /*private INetworkNode readAndReturn(CompoundNBT tag, NetworkNode node) + { + node.read(tag); + + return node; + }*/ + + @SubscribeEvent + public void onRegisterRecipeSerializers(RegistryEvent.Register> register) + { + + } + + @SubscribeEvent + public void onRegisterBlocks(RegistryEvent.Register register) + { + STBlocks.registerBlocks(register.getRegistry()); + } + + @SubscribeEvent + public void onRegisterItems(RegistryEvent.Register register) + { + STBlocks.registerItems(register.getRegistry()); + STItems.registerItems(register.getRegistry()); + } + + @SubscribeEvent + public void onRegisterTiles(RegistryEvent.Register> register) + { + STBlocks.registerTiles(register.getRegistry()); + } + + @SubscribeEvent + public void onRegisterContainers(RegistryEvent.Register> register) + { + STBlocks.registerContainers(register.getRegistry()); + } +} diff --git a/java/javapower/storagetech/core/Config.java b/java/javapower/storagetech/core/Config.java deleted file mode 100644 index 0dca6f6..0000000 --- a/java/javapower/storagetech/core/Config.java +++ /dev/null @@ -1,39 +0,0 @@ -package javapower.storagetech.core; - -import net.minecraftforge.common.config.Configuration; -import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; - -public class Config -{ - public static Configuration conf; - - public static int DiskMaxSize = Integer.MAX_VALUE - 65; - public static int DiskFluidMaxSize = Integer.MAX_VALUE - 64001; - - public static boolean EnableCostDisk = true; - public static int EnergyCostPerSize = 500; - public static int TimeCostPerSize = 1; - public static int ProssesAdvancementSize = 10000; - public static int ProssesAdvancementSizeFluid = 20000; - - public static void init(FMLPreInitializationEvent event) - { - conf = new Configuration(event.getSuggestedConfigurationFile()); - conf.load(); - - DiskMaxSize = conf.getInt("diskMaxSize", "general", Integer.MAX_VALUE - 65, 1, Integer.MAX_VALUE - 65, ""); - DiskFluidMaxSize = conf.getInt("fluidDiskMaxSize", "general", Integer.MAX_VALUE - 64001, 1, Integer.MAX_VALUE - 64001, ""); - EnableCostDisk = conf.getBoolean("enableCostDisk", "general", true, ""); - EnergyCostPerSize = conf.getInt("energyCost", "general", 5, 1, 1000000, ""); - TimeCostPerSize = conf.getInt("timeCost", "general", 2, 1, 1000, ""); - ProssesAdvancementSize = conf.getInt("prossesAdvancementSize", "general", 10000, 1, 1000000000, ""); - ProssesAdvancementSizeFluid = conf.getInt("prossesAdvancementSizeFluid", "general", 20000, 1, 1000000000, ""); - onChangment(); - conf.save(); - } - - public static void onChangment() - { - - } -} diff --git a/java/javapower/storagetech/core/ConfigClient.java b/java/javapower/storagetech/core/ConfigClient.java deleted file mode 100644 index af8f0dc..0000000 --- a/java/javapower/storagetech/core/ConfigClient.java +++ /dev/null @@ -1,39 +0,0 @@ -package javapower.storagetech.core; - -import java.io.File; - -import net.minecraftforge.common.config.Configuration; -import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; - -public class ConfigClient -{ - public static Configuration conf; - - public static boolean overlayEnable = true; - public static boolean showHelp = true; - - public static void init(FMLPreInitializationEvent event) - { - conf = new Configuration(new File(event.getModConfigurationDirectory()+"/client_"+StorageTech.MODID+".cfg")); - conf.load(); - - //DiskMaxSize = conf.getInt("diskMaxSize", "general", Integer.MAX_VALUE - 65, 1, Integer.MAX_VALUE - 65, ""); - //DiskFluidMaxSize = conf.getInt("fluidDiskMaxSize", "general", Integer.MAX_VALUE - 64001, 1, Integer.MAX_VALUE - 64001, ""); - overlayEnable = conf.getBoolean("overlayEnable", "general", true, ""); - showHelp = conf.getBoolean("showHelp", "general", true, ""); - - onChangment(); - conf.save(); - } - - public static void onChangment() - { - - } - - public static boolean getShowHelp() - { - showHelp = conf.getBoolean("showHelp", "general", true, ""); - return showHelp; - } -} diff --git a/java/javapower/storagetech/core/PacketCreateDisk.java b/java/javapower/storagetech/core/PacketCreateDisk.java new file mode 100644 index 0000000..ffb3bc2 --- /dev/null +++ b/java/javapower/storagetech/core/PacketCreateDisk.java @@ -0,0 +1,68 @@ +package javapower.storagetech.core; + +import java.nio.ByteBuffer; +import java.util.function.Supplier; + +import javapower.storagetech.tileentity.ICreateDisk; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.network.PacketBuffer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.server.ServerWorld; +import net.minecraftforge.fml.network.NetworkDirection; +import net.minecraftforge.fml.network.NetworkEvent; + +public class PacketCreateDisk +{ + BlockPos pos; + int disksize; + + public PacketCreateDisk(BlockPos _pos, int _disksize) + { + pos = _pos; + disksize = _disksize; + } + + + + public static void encoder(PacketCreateDisk msg, PacketBuffer packetBuffer) + { + ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES+Integer.BYTES); + buffer.putLong(msg.pos.toLong()); + buffer.putInt(msg.disksize); + packetBuffer.writeByteArray(buffer.array()); + } + + public static PacketCreateDisk decoder(PacketBuffer packetBuffer) + { + ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES+Integer.BYTES); + buffer.put(packetBuffer.readByteArray()); + buffer.flip(); + + return new PacketCreateDisk(BlockPos.fromLong(buffer.getLong()), buffer.getInt()); + } + + public static void handle(PacketCreateDisk msg, Supplier ctx) + { + ctx.get().enqueueWork(() -> + { + PlayerEntity sender = ctx.get().getSender(); + + if(ctx.get().getDirection() == NetworkDirection.PLAY_TO_SERVER) + { + if(sender.world instanceof ServerWorld) + { + TileEntity te = sender.world.getTileEntity(msg.pos); + if(te instanceof ICreateDisk) + { + ((ICreateDisk)te).createDisk(msg.disksize); + //System.out.println(te+" "+msg.pos+" "+msg.disksize); + } + } + } + }); + ctx.get().setPacketHandled(true); + } + + +} diff --git a/java/javapower/storagetech/proxy/ResourceLocationRegister.java b/java/javapower/storagetech/core/ResourceLocationRegister.java similarity index 87% rename from java/javapower/storagetech/proxy/ResourceLocationRegister.java rename to java/javapower/storagetech/core/ResourceLocationRegister.java index bb1dbc3..16e2df3 100644 --- a/java/javapower/storagetech/proxy/ResourceLocationRegister.java +++ b/java/javapower/storagetech/core/ResourceLocationRegister.java @@ -1,6 +1,5 @@ -package javapower.storagetech.proxy; +package javapower.storagetech.core; -import javapower.storagetech.core.StorageTech; import net.minecraft.util.ResourceLocation; public class ResourceLocationRegister @@ -18,5 +17,4 @@ private static ResourceLocation resource(String target) { return new ResourceLocation(StorageTech.MODID, target); } - } diff --git a/java/javapower/storagetech/core/ServerSetup.java b/java/javapower/storagetech/core/ServerSetup.java new file mode 100644 index 0000000..1a38c56 --- /dev/null +++ b/java/javapower/storagetech/core/ServerSetup.java @@ -0,0 +1,13 @@ +package javapower.storagetech.core; + +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.event.server.FMLServerStartingEvent; + +public class ServerSetup +{ + @SubscribeEvent + public void onServerStarting(FMLServerStartingEvent e) + { + + } +} diff --git a/java/javapower/storagetech/core/StorageTech.java b/java/javapower/storagetech/core/StorageTech.java index 3172a45..9d8de75 100644 --- a/java/javapower/storagetech/core/StorageTech.java +++ b/java/javapower/storagetech/core/StorageTech.java @@ -13,75 +13,89 @@ * All class belonging to the mod Storage Tech is developed by Cyril GENIN (Java_Power). * All rights reserved to Cyril GENIN. * it is strictly forbidden to copy or recopy! -* These rules apply to all class, scripts, textures, configs and all file types of this project. +* These rules apply to all class, scripts, textures, configs and all file of this project. * * author: Cyril GENIN (Java_Power) -* website: http://lithimz.fr/ -* email: cyril@famille-genin.fr +* email: cyrilgenintravail@gmail.com * creation date: 04/08/2017 (dd/mm/yyyy) +* recreation date: 03/05/2020 (dd/mm/yyyy) * creat at: Montigny Le Bretonneux France -* last modification: 22/01/2019 (dd/mm/yyyy) +* last modification: 22/06/2020 (dd/mm/yyyy) * comment: RAS * ***************************************************/ package javapower.storagetech.core; import javapower.storagetech.block.STBlocks; -import javapower.storagetech.proxy.CommonProxy; -import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.block.Block; +import net.minecraft.inventory.container.ContainerType; +import net.minecraft.item.Item; +import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipeSerializer; +import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.DistExecutor; +import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.Mod.EventHandler; -import net.minecraftforge.fml.common.Mod.Instance; -import net.minecraftforge.fml.common.SidedProxy; -import net.minecraftforge.fml.common.event.FMLInitializationEvent; -import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; -import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; -import net.minecraftforge.fml.common.event.FMLServerStartingEvent; +import net.minecraftforge.fml.config.ModConfig; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.fml.network.NetworkRegistry; +import net.minecraftforge.fml.network.simple.SimpleChannel; -@Mod(modid = StorageTech.MODID, version = StorageTech.VERSION, dependencies = "required-after:refinedstorage") +@Mod(StorageTech.MODID) public class StorageTech { - public static final String MODID = "storagetech"; - public static final String VERSION = "5.0"; - - @Instance - public static StorageTech INSTANCE; - - @SidedProxy(clientSide = "javapower.storagetech.proxy.ClientProxy", serverSide = "javapower.storagetech.proxy.CommonProxy") - public static CommonProxy proxy; - - public static CreativeTabs creativeTab = new CreativeTabs(MODID) + public static final String MODID = "storagetech"; + public static final ItemGroup creativeTab = new ItemGroup(MODID) { + @Override - public ItemStack getTabIconItem() + public ItemStack createIcon() { - return new ItemStack(STBlocks.block_diskWorkbench); + return new ItemStack(STBlocks.blockDiskWorkbench); } + }; - @EventHandler - public void preInit(FMLPreInitializationEvent e) - { - proxy.preInit(e); - Config.init(e); - } + private static final String PROTOCOL_VERSION = "1"; + public static final SimpleChannel INSTANCE_CHANNEL = NetworkRegistry.newSimpleChannel + ( + new ResourceLocation(MODID, "createdisk"), + () -> PROTOCOL_VERSION, + PROTOCOL_VERSION::equals, + PROTOCOL_VERSION::equals + ); + + public static final CommonConfig COMMON_CONFIG = new CommonConfig(); + public static final ClientConfig CLIENT_CONFIG = new ClientConfig(); + + // ---------------- DEBUG ---------------- + public static final boolean DEBUG = false; + + public StorageTech() + { + DistExecutor.runWhenOn(Dist.CLIENT, () -> ClientSetup::new); + + MinecraftForge.EVENT_BUS.register(new ServerSetup()); + + ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, COMMON_CONFIG.getSpec()); + ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, CLIENT_CONFIG.getSpec()); - @EventHandler - public void init(FMLInitializationEvent e) - { - proxy.init(e); - } + CommonSetup commonSetup = new CommonSetup(); - @EventHandler - public void postInit(FMLPostInitializationEvent e) - { - proxy.postInit(e); - } - - @EventHandler - public void serverLoad(FMLServerStartingEvent e) - { - e.registerServerCommand(new CommandGiveMemory()); - } + FMLJavaModLoadingContext.get().getModEventBus().addListener(commonSetup::onCommonSetup); + + FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(Block.class, commonSetup::onRegisterBlocks); + FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(TileEntityType.class, commonSetup::onRegisterTiles); + FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(Item.class, commonSetup::onRegisterItems); + FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(IRecipeSerializer.class, commonSetup::onRegisterRecipeSerializers); + FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(ContainerType.class, commonSetup::onRegisterContainers); + + INSTANCE_CHANNEL.registerMessage(0, PacketCreateDisk.class, PacketCreateDisk::encoder, PacketCreateDisk::decoder, PacketCreateDisk::handle); + + } + } diff --git a/java/javapower/storagetech/gui/GuiContainerDiskWorkbench.java b/java/javapower/storagetech/gui/GuiContainerDiskWorkbench.java deleted file mode 100644 index 01ded7f..0000000 --- a/java/javapower/storagetech/gui/GuiContainerDiskWorkbench.java +++ /dev/null @@ -1,341 +0,0 @@ -package javapower.storagetech.gui; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import javapower.storagetech.container.ContainerDiskWorkbench; -import javapower.storagetech.core.ConfigClient; -import javapower.storagetech.proxy.ResourceLocationRegister; -import javapower.storagetech.tileentity.TileEntityDiskWorkbench; -import javapower.storagetech.util.IGUITileSync; -import javapower.storagetech.util.NetworkUtils; -import javapower.storagetech.util.Tools; -import net.minecraft.client.gui.GuiButton; -import net.minecraft.client.gui.GuiTextField; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Slot; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.fml.client.config.GuiUtils; - -public class GuiContainerDiskWorkbench extends GuiContainer implements IGUITileSync -{ - boolean showHelp, update; - long memory = 0l; - boolean init = false; - int disk_size = 1000; - int disk_maxsize = 0; - - boolean enable_costdisk = true; - - float prossesTime = 0.0f; - int energy = 0; - int capacity = 0; - boolean prosses = false; - int animaite = 0; - - GuiTextField textField_size; - GuiButton button_create = new GuiButton(1, 28, 17, 40, 20, I18n.format("storagetech.gui.create")); - byte slot = -1; - TileEntityDiskWorkbench tileentity; - - private String[] i18nBuffer; - //private byte update_mouse = 0; - - public GuiContainerDiskWorkbench(TileEntityDiskWorkbench tile, EntityPlayer player) - { - super(new ContainerDiskWorkbench(tile, player)); - tileentity = tile; - - xSize = 176; - ySize = 189; - NetworkUtils.sendToServerPlayerAsOpenGUI(tile, this); - - //NBTTagCompound nbt = new NBTTagCompound(); - //nbt.setByte("up", (byte) 1); - //sendInfo(nbt); - - i18nBuffer = new String[] - { - I18n.format("storagetech.gui.creation"), - I18n.format("storagetech.gui.availablespace"), - I18n.format("storagetech.gui.disksizein"), - I18n.format("storagetech.gui.info"), - I18n.format("storagetech.gui.insertstoragepart"), - I18n.format("storagetech.gui.insertstoragehousing"), - I18n.format("storagetech.gui.for") - }; - } - - @Override - public void initGui() - { - super.initGui(); - showHelp = ConfigClient.getShowHelp(); - - if(!init) - { - init = true; - textField_size = new GuiTextField(0, fontRenderer, 28, 17, 70, 20); - textField_size.setMaxStringLength(10); - textField_size.setText(""+disk_size); - } - - buttonList.clear(); - buttonList.add(button_create); - //Mouse.setGrabbed(false); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) - { - mc.renderEngine.bindTexture(ResourceLocationRegister.gui_diskwb); - - int x = (width - xSize) /2; - int y = (height - ySize) /2; - - textField_size.x = x + 28; - textField_size.y = y + 57; - - button_create.x = x + 100; - button_create.y = y + 57; - - this.drawTexturedModalRect(x, y, 0, 0, xSize, ySize); - this.drawTexturedModalRect(x-24, y+10, 210, 0, 27, 82); - - if(!update) - return; - - if(enable_costdisk) - { - this.drawTexturedModalRect(x+173, y, 176, 0, 22, 98); - - if(energy > 0) - { - int yw = (int)(59*(energy/(float)capacity)); - //int yw = 59; - this.drawTexturedModalRect(x+176, y+20+(59-yw), 198, 59-yw, 12, yw); - } - - if(prosses && prossesTime > 0.0f) - this.drawTexturedModalRect(x+148, y+36, 176, 98, 15, Math.min((int)(22*prossesTime),22)); - } - - if(prosses && prossesTime > 0.0f) - { - drawTexturedModalRect(x+26, y+26, 26, 19, 116, 5); - drawTexturedModalRect(x+27, y+16, 0 + animaite, 189, 114, 5); - drawTexturedModalRect(x+27, y+48, 0 + animaite, 189, 114, 5); - - this.drawCenteredString(fontRenderer, i18nBuffer[0]+" "+(((int)(prossesTime*10000))/100f)+" %", x + 84, y + 30, 0xffffff); - if(animaite < 0) - animaite = 10; - else - --animaite; - } - else - { - - this.drawString(fontRenderer, i18nBuffer[1]+": ", x + 28, y + 6, 0xffffff); - this.drawString(fontRenderer, Tools.longFormatToString(memory)+" VIB", x + 28, y + 17, 0xffffff); - this.drawString(fontRenderer, i18nBuffer[2]+" VIB:", x + 28, y + 47, 0xffffff); - - } - - textField_size.drawTextBox(); - - this.drawString(fontRenderer, "VIB: Virtual Item Box", x + 34, y + 87, 0xffffff); - this.drawString(fontRenderer, "1 VIB = "+i18nBuffer[6]+" 1 item", x + 40, y + 97, 0xffffff); - - //if(slot == 0)this.drawString(fontRenderer, "insert storage part", x + 5, y + 4, 0xffffff); - //else if(slot == 1)this.drawString(fontRenderer, "insert storage housing", x + 5, y + 4, 0xffffff); - - if(enable_costdisk) - { - if(prosses && mouseX >= x+148 && mouseY >= y+36 && mouseX <= x+163 && mouseY <= y+58) - { - List list = new ArrayList(); - list.add((((int)(prossesTime*10000))/100f)+" %"); - GuiUtils.drawHoveringText(list, mouseX, mouseY, mc.displayWidth, mc.displayHeight, 100, fontRenderer); - } - if(mouseX >= x+176 && mouseY >= y+20 && mouseX <= x+187 && mouseY <= y+79) - { - List list = new ArrayList(); - list.add(energy+" RF /"+capacity+" RF"); - GuiUtils.drawHoveringText(list, mouseX, mouseY, mc.displayWidth, mc.displayHeight, 200, fontRenderer); - } - } - } - - @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) - { - this.drawDefaultBackground(); - super.drawScreen(mouseX, mouseY, partialTicks); - this.renderHoveredToolTip(mouseX, mouseY); - - if(showHelp) - { - if(slot == 0) - { - List list = new ArrayList(); - list.add("b(i) f"+i18nBuffer[3]); - list.add("7"+i18nBuffer[4]); - GuiUtils.drawHoveringText(list, mouseX, mouseY, mc.displayWidth, mc.displayHeight, 150, fontRenderer); - } - else if(slot == 1) - { - List list = new ArrayList(); - list.add("b(i) f"+i18nBuffer[3]); - list.add("7"+i18nBuffer[5]); - GuiUtils.drawHoveringText(list, mouseX, mouseY, mc.displayWidth, mc.displayHeight, 150, fontRenderer); - } - } - } - - @Override - public void updateScreen() - { - /*if(update_mouse < 4) - { - ++update_mouse; - Mouse.setGrabbed(false); - }*/ - - if(!update) - return; - super.updateScreen(); - textField_size.updateCursorCounter(); - Slot s = getSlotUnderMouse(); - if(s != null && s.getStack().isEmpty()) - { - if(s.slotNumber == 36)//storage part - { - slot = 0; - } - else if(s.slotNumber == 37)//storage Housing - { - slot = 1; - } - else - { - slot = -1; - } - } - else - slot = -1; - - if(enable_costdisk) - if(prosses) - { - if(button_create.enabled) - button_create.enabled = false; - } - else - { - if(!button_create.enabled) - button_create.enabled = true; - } - } - - @Override - protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException - { - super.mouseClicked(mouseX, mouseY, mouseButton); - textField_size.mouseClicked(mouseX, mouseY, mouseButton); - updateTFInteger(); - } - - @Override - protected void keyTyped(char typedChar, int keyCode) throws IOException - { - super.keyTyped(typedChar, keyCode); - - if("0123456789".indexOf(typedChar) != -1 || keyCode == 14 || keyCode == 203 || keyCode == 205) - { - textField_size.textboxKeyTyped(typedChar, keyCode); - updateTFInteger(); - } - } - - @Override - protected void actionPerformed(GuiButton button) throws IOException - { - if(button.id == 1) - { - if(disk_size < 1) - { - disk_size = 1; - textField_size.setText(""+disk_size); - } - NBTTagCompound nbt = new NBTTagCompound(); - nbt.setInteger("startCreateDisk", disk_size); - sendInfo(nbt); - } - } - - @Override - public Class tileEntityLink() - { - return TileEntityDiskWorkbench.class; - } - - @Override - public void reciveDataFromServer(NBTTagCompound nbt) - { - update = true; - if(nbt.hasKey("memory")) - memory = nbt.getLong("memory"); - - if(nbt.hasKey("max")) - disk_maxsize = nbt.getInteger("max"); - - if(nbt.hasKey("prosses")) - prosses = nbt.getBoolean("prosses"); - - if(nbt.hasKey("prossestime")) - prossesTime = nbt.getFloat("prossestime"); - - if(nbt.hasKey("energy")) - energy = nbt.getInteger("energy"); - - if(nbt.hasKey("capacity")) - capacity = nbt.getInteger("capacity"); - - if(nbt.hasKey("encd")) - enable_costdisk = nbt.getBoolean("encd"); - } - - private void updateTFInteger() - { - String text = textField_size.getText(); - boolean invalid = false; - try - { - double disk_size_d = Double.parseDouble(text); - if(disk_size_d > disk_maxsize) - invalid = true; - else - disk_size = (int) disk_size_d; - } - catch (Exception e) - { - - } - - if(invalid) - { - disk_size = disk_maxsize; - textField_size.setText(""+disk_size); - } - } - - public void sendInfo(NBTTagCompound nbt) - { - NetworkUtils.sendToServerTheData(tileentity, this, nbt); - } - -} diff --git a/java/javapower/storagetech/gui/GuiContainerDiskWorkbench.java.dis b/java/javapower/storagetech/gui/GuiContainerDiskWorkbench.java.dis deleted file mode 100644 index 653e594..0000000 --- a/java/javapower/storagetech/gui/GuiContainerDiskWorkbench.java.dis +++ /dev/null @@ -1,199 +0,0 @@ -package javapower.storagetech.gui; - -import java.io.IOException; - -import javapower.storagetech.container.ContainerDiskWorkbench; -import javapower.storagetech.proxy.ResourceLocationRegister; -import javapower.storagetech.tileentity.TileEntityDiskWorkbench; -import javapower.storagetech.util.IGUITileSync; -import javapower.storagetech.util.NetworkUtils; -import javapower.storagetech.util.Tools; -import net.minecraft.client.gui.GuiButton; -import net.minecraft.client.gui.GuiTextField; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Slot; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; - -public class GuiContainerDiskWorkbench extends GuiContainer implements IGUITileSync -{ - long memory = 0l; - boolean init = false; - int disk_size = 1000; - int disk_maxsize = 0; - GuiTextField textField_size; - GuiButton button_create = new GuiButton(1, 28, 17, 40, 20, "Create"); - byte slot = -1; - TileEntityDiskWorkbench tileentity; - - public GuiContainerDiskWorkbench(TileEntityDiskWorkbench tile, EntityPlayer player) - { - super(new ContainerDiskWorkbench(tile, player)); - tileentity = tile; - - xSize = 176; - ySize = 189; - NetworkUtils.sendToServerPlayerAsOpenGUI(tile, this); - } - - @Override - public void initGui() - { - super.initGui(); - if(!init) - { - init = true; - textField_size = new GuiTextField(0, fontRenderer, 28, 17, 70, 20); - textField_size.setMaxStringLength(10); - textField_size.setText(""+disk_size); - } - - buttonList.clear(); - buttonList.add(button_create); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) - { - mc.renderEngine.bindTexture(ResourceLocationRegister.gui_diskwb); - - int x = (width - xSize) /2; - int y = (height - ySize) /2; - - textField_size.x = x + 28; - textField_size.y = y + 57; - - button_create.x = x + 100; - button_create.y = y + 57; - - this.drawTexturedModalRect(x, y, 0, 0, xSize, ySize); - - this.drawString(fontRenderer, "available space: ", x + 28, y + 17, 0xffffff); - this.drawString(fontRenderer, Tools.longFormatToString(memory)+" VIB", x + 28, y + 27, 0xffffff); - this.drawString(fontRenderer, "disk size in VIB:", x + 28, y + 47, 0xffffff); - - textField_size.drawTextBox(); - - this.drawString(fontRenderer, "VIB: Virtual Item Box", x + 34, y + 87, 0xffffff); - this.drawString(fontRenderer, "1 VIB = for 1 item", x + 40, y + 97, 0xffffff); - - if(slot == 0)this.drawString(fontRenderer, "insert storage part", x + 5, y + 4, 0xffffff); - else if(slot == 1)this.drawString(fontRenderer, "insert storage housing", x + 5, y + 4, 0xffffff); - } - - @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) - { - this.drawDefaultBackground(); - super.drawScreen(mouseX, mouseY, partialTicks); - this.renderHoveredToolTip(mouseX, mouseY); - } - - @Override - public void updateScreen() - { - super.updateScreen(); - textField_size.updateCursorCounter(); - Slot s = getSlotUnderMouse(); - if(s != null && s.getStack().isEmpty()) - { - if(s.slotNumber == 36)//storage part - { - slot = 0; - } - else if(s.slotNumber == 37)//storage Housing - { - slot = 1; - } - else - { - slot = -1; - } - } - else - slot = -1; - } - - @Override - protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException - { - super.mouseClicked(mouseX, mouseY, mouseButton); - textField_size.mouseClicked(mouseX, mouseY, mouseButton); - updateTFInteger(); - } - - @Override - protected void keyTyped(char typedChar, int keyCode) throws IOException - { - super.keyTyped(typedChar, keyCode); - - if("0123456789".indexOf(typedChar) != -1 || keyCode == 14 || keyCode == 203 || keyCode == 205) - { - textField_size.textboxKeyTyped(typedChar, keyCode); - updateTFInteger(); - } - } - - @Override - protected void actionPerformed(GuiButton button) throws IOException - { - if(button.id == 1) - { - if(disk_size < 1) - { - disk_size = 1; - textField_size.setText(""+disk_size); - } - NBTTagCompound nbt = new NBTTagCompound(); - nbt.setInteger("createDisk", disk_size); - sendInfo(nbt); - } - } - - @Override - public Class tileEntityLink() - { - return TileEntityDiskWorkbench.class; - } - - @Override - public void reciveDataFromServer(NBTTagCompound nbt) - { - if(nbt.hasKey("memory")) - memory = nbt.getLong("memory"); - - if(nbt.hasKey("max")) - disk_maxsize = nbt.getInteger("max"); - } - - private void updateTFInteger() - { - String text = textField_size.getText(); - boolean invalid = false; - try - { - double disk_size_d = Double.parseDouble(text); - if(disk_size_d > disk_maxsize) - invalid = true; - else - disk_size = (int) disk_size_d; - } - catch (Exception e) - { - - } - - if(invalid) - { - disk_size = disk_maxsize; - textField_size.setText(""+disk_size); - } - } - - public void sendInfo(NBTTagCompound nbt) - { - NetworkUtils.sendToServerTheData(tileentity, this, nbt); - } - -} diff --git a/java/javapower/storagetech/gui/GuiContainerFluidDiskWorkbench.java b/java/javapower/storagetech/gui/GuiContainerFluidDiskWorkbench.java deleted file mode 100644 index eee8dc8..0000000 --- a/java/javapower/storagetech/gui/GuiContainerFluidDiskWorkbench.java +++ /dev/null @@ -1,339 +0,0 @@ -package javapower.storagetech.gui; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import javapower.storagetech.container.ContainerFluidDiskWorkbench; -import javapower.storagetech.core.ConfigClient; -import javapower.storagetech.proxy.ResourceLocationRegister; -import javapower.storagetech.tileentity.TileEntityFluidDiskWorkbench; -import javapower.storagetech.util.IGUITileSync; -import javapower.storagetech.util.NetworkUtils; -import javapower.storagetech.util.Tools; -import net.minecraft.client.gui.GuiButton; -import net.minecraft.client.gui.GuiTextField; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Slot; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.fml.client.config.GuiUtils; - -public class GuiContainerFluidDiskWorkbench extends GuiContainer implements IGUITileSync -{ - boolean showHelp, update; - long memory = 0l; - boolean init = false; - int disk_size = 1000; - int disk_maxsize = 0; - - boolean enable_costdisk = true; - - float prossesTime = 0.0f; - int energy = 0; - int capacity = 0; - boolean prosses = false; - int animaite = 0; - - GuiTextField textField_size; - GuiButton button_create = new GuiButton(1, 28, 17, 40, 20, I18n.format("storagetech.gui.create")); - byte slot = -1; - TileEntityFluidDiskWorkbench tileentity; - - private String[] i18nBuffer; - //private byte update_mouse = 0; - - public GuiContainerFluidDiskWorkbench(TileEntityFluidDiskWorkbench tile, EntityPlayer player) - { - super(new ContainerFluidDiskWorkbench(tile, player)); - tileentity = tile; - - xSize = 176; - ySize = 189; - NetworkUtils.sendToServerPlayerAsOpenGUI(tile, this); - - //NBTTagCompound nbt = new NBTTagCompound(); - //nbt.setByte("up", (byte) 1); - //sendInfo(nbt); - - i18nBuffer = new String[] - { - I18n.format("storagetech.gui.creation"), - I18n.format("storagetech.gui.availablespace"), - I18n.format("storagetech.gui.disksizein"), - I18n.format("storagetech.gui.info"), - I18n.format("storagetech.gui.insertfluidstoragepart"), - I18n.format("storagetech.gui.insertstoragehousing"), - I18n.format("storagetech.gui.for") - }; - } - - @Override - public void initGui() - { - super.initGui(); - showHelp = ConfigClient.getShowHelp(); - - if(!init) - { - init = true; - textField_size = new GuiTextField(0, fontRenderer, 28, 17, 70, 20); - textField_size.setMaxStringLength(10); - textField_size.setText(""+disk_size); - } - - buttonList.clear(); - buttonList.add(button_create); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) - { - mc.renderEngine.bindTexture(ResourceLocationRegister.gui_fdiskwb); - - int x = (width - xSize) /2; - int y = (height - ySize) /2; - - textField_size.x = x + 28; - textField_size.y = y + 57; - - button_create.x = x + 100; - button_create.y = y + 57; - - this.drawTexturedModalRect(x, y, 0, 0, xSize, ySize); - this.drawTexturedModalRect(x-24, y+10, 210, 0, 27, 82); - - if(!update) - return; - - if(enable_costdisk) - { - this.drawTexturedModalRect(x+173, y, 176, 0, 22, 98); - - if(energy > 0) - { - int yw = (int)(59*(energy/(float)capacity)); - //int yw = 59; - this.drawTexturedModalRect(x+176, y+20+(59-yw), 198, 59-yw, 12, yw); - } - - if(prosses && prossesTime > 0.0f) - this.drawTexturedModalRect(x+148, y+36, 176, 98, 15, Math.min((int)(22*prossesTime),22)); - } - - if(prosses && prossesTime > 0.0f) - { - drawTexturedModalRect(x+26, y+26, 26, 19, 116, 5); - drawTexturedModalRect(x+27, y+16, 0 + animaite, 189, 114, 5); - drawTexturedModalRect(x+27, y+48, 0 + animaite, 189, 114, 5); - - this.drawCenteredString(fontRenderer, i18nBuffer[0]+" "+(((int)(prossesTime*10000))/100f)+" %", x + 84, y + 30, 0xffffff); - if(animaite < 0) - animaite = 10; - else - --animaite; - } - else - { - this.drawString(fontRenderer, i18nBuffer[1]+": ", x + 28, y + 6, 0xffffff); - this.drawString(fontRenderer, Tools.longFormatToString(memory)+" VFT", x + 28, y + 17, 0xffffff); - this.drawString(fontRenderer, i18nBuffer[2]+" VFT:", x + 28, y + 47, 0xffffff); - } - - textField_size.drawTextBox(); - - this.drawString(fontRenderer, "VFT: Virtual Fluid Tank", x + 34, y + 87, 0xffffff); - this.drawString(fontRenderer, "1 VFT = "+i18nBuffer[6]+" 1 mb", x + 40, y + 97, 0xffffff); - - //if(slot == 0)this.drawString(fontRenderer, "insert fluid storage part", x + 5, y + 4, 0xffffff); - //else if(slot == 1)this.drawString(fontRenderer, "insert storage housing", x + 5, y + 4, 0xffffff); - - if(enable_costdisk) - { - if(prosses && mouseX >= x+148 && mouseY >= y+36 && mouseX <= x+163 && mouseY <= y+58) - { - List list = new ArrayList(); - list.add((((int)(prossesTime*10000))/100f)+" %"); - GuiUtils.drawHoveringText(list, mouseX, mouseY, mc.displayWidth, mc.displayHeight, 100, fontRenderer); - } - if(mouseX >= x+176 && mouseY >= y+20 && mouseX <= x+187 && mouseY <= y+79) - { - List list = new ArrayList(); - list.add(energy+" RF /"+capacity+" RF"); - GuiUtils.drawHoveringText(list, mouseX, mouseY, mc.displayWidth, mc.displayHeight, 200, fontRenderer); - } - } - } - - @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) - { - this.drawDefaultBackground(); - /*if(!update) - return;*/ - super.drawScreen(mouseX, mouseY, partialTicks); - this.renderHoveredToolTip(mouseX, mouseY); - - if(showHelp) - { - if(slot == 0) - { - List list = new ArrayList(); - list.add("b(i) f"+i18nBuffer[3]); - list.add("7"+i18nBuffer[4]); - GuiUtils.drawHoveringText(list, mouseX, mouseY, mc.displayWidth, mc.displayHeight, 150, fontRenderer); - } - else if(slot == 1) - { - List list = new ArrayList(); - list.add("b(i) f"+i18nBuffer[3]); - list.add("7"+i18nBuffer[5]); - GuiUtils.drawHoveringText(list, mouseX, mouseY, mc.displayWidth, mc.displayHeight, 150, fontRenderer); - } - } - } - - @Override - public void updateScreen() - { - /*if(update_mouse < 4) - { - ++update_mouse; - Mouse.setGrabbed(false); - }*/ - if(!update) - return; - super.updateScreen(); - textField_size.updateCursorCounter(); - Slot s = getSlotUnderMouse(); - if(s != null && s.getStack().isEmpty()) - { - if(s.slotNumber == 36)//storage part - { - slot = 0; - } - else if(s.slotNumber == 37)//storage Housing - { - slot = 1; - } - else - { - slot = -1; - } - } - else - slot = -1; - - if(enable_costdisk) - if(prosses) - { - if(button_create.enabled) - button_create.enabled = false; - } - else - { - if(!button_create.enabled) - button_create.enabled = true; - } - } - - @Override - protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException - { - super.mouseClicked(mouseX, mouseY, mouseButton); - textField_size.mouseClicked(mouseX, mouseY, mouseButton); - updateTFInteger(); - } - - @Override - protected void keyTyped(char typedChar, int keyCode) throws IOException - { - super.keyTyped(typedChar, keyCode); - - if("0123456789".indexOf(typedChar) != -1 || keyCode == 14 || keyCode == 203 || keyCode == 205) - { - textField_size.textboxKeyTyped(typedChar, keyCode); - updateTFInteger(); - } - } - - @Override - protected void actionPerformed(GuiButton button) throws IOException - { - if(button.id == 1) - { - if(disk_size < 1) - { - disk_size = 1; - textField_size.setText(""+disk_size); - } - NBTTagCompound nbt = new NBTTagCompound(); - nbt.setInteger("startCreateDisk", disk_size); - sendInfo(nbt); - } - } - - @Override - public Class tileEntityLink() - { - return TileEntityFluidDiskWorkbench.class; - } - - @Override - public void reciveDataFromServer(NBTTagCompound nbt) - { - update = true; - if(nbt.hasKey("memory")) - memory = nbt.getLong("memory"); - - if(nbt.hasKey("max")) - disk_maxsize = nbt.getInteger("max"); - - if(nbt.hasKey("prosses")) - prosses = nbt.getBoolean("prosses"); - - if(nbt.hasKey("prossestime")) - prossesTime = nbt.getFloat("prossestime"); - - if(nbt.hasKey("energy")) - energy = nbt.getInteger("energy"); - - if(nbt.hasKey("capacity")) - capacity = nbt.getInteger("capacity"); - - if(nbt.hasKey("encd")) - enable_costdisk = nbt.getBoolean("encd"); - } - - private void updateTFInteger() - { - String text = textField_size.getText(); - boolean invalid = false; - try - { - double disk_size_d = Double.parseDouble(text); - if(disk_size_d > disk_maxsize) - invalid = true; - else - disk_size = (int) disk_size_d; - } - catch (Exception e) - { - - } - - if(invalid) - { - disk_size = disk_maxsize; - textField_size.setText(""+disk_size); - } - } - - public void sendInfo(NBTTagCompound nbt) - { - NetworkUtils.sendToServerTheData(tileentity, this, nbt); - } - -} diff --git a/java/javapower/storagetech/gui/GuiContainerFluidDiskWorkbench.java.dis b/java/javapower/storagetech/gui/GuiContainerFluidDiskWorkbench.java.dis deleted file mode 100644 index d2ecfc9..0000000 --- a/java/javapower/storagetech/gui/GuiContainerFluidDiskWorkbench.java.dis +++ /dev/null @@ -1,200 +0,0 @@ -package javapower.storagetech.gui; - -import java.io.IOException; - -import javapower.storagetech.container.ContainerFluidDiskWorkbench; -import javapower.storagetech.core.StorageTech; -import javapower.storagetech.proxy.ResourceLocationRegister; -import javapower.storagetech.tileentity.TileEntityFluidDiskWorkbench; -import javapower.storagetech.util.IGUITileSync; -import javapower.storagetech.util.NetworkUtils; -import javapower.storagetech.util.Tools; -import net.minecraft.client.gui.GuiButton; -import net.minecraft.client.gui.GuiTextField; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Slot; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; - -public class GuiContainerFluidDiskWorkbench extends GuiContainer implements IGUITileSync -{ - long memory = 0l; - boolean init = false; - int disk_size = 1000; - int disk_maxsize = 0; - GuiTextField textField_size; - GuiButton button_create = new GuiButton(1, 28, 17, 40, 20, "Create"); - byte slot = -1; - TileEntityFluidDiskWorkbench tileentity; - - public GuiContainerFluidDiskWorkbench(TileEntityFluidDiskWorkbench tile, EntityPlayer player) - { - super(new ContainerFluidDiskWorkbench(tile, player)); - tileentity = tile; - - xSize = 176; - ySize = 189; - NetworkUtils.sendToServerPlayerAsOpenGUI(tile, this); - } - - @Override - public void initGui() - { - super.initGui(); - if(!init) - { - init = true; - textField_size = new GuiTextField(0, fontRenderer, 28, 17, 70, 20); - textField_size.setMaxStringLength(10); - textField_size.setText(""+disk_size); - } - - buttonList.clear(); - buttonList.add(button_create); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) - { - mc.renderEngine.bindTexture(ResourceLocationRegister.gui_fdiskwb); - - int x = (width - xSize) /2; - int y = (height - ySize) /2; - - textField_size.x = x + 28; - textField_size.y = y + 57; - - button_create.x = x + 100; - button_create.y = y + 57; - - this.drawTexturedModalRect(x, y, 0, 0, xSize, ySize); - - this.drawString(fontRenderer, "available space: ", x + 28, y + 17, 0xffffff); - this.drawString(fontRenderer, Tools.longFormatToString(memory)+" VFT", x + 28, y + 27, 0xffffff); - this.drawString(fontRenderer, "disk size in VFT:", x + 28, y + 47, 0xffffff); - - textField_size.drawTextBox(); - - this.drawString(fontRenderer, "VFT: Virtual Fluid Tank", x + 34, y + 87, 0xffffff); - this.drawString(fontRenderer, "1 VFT = for 1 fluid", x + 40, y + 97, 0xffffff); - - if(slot == 0)this.drawString(fontRenderer, "insert fluid storage part", x + 5, y + 4, 0xffffff); - else if(slot == 1)this.drawString(fontRenderer, "insert storage housing", x + 5, y + 4, 0xffffff); - } - - @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) - { - this.drawDefaultBackground(); - super.drawScreen(mouseX, mouseY, partialTicks); - this.renderHoveredToolTip(mouseX, mouseY); - } - - @Override - public void updateScreen() - { - super.updateScreen(); - textField_size.updateCursorCounter(); - Slot s = getSlotUnderMouse(); - if(s != null && s.getStack().isEmpty()) - { - if(s.slotNumber == 36)//storage part - { - slot = 0; - } - else if(s.slotNumber == 37)//storage Housing - { - slot = 1; - } - else - { - slot = -1; - } - } - else - slot = -1; - } - - @Override - protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException - { - super.mouseClicked(mouseX, mouseY, mouseButton); - textField_size.mouseClicked(mouseX, mouseY, mouseButton); - updateTFInteger(); - } - - @Override - protected void keyTyped(char typedChar, int keyCode) throws IOException - { - super.keyTyped(typedChar, keyCode); - - if("0123456789".indexOf(typedChar) != -1 || keyCode == 14 || keyCode == 203 || keyCode == 205) - { - textField_size.textboxKeyTyped(typedChar, keyCode); - updateTFInteger(); - } - } - - @Override - protected void actionPerformed(GuiButton button) throws IOException - { - if(button.id == 1) - { - if(disk_size < 1) - { - disk_size = 1; - textField_size.setText(""+disk_size); - } - NBTTagCompound nbt = new NBTTagCompound(); - nbt.setInteger("createDisk", disk_size); - sendInfo(nbt); - } - } - - @Override - public Class tileEntityLink() - { - return TileEntityFluidDiskWorkbench.class; - } - - @Override - public void reciveDataFromServer(NBTTagCompound nbt) - { - if(nbt.hasKey("memory")) - memory = nbt.getLong("memory"); - - if(nbt.hasKey("max")) - disk_maxsize = nbt.getInteger("max"); - } - - private void updateTFInteger() - { - String text = textField_size.getText(); - boolean invalid = false; - try - { - double disk_size_d = Double.parseDouble(text); - if(disk_size_d > disk_maxsize) - invalid = true; - else - disk_size = (int) disk_size_d; - } - catch (Exception e) - { - - } - - if(invalid) - { - disk_size = disk_maxsize; - textField_size.setText(""+disk_size); - } - } - - public void sendInfo(NBTTagCompound nbt) - { - NetworkUtils.sendToServerTheData(tileentity, this, nbt); - } - -} diff --git a/java/javapower/storagetech/gui/GuiHandler.java b/java/javapower/storagetech/gui/GuiHandler.java deleted file mode 100644 index 35d9fba..0000000 --- a/java/javapower/storagetech/gui/GuiHandler.java +++ /dev/null @@ -1,27 +0,0 @@ -package javapower.storagetech.gui; - -import javapower.storagetech.util.GuiUtils; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.fml.common.network.IGuiHandler; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -public class GuiHandler implements IGuiHandler -{ - - @Override - public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) - { - return GuiUtils.getContainer(world, new BlockPos(x, y, z), player); - } - - @SideOnly(Side.CLIENT) - @Override - public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) - { - return GuiUtils.getGuiContainer(world, new BlockPos(x, y, z), player); - } - -} diff --git a/java/javapower/storagetech/item/ItemDebug.java b/java/javapower/storagetech/item/ItemDebug.java deleted file mode 100644 index 62898d8..0000000 --- a/java/javapower/storagetech/item/ItemDebug.java +++ /dev/null @@ -1,77 +0,0 @@ -package javapower.storagetech.item; - -import javapower.storagetech.core.StorageTech; -import javapower.storagetech.util.IItemRegister; -import net.minecraft.block.Block; -import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.EnumHand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.TextComponentString; -import net.minecraft.world.World; - -public class ItemDebug extends Item implements IItemRegister -{ - public ItemDebug() - { - setCreativeTab(StorageTech.creativeTab); - setUnlocalizedName("itemdebug"); - setRegistryName("itemdebug"); - setMaxStackSize(1); - } - - @Override - public EnumActionResult onItemUse(EntityPlayer player, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) - { - IBlockState bs = worldIn.getBlockState(pos); - if(bs != null) - { - player.sendMessage(new TextComponentString("IBlockState:")); - player.sendMessage(new TextComponentString(" -"+bs)); - player.sendMessage(new TextComponentString(" -"+bs.getClass())); - player.sendMessage(new TextComponentString(" -"+bs.getClass().getName())); - Block block = bs.getBlock(); - if(block != null) - { - player.sendMessage(new TextComponentString("Block:")); - player.sendMessage(new TextComponentString(" -"+block)); - player.sendMessage(new TextComponentString(" -"+block.getClass())); - player.sendMessage(new TextComponentString(" -"+block.getClass().getName())); - player.sendMessage(new TextComponentString(" -UN: "+block.getUnlocalizedName())); - player.sendMessage(new TextComponentString(" -LN: "+block.getLocalizedName())); - player.sendMessage(new TextComponentString(" -Metadata: "+block.getMetaFromState(bs))); - - } - } - TileEntity tileEntity = worldIn.getTileEntity(pos); - if(tileEntity != null) - { - player.sendMessage(new TextComponentString("TileEntity:")); - player.sendMessage(new TextComponentString(" -"+tileEntity)); - player.sendMessage(new TextComponentString(" -"+tileEntity.getClass())); - player.sendMessage(new TextComponentString(" -"+tileEntity.getClass().getName())); - - player.sendMessage(new TextComponentString(" ->Interface:")); - Class[] classints = tileEntity.getClass().getInterfaces(); - for(Class c : classints) - player.sendMessage(new TextComponentString(" -"+c.getName())); - - player.sendMessage(new TextComponentString(" ->NBT:")); - player.sendMessage(new TextComponentString(" -"+tileEntity.writeToNBT(new NBTTagCompound()))); - } - - - return super.onItemUse(player, worldIn, pos, hand, facing, hitX, hitY, hitZ); - } - - @Override - public Item getItem() - { - return this; - } -} diff --git a/java/javapower/storagetech/item/ItemDiskCustom.java b/java/javapower/storagetech/item/ItemDiskCustom.java index 5b6f78f..ce18b60 100644 --- a/java/javapower/storagetech/item/ItemDiskCustom.java +++ b/java/javapower/storagetech/item/ItemDiskCustom.java @@ -5,91 +5,62 @@ import javax.annotation.Nullable; -import com.raoulvdberge.refinedstorage.RSItems; -import com.raoulvdberge.refinedstorage.api.storage.StorageType; -import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider; -import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSyncData; -import com.raoulvdberge.refinedstorage.apiimpl.API; +import com.refinedmods.refinedstorage.RSItems; +import com.refinedmods.refinedstorage.api.storage.StorageType; +import com.refinedmods.refinedstorage.api.storage.disk.IStorageDisk; +import com.refinedmods.refinedstorage.api.storage.disk.IStorageDiskProvider; +import com.refinedmods.refinedstorage.api.storage.disk.StorageDiskSyncData; +import com.refinedmods.refinedstorage.apiimpl.API; +import com.refinedmods.refinedstorage.render.Styles; import javapower.storagetech.core.StorageTech; -import javapower.storagetech.util.IItemRegister; -import javapower.storagetech.util.IRenderItemRegister; -import javapower.storagetech.util.ItemRenderCast; -import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumHand; +import net.minecraft.util.Hand; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.World; +import net.minecraft.world.server.ServerWorld; -public class ItemDiskCustom extends Item implements IItemRegister, IStorageDiskProvider, IRenderItemRegister +public class ItemDiskCustom extends Item implements IStorageDiskProvider { + public ItemDiskCustom() { - setRegistryName("customdisk"); - setUnlocalizedName("customdisk"); - setCreativeTab(StorageTech.creativeTab); - setMaxStackSize(1); + super(new Item.Properties().group(StorageTech.creativeTab)); + setRegistryName(StorageTech.MODID,"customdisk"); } @Override - public Item getItem() + public int getItemStackLimit(ItemStack stack) { - return this; + return 1; } - /*@Override - public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean selected) - { - super.onUpdate(stack, world, entity, slot, selected); - - if (!stack.hasTagCompound()) - { - StorageTech.RS_API.getDefaultStorageDiskBehavior().initDisk(StorageDiskType.ITEMS, stack); - } - } - - @Override - public void addInformation(ItemStack disk, World worldIn, List tooltip, ITooltipFlag flagIn) - { - IStorageDisk storage = create(disk); - - if (storage.isValid(disk)) - { - tooltip.add("Stored: " + storage.getStored() + "/" + storage.getCapacity()); - } - }*/ - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean selected) + public void inventoryTick(ItemStack stack, World world, Entity entityIn, int itemSlot, boolean isSelected) { - super.onUpdate(stack, world, entity, slot, selected); + super.inventoryTick(stack, world, entityIn, itemSlot, isSelected); - if (!world.isRemote) + if (!world.isRemote && !stack.hasTag()) { - if (!isValid(stack)) - { - API.instance().getOneSixMigrationHelper().migrateDisk(world, stack); - } - - if (!stack.hasTagCompound()) - { - UUID id = UUID.randomUUID(); + UUID id = UUID.randomUUID(); + + API.instance().getStorageDiskManager((ServerWorld) world).set(id, API.instance().createDefaultItemDisk((ServerWorld) world, getCapacity(stack))); + API.instance().getStorageDiskManager((ServerWorld) world).markForSaving(); - API.instance().getStorageDiskManager(world).set(id, API.instance().createDefaultItemDisk(world, getCapacity(stack))); - API.instance().getStorageDiskManager(world).markForSaving(); - - setId(stack, id); - } + setId(stack, id); } } @Override - public void addInformation(ItemStack stack, @Nullable World world, List tooltip, ITooltipFlag flag) + public void addInformation(ItemStack stack, @Nullable World world, List tooltip, ITooltipFlag flag) { super.addInformation(stack, world, tooltip, flag); @@ -99,16 +70,17 @@ public void addInformation(ItemStack stack, @Nullable World world, List API.instance().getStorageDiskSync().sendRequest(id); - IStorageDiskSyncData data = API.instance().getStorageDiskSync().getData(id); + StorageDiskSyncData data = API.instance().getStorageDiskSync().getData(id); if (data != null) { - tooltip.add(I18n.format("misc.refinedstorage:storage.stored_capacity", API.instance().getQuantityFormatter().format(data.getStored()), API.instance().getQuantityFormatter().format(data.getCapacity()))); + if (data.getCapacity() == -1) + tooltip.add(new TranslationTextComponent("misc.refinedstorage.storage.stored", API.instance().getQuantityFormatter().format(data.getStored())).setStyle(Styles.GRAY)); + else + tooltip.add(new TranslationTextComponent("misc.refinedstorage.storage.stored_capacity", API.instance().getQuantityFormatter().format(data.getStored()), API.instance().getQuantityFormatter().format(data.getCapacity())).setStyle(Styles.GRAY)); } if (flag.isAdvanced()) - { - tooltip.add(id.toString()); - } + tooltip.add(new StringTextComponent(id.toString()).setStyle(Styles.GRAY)); } } @@ -118,57 +90,19 @@ public int getEntityLifespan(ItemStack stack, World world) return Integer.MAX_VALUE; } - /*@Override - public void onCreated(ItemStack stack, World world, EntityPlayer player) - { - super.onCreated(stack, world, player); - - StorageTech.RS_API.getDefaultStorageDiskBehavior().initDisk(StorageDiskType.ITEMS, stack); - } - - @Override - public NBTTagCompound getNBTShareTag(ItemStack stack) - { - NBTTagCompound nbt = StorageTech.RS_API.getDefaultStorageDiskBehavior().getShareTag(StorageDiskType.ITEMS, stack); - if(stack != null && stack.hasTagCompound() && stack.getTagCompound().hasKey("st_cap")) - { - nbt.setInteger("st_cap", stack.getTagCompound().getInteger("st_cap")); - } - return nbt; - }*/ - - /*@Override - public IStorageDisk create(ItemStack disk) - { - //System.out.println(disk.getTagCompound()); - int cappacity = 1; - if(disk != null && disk.getTagCompound() != null && disk.getTagCompound().hasKey("st_cap")) - cappacity = disk.getTagCompound().getInteger("st_cap"); - return StorageTech.RS_API.getDefaultStorageDiskBehavior().createItemStorage(disk.getTagCompound(), cappacity); - }*/ - - @Override - public ItemRenderCast[] getItemsRender() - { - return new ItemRenderCast[] - { - new ItemRenderCast(0, "customdisk") - }; - } - @Override public int getCapacity(ItemStack disk) { int cappacity = 1; - if(disk != null && disk.getTagCompound() != null && disk.getTagCompound().hasKey("st_cap")) - cappacity = disk.getTagCompound().getInteger("st_cap"); + if(disk != null && disk.getTag() != null && disk.getTag().contains("st_cap")) + cappacity = disk.getTag().getInt("st_cap"); return cappacity; } @Override public UUID getId(ItemStack disk) { - return disk.getTagCompound().getUniqueId("Id"); + return disk.getTag().getUniqueId("Id"); } @Override @@ -178,38 +112,38 @@ public StorageType getType() } @Override - public boolean isValid(ItemStack disk) + public boolean isValid(ItemStack disk) { - return disk.hasTagCompound() && disk.getTagCompound().hasUniqueId("Id") && disk.getTagCompound().hasKey("st_cap"); - } + return disk.hasTag() && disk.getTag().hasUniqueId("Id"); + } @Override - public void setId(ItemStack disk, UUID id) + public void setId(ItemStack disk, UUID id) { - disk.setTagCompound(new NBTTagCompound()); - disk.getTagCompound().setUniqueId("Id", id); - } + disk.setTag(new CompoundNBT()); + disk.getTag().putUniqueId("Id", id); + } @Override - public ActionResult onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) + public ActionResult onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) { - if(!worldIn.isRemote && playerIn.isSneaking()) + if(!worldIn.isRemote && playerIn.isCrouching()) { ItemStack itemStack = playerIn.getHeldItem(handIn); if(itemStack != null && itemStack.getItem() instanceof ItemDiskCustom) { - UUID id = getId(itemStack); - - API.instance().getStorageDiskSync().sendRequest(id); - IStorageDiskSyncData storageData = API.instance().getStorageDiskSync().getData(id); - if(storageData == null || storageData.getStored() <= 0) - { - int cap = itemStack.getTagCompound().getInteger("st_cap"); - ItemStack memory_item = ItemMemory.createItem(cap, false); + + @SuppressWarnings("rawtypes") + IStorageDisk disk = API.instance().getStorageDiskManager((ServerWorld) worldIn).getByStack(itemStack); + + if (disk != null && disk.getStored() == 0) + { + int cap = itemStack.getTag().getInt("st_cap"); + ItemStack memory_item = ItemMemoryItem.createItem(cap); playerIn.setHeldItem(handIn, new ItemStack(RSItems.STORAGE_HOUSING, 1)); if(cap > 0) playerIn.dropItem(memory_item, true); - } + } } } return super.onItemRightClick(worldIn, playerIn, handIn); diff --git a/java/javapower/storagetech/item/ItemFluidDiskCustom.java b/java/javapower/storagetech/item/ItemFluidDiskCustom.java index a54ea8d..45b7efe 100644 --- a/java/javapower/storagetech/item/ItemFluidDiskCustom.java +++ b/java/javapower/storagetech/item/ItemFluidDiskCustom.java @@ -5,80 +5,62 @@ import javax.annotation.Nullable; -import com.raoulvdberge.refinedstorage.RSItems; -import com.raoulvdberge.refinedstorage.api.storage.StorageType; -import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider; -import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSyncData; -import com.raoulvdberge.refinedstorage.apiimpl.API; +import com.refinedmods.refinedstorage.RSItems; +import com.refinedmods.refinedstorage.api.storage.StorageType; +import com.refinedmods.refinedstorage.api.storage.disk.IStorageDisk; +import com.refinedmods.refinedstorage.api.storage.disk.IStorageDiskProvider; +import com.refinedmods.refinedstorage.api.storage.disk.StorageDiskSyncData; +import com.refinedmods.refinedstorage.apiimpl.API; +import com.refinedmods.refinedstorage.render.Styles; import javapower.storagetech.core.StorageTech; -import javapower.storagetech.util.IItemRegister; -import javapower.storagetech.util.IRenderItemRegister; -import javapower.storagetech.util.ItemRenderCast; -import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumHand; +import net.minecraft.util.Hand; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.World; +import net.minecraft.world.server.ServerWorld; -public class ItemFluidDiskCustom extends Item implements IItemRegister, IStorageDiskProvider, IRenderItemRegister +public class ItemFluidDiskCustom extends Item implements IStorageDiskProvider { + public ItemFluidDiskCustom() { - setRegistryName("fluidcustomdisk"); - setUnlocalizedName("fluidcustomdisk"); - setCreativeTab(StorageTech.creativeTab); - setMaxStackSize(1); + super(new Item.Properties().group(StorageTech.creativeTab)); + setRegistryName(StorageTech.MODID,"fluidcustomdisk"); } @Override - public Item getItem() + public int getItemStackLimit(ItemStack stack) { - return this; + return 1; } - /*@Override - public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean selected) - { - super.onUpdate(stack, world, entity, slot, selected); - - if (!stack.hasTagCompound()) - { - StorageTech.RS_API.getDefaultStorageDiskBehavior().initDisk(StorageDiskType.FLUIDS, stack); - } - }*/ - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean selected) + public void inventoryTick(ItemStack stack, World world, Entity entityIn, int itemSlot, boolean isSelected) { - super.onUpdate(stack, world, entity, slot, selected); + super.inventoryTick(stack, world, entityIn, itemSlot, isSelected); - if (!world.isRemote) + if (!world.isRemote && !stack.hasTag()) { - if (!isValid(stack)) - { - API.instance().getOneSixMigrationHelper().migrateDisk(world, stack); - } - - if (!stack.hasTagCompound()) - { - UUID id = UUID.randomUUID(); - - API.instance().getStorageDiskManager(world).set(id, API.instance().createDefaultFluidDisk(world, getCapacity(stack))); - API.instance().getStorageDiskManager(world).markForSaving(); + UUID id = UUID.randomUUID(); + + API.instance().getStorageDiskManager((ServerWorld) world).set(id, API.instance().createDefaultFluidDisk((ServerWorld) world, getCapacity(stack))); + API.instance().getStorageDiskManager((ServerWorld) world).markForSaving(); - setId(stack, id); - } + setId(stack, id); } } @Override - public void addInformation(ItemStack stack, @Nullable World world, List tooltip, ITooltipFlag flag) + public void addInformation(ItemStack stack, @Nullable World world, List tooltip, ITooltipFlag flag) { super.addInformation(stack, world, tooltip, flag); @@ -88,85 +70,39 @@ public void addInformation(ItemStack stack, @Nullable World world, List API.instance().getStorageDiskSync().sendRequest(id); - IStorageDiskSyncData data = API.instance().getStorageDiskSync().getData(id); + StorageDiskSyncData data = API.instance().getStorageDiskSync().getData(id); if (data != null) { - tooltip.add(I18n.format("misc.refinedstorage:storage.stored_capacity", API.instance().getQuantityFormatter().format(data.getStored()), API.instance().getQuantityFormatter().format(data.getCapacity()))); + if (data.getCapacity() == -1) + tooltip.add(new TranslationTextComponent("misc.refinedstorage.storage.stored", API.instance().getQuantityFormatter().format(data.getStored())).setStyle(Styles.GRAY)); + else + tooltip.add(new TranslationTextComponent("misc.refinedstorage.storage.stored_capacity", API.instance().getQuantityFormatter().format(data.getStored()), API.instance().getQuantityFormatter().format(data.getCapacity())).setStyle(Styles.GRAY)); } if (flag.isAdvanced()) - { - tooltip.add(id.toString()); - } + tooltip.add(new StringTextComponent(id.toString()).setStyle(Styles.GRAY)); } } - /*public void addInformation(ItemStack disk, World worldIn, List tooltip, ITooltipFlag flagIn) - { - IStorageDisk storage = create(disk); - - if (storage.isValid(disk)) - { - tooltip.add("Stored: " + storage.getStored() + "/" + storage.getCapacity()); - } - }*/ - - /*@Override - public void onCreated(ItemStack stack, World world, EntityPlayer player) - { - super.onCreated(stack, world, player); - - StorageTech.RS_API.getDefaultStorageDiskBehavior().initDisk(StorageDiskType.FLUIDS, stack); - } - - @Override - public NBTTagCompound getNBTShareTag(ItemStack stack) - { - NBTTagCompound nbt = StorageTech.RS_API.getDefaultStorageDiskBehavior().getShareTag(StorageDiskType.FLUIDS, stack); - if(stack != null && stack.hasTagCompound() && stack.getTagCompound().hasKey("st_cap")) - { - nbt.setInteger("st_cap", stack.getTagCompound().getInteger("st_cap")); - } - return nbt; - }*/ - - /*@Override - public IStorageDisk create(ItemStack disk) - { - - int cappacity = 1; - if(disk != null && disk.getTagCompound() != null && disk.getTagCompound().hasKey("st_cap")) - cappacity = disk.getTagCompound().getInteger("st_cap"); - return StorageTech.RS_API.getDefaultStorageDiskBehavior().createFluidStorage(disk.getTagCompound(), cappacity); - }*/ @Override public int getEntityLifespan(ItemStack stack, World world) { return Integer.MAX_VALUE; } - - @Override - public ItemRenderCast[] getItemsRender() - { - return new ItemRenderCast[] - { - new ItemRenderCast(0, "fluidcustomdisk") - }; - } - + @Override public int getCapacity(ItemStack disk) { int cappacity = 1; - if(disk != null && disk.getTagCompound() != null && disk.getTagCompound().hasKey("st_cap")) - cappacity = disk.getTagCompound().getInteger("st_cap"); + if(disk != null && disk.getTag() != null && disk.getTag().contains("st_cap")) + cappacity = disk.getTag().getInt("st_cap"); return cappacity; } @Override public UUID getId(ItemStack disk) { - return disk.getTagCompound().getUniqueId("Id"); + return disk.getTag().getUniqueId("Id"); } @Override @@ -176,38 +112,38 @@ public StorageType getType() } @Override - public boolean isValid(ItemStack disk) + public boolean isValid(ItemStack disk) { - return disk.hasTagCompound() && disk.getTagCompound().hasUniqueId("Id") && disk.getTagCompound().hasKey("st_cap"); - } + return disk.hasTag() && disk.getTag().hasUniqueId("Id"); + } @Override - public void setId(ItemStack disk, UUID id) + public void setId(ItemStack disk, UUID id) { - disk.setTagCompound(new NBTTagCompound()); - disk.getTagCompound().setUniqueId("Id", id); - } + disk.setTag(new CompoundNBT()); + disk.getTag().putUniqueId("Id", id); + } @Override - public ActionResult onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) + public ActionResult onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) { - if(!worldIn.isRemote && playerIn.isSneaking()) + if(!worldIn.isRemote && playerIn.isCrouching()) { ItemStack itemStack = playerIn.getHeldItem(handIn); if(itemStack != null && itemStack.getItem() instanceof ItemFluidDiskCustom) { - UUID id = getId(itemStack); - - API.instance().getStorageDiskSync().sendRequest(id); - IStorageDiskSyncData storageData = API.instance().getStorageDiskSync().getData(id); - if(storageData == null || storageData.getStored() <= 0) - { - int cap = itemStack.getTagCompound().getInteger("st_cap"); - ItemStack memory_item = ItemMemory.createItem(cap, true); + + @SuppressWarnings("rawtypes") + IStorageDisk disk = API.instance().getStorageDiskManager((ServerWorld) worldIn).getByStack(itemStack); + + if (disk != null && disk.getStored() == 0) + { + int cap = itemStack.getTag().getInt("st_cap"); + ItemStack memory_item = ItemMemoryFluid.createItem(cap); playerIn.setHeldItem(handIn, new ItemStack(RSItems.STORAGE_HOUSING, 1)); if(cap > 0) playerIn.dropItem(memory_item, true); - } + } } } return super.onItemRightClick(worldIn, playerIn, handIn); diff --git a/java/javapower/storagetech/item/ItemMemory.java b/java/javapower/storagetech/item/ItemMemory.java deleted file mode 100644 index 22e013f..0000000 --- a/java/javapower/storagetech/item/ItemMemory.java +++ /dev/null @@ -1,84 +0,0 @@ -package javapower.storagetech.item; - -import java.util.List; - -import javapower.storagetech.core.StorageTech; -import javapower.storagetech.util.IItemRegister; -import javapower.storagetech.util.IRenderItemRegister; -import javapower.storagetech.util.ItemRenderCast; -import javapower.storagetech.util.Tools; -import net.minecraft.client.resources.I18n; -import net.minecraft.client.util.ITooltipFlag; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.NonNullList; -import net.minecraft.world.World; - -public class ItemMemory extends Item implements IItemRegister, IRenderItemRegister -{ - public ItemMemory() - { - setRegistryName("memory"); - setUnlocalizedName("memory"); - setCreativeTab(StorageTech.creativeTab); - setMaxStackSize(1); - setHasSubtypes(true); - } - - @Override - public void getSubItems(CreativeTabs tab, NonNullList items) - { - if (this.isInCreativeTab(tab)) - { - for(int i = 0; i <= 1; ++i) - items.add(new ItemStack(this, 1, i)); - } - } - - @Override - public ItemRenderCast[] getItemsRender() - { - return new ItemRenderCast[] - { - new ItemRenderCast(0, "memory"), - new ItemRenderCast(1, "memory") - }; - } - - @Override - public Item getItem() - { - return this; - } - - @Override - public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) - { - if(stack != null) - { - NBTTagCompound nbt = stack.getTagCompound(); - if(nbt != null && nbt.hasKey("memory")) - { - tooltip.add(Tools.longFormatToString(nbt.getLong("memory")) + (stack.getItemDamage() == 1 ? " VFT" : " VIB")); - tooltip.add(stack.getItemDamage() == 1 ? I18n.format("storagetech.tooltip.putvft") : I18n.format("storagetech.tooltip.putvib")); - } - else - { - tooltip.add(stack.getItemDamage() == 1 ? I18n.format("storagetech.tooltip.novft") : I18n.format("storagetech.tooltip.novib")); - } - } - } - - public static ItemStack createItem(long quant, boolean isFluid) - { - ItemStack item = new ItemStack(STItems.item_memory, 1, isFluid ? 1 : 0); - NBTTagCompound nbt = new NBTTagCompound(); - nbt.setLong("memory", quant); - item.setTagCompound(nbt); - - return item; - } - -} diff --git a/java/javapower/storagetech/item/ItemMemoryFluid.java b/java/javapower/storagetech/item/ItemMemoryFluid.java new file mode 100644 index 0000000..c64e427 --- /dev/null +++ b/java/javapower/storagetech/item/ItemMemoryFluid.java @@ -0,0 +1,59 @@ +package javapower.storagetech.item; + +import java.util.List; + +import com.refinedmods.refinedstorage.render.Styles; + +import javapower.storagetech.core.StorageTech; +import javapower.storagetech.util.Tools; +import net.minecraft.client.resources.I18n; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.World; + +public class ItemMemoryFluid extends Item +{ + public ItemMemoryFluid() + { + super(new Item.Properties().group(StorageTech.creativeTab)); + setRegistryName(StorageTech.MODID,"fluidmemory"); + } + + @Override + public int getItemStackLimit(ItemStack stack) + { + return 1; + } + + @Override + public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) + { + if(stack != null) + { + CompoundNBT nbt = stack.getTag(); + if(nbt != null && nbt.contains("memory")) + { + tooltip.add(new TranslationTextComponent(Tools.longFormatToString(nbt.getLong("memory")) + " VFT").setStyle(Styles.GRAY)); + tooltip.add(new TranslationTextComponent(I18n.format("storagetech.tooltip.putvft")).setStyle(Styles.GRAY)); + } + else + { + tooltip.add(new TranslationTextComponent(I18n.format("storagetech.tooltip.novft")).setStyle(Styles.GRAY)); + } + } + } + + public static ItemStack createItem(long quant) + { + ItemStack item = new ItemStack(STItems.item_memory, 1); + CompoundNBT nbt = new CompoundNBT(); + nbt.putLong("memory", quant); + item.setTag(nbt); + + return item; + } +} diff --git a/java/javapower/storagetech/item/ItemMemoryItem.java b/java/javapower/storagetech/item/ItemMemoryItem.java new file mode 100644 index 0000000..fdc435e --- /dev/null +++ b/java/javapower/storagetech/item/ItemMemoryItem.java @@ -0,0 +1,59 @@ +package javapower.storagetech.item; + +import java.util.List; + +import com.refinedmods.refinedstorage.render.Styles; + +import javapower.storagetech.core.StorageTech; +import javapower.storagetech.util.Tools; +import net.minecraft.client.resources.I18n; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.World; + +public class ItemMemoryItem extends Item +{ + public ItemMemoryItem() + { + super(new Item.Properties().group(StorageTech.creativeTab)); + setRegistryName(StorageTech.MODID,"memory"); + } + + @Override + public int getItemStackLimit(ItemStack stack) + { + return 1; + } + + @Override + public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) + { + if(stack != null) + { + CompoundNBT nbt = stack.getTag(); + if(nbt != null && nbt.contains("memory")) + { + tooltip.add(new TranslationTextComponent(Tools.longFormatToString(nbt.getLong("memory")) + " VIB").setStyle(Styles.GRAY)); + tooltip.add(new TranslationTextComponent(I18n.format("storagetech.tooltip.putvib")).setStyle(Styles.GRAY)); + } + else + { + tooltip.add(new TranslationTextComponent(I18n.format("storagetech.tooltip.novib")).setStyle(Styles.GRAY)); + } + } + } + + public static ItemStack createItem(long quant) + { + ItemStack item = new ItemStack(STItems.item_memory, 1); + CompoundNBT nbt = new CompoundNBT(); + nbt.putLong("memory", quant); + item.setTag(nbt); + + return item; + } +} diff --git a/java/javapower/storagetech/item/STItems.java b/java/javapower/storagetech/item/STItems.java index 462dc7f..3e56d36 100644 --- a/java/javapower/storagetech/item/STItems.java +++ b/java/javapower/storagetech/item/STItems.java @@ -1,11 +1,22 @@ package javapower.storagetech.item; import net.minecraft.item.Item; +import net.minecraftforge.registries.IForgeRegistry; public class STItems { public static final Item item_diskcustom = new ItemDiskCustom(); public static final Item item_fluiddiskcustom = new ItemFluidDiskCustom(); - public static final Item item_memory = new ItemMemory(); - //public static final Item item_debug = new ItemDebug(); + public static final Item item_memory = new ItemMemoryItem(); + public static final Item item_memory_fluid = new ItemMemoryFluid(); + + public static void registerItems(IForgeRegistry registry) + { + registry.register(item_diskcustom); + registry.register(item_fluiddiskcustom); + registry.register(item_memory); + registry.register(item_memory_fluid); + + } + } diff --git a/java/javapower/storagetech/jei/DiskWorkbench.java b/java/javapower/storagetech/jei/DiskWorkbench.java index 7fbdf6a..d2cc8cc 100644 --- a/java/javapower/storagetech/jei/DiskWorkbench.java +++ b/java/javapower/storagetech/jei/DiskWorkbench.java @@ -1,29 +1,27 @@ package javapower.storagetech.jei; +import javapower.storagetech.core.ResourceLocationRegister; import javapower.storagetech.core.StorageTech; -import javapower.storagetech.proxy.ResourceLocationRegister; -import mezz.jei.api.IGuiHelper; -import mezz.jei.api.gui.IDrawable; -import mezz.jei.api.gui.IDrawableStatic; -import mezz.jei.api.gui.IGuiItemStackGroup; +import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.gui.drawable.IDrawableStatic; +import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; +import mezz.jei.api.helpers.IGuiHelper; import mezz.jei.api.ingredients.IIngredients; -import mezz.jei.api.ingredients.VanillaTypes; -import mezz.jei.api.recipe.IRecipeCategory; -import mezz.jei.api.recipe.IRecipeWrapper; -import mezz.jei.api.recipe.IRecipeWrapperFactory; +import mezz.jei.api.recipe.category.IRecipeCategory; import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; public class DiskWorkbench { public static class Category implements IRecipeCategory { - - public static final String UID = StorageTech.MODID + ".diskiwb"; - private final String localizedName; - private final IDrawableStatic background; + public static final ResourceLocation UID = new ResourceLocation(StorageTech.MODID,"diskiwb"); + private String localizedName; + private IDrawableStatic background; public Category(IGuiHelper guiHelper) { @@ -32,21 +30,21 @@ public Category(IGuiHelper guiHelper) } @Override - public String getUid() + public ResourceLocation getUid() { return UID; } @Override - public String getTitle() + public Class getRecipeClass() { - return localizedName; + return Wrapper.class; } @Override - public String getModName() + public String getTitle() { - return "Storage Tech"; + return localizedName; } @Override @@ -56,19 +54,30 @@ public IDrawable getBackground() } @Override - public void setRecipe(IRecipeLayout recipeLayout, Wrapper recipeWrapper, IIngredients ingredients) + public IDrawable getIcon() { - IGuiItemStackGroup guiItemStacks = recipeLayout.getItemStacks(); - - guiItemStacks.init(0, true, 4, 0); - guiItemStacks.init(1, false, 4, 50); - guiItemStacks.set(ingredients); + return null; + } + @Override + public void setIngredients(Wrapper recipe, IIngredients ingredients) + { + ingredients.setInput(VanillaTypes.ITEM, recipe.input); + ingredients.setOutput(VanillaTypes.ITEM, recipe.output); + } + + @Override + public void setRecipe(IRecipeLayout recipeLayout, Wrapper recipe, IIngredients ingredients) + { + IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); + itemStacks.init(0, true, 4, 0); + itemStacks.init(1, false, 4, 50); + itemStacks.set(ingredients); } } - public static class Wrapper implements IRecipeWrapper + public static class Wrapper { private ItemStack input; private ItemStack output; @@ -79,26 +88,10 @@ public Wrapper(ItemStack _input, ItemStack _output) output = _output; } - @Override public void getIngredients(IIngredients ing) { ing.setInput(VanillaTypes.ITEM, input); ing.setOutput(VanillaTypes.ITEM, output); } } - - public static class WrapperFactory implements IRecipeWrapperFactory - { - @Override - public IRecipeWrapper getRecipeWrapper(IRecipePattern pattern) - { - return new Wrapper(pattern.input(), pattern.output()); - } - } - - public static interface IRecipePattern - { - public ItemStack input(); - public ItemStack output(); - } } diff --git a/java/javapower/storagetech/jei/DiskWorkbenchMemory.java b/java/javapower/storagetech/jei/DiskWorkbenchMemory.java index 5f1d8ca..024ebdb 100644 --- a/java/javapower/storagetech/jei/DiskWorkbenchMemory.java +++ b/java/javapower/storagetech/jei/DiskWorkbenchMemory.java @@ -1,52 +1,59 @@ package javapower.storagetech.jei; +import com.mojang.blaze3d.matrix.MatrixStack; + +import javapower.storagetech.core.ClientDiskOverlay; +import javapower.storagetech.core.ResourceLocationRegister; import javapower.storagetech.core.StorageTech; -import javapower.storagetech.proxy.ResourceLocationRegister; -import mezz.jei.api.IGuiHelper; -import mezz.jei.api.gui.IDrawable; -import mezz.jei.api.gui.IDrawableStatic; -import mezz.jei.api.gui.IGuiItemStackGroup; +import javapower.storagetech.util.Tools; +import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.gui.drawable.IDrawableStatic; +import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; +import mezz.jei.api.helpers.IGuiHelper; import mezz.jei.api.ingredients.IIngredients; -import mezz.jei.api.ingredients.VanillaTypes; -import mezz.jei.api.recipe.IRecipeCategory; -import mezz.jei.api.recipe.IRecipeWrapper; -import mezz.jei.api.recipe.IRecipeWrapperFactory; +import mezz.jei.api.recipe.category.IRecipeCategory; +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.Matrix4f; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; public class DiskWorkbenchMemory { public static class Category implements IRecipeCategory { - - public static final String UID = StorageTech.MODID + ".diskiwbm"; - private final String localizedName; - private final IDrawableStatic background; + public static final ResourceLocation UID = new ResourceLocation(StorageTech.MODID,"diskiwbm"); + private String localizedName, info_value; + private IDrawableStatic background; public Category(IGuiHelper guiHelper) { localizedName = I18n.format(StorageTech.MODID+".jei.category.diskiwbm"); - background = guiHelper.createDrawable(ResourceLocationRegister.textrue_gui_jei_recipe, 26, 0, 18, 67); + info_value = I18n.format(StorageTech.MODID+".jei.info.diskwbm.value"); + + background = guiHelper.createDrawable(ResourceLocationRegister.textrue_gui_jei_recipe, 28, 0, 56, 81); } @Override - public String getUid() + public ResourceLocation getUid() { return UID; } @Override - public String getTitle() + public Class getRecipeClass() { - return localizedName; + return Wrapper.class; } @Override - public String getModName() + public String getTitle() { - return "Storage Tech"; + return localizedName; } @Override @@ -56,44 +63,63 @@ public IDrawable getBackground() } @Override - public void setRecipe(IRecipeLayout recipeLayout, Wrapper recipeWrapper, IIngredients ingredients) + public IDrawable getIcon() { - IGuiItemStackGroup guiItemStacks = recipeLayout.getItemStacks(); - - guiItemStacks.init(0, true, 0, 0); - guiItemStacks.set(ingredients); + return null; + } + @Override + public void setIngredients(Wrapper recipe, IIngredients ingredients) + { + ingredients.setInput(VanillaTypes.ITEM, recipe.input); + } + + @Override + public void setRecipe(IRecipeLayout recipeLayout, Wrapper recipe, IIngredients ingredients) + { + IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); + itemStacks.init(0, true, 19, 0); + itemStacks.set(ingredients); + } + + @Override + public void draw(Wrapper recipe, double mouseX, double mouseY) + { + IRenderTypeBuffer.Impl renderType = IRenderTypeBuffer.getImpl(Tessellator.getInstance().getBuffer()); + MatrixStack textStack = new MatrixStack(); + textStack.translate(0.0D, 0.0D, 300D); + Matrix4f textLocation = textStack.getLast().getMatrix(); + String text = recipe.getString(info_value); + int text_x = -(ClientDiskOverlay.minecraft.fontRenderer.getStringWidth(text))/2 + background.getWidth()/2; + + ClientDiskOverlay.minecraft.fontRenderer.renderString(text, /*X*/ text_x, /*Y*/ 70, 0xffffff, false, textLocation, renderType, false, 0, 15728880); + renderType.finish(); } } - public static class Wrapper implements IRecipeWrapper + public static class Wrapper { private ItemStack input; + private long value; - public Wrapper(ItemStack _input) + public Wrapper(ItemStack _input, long _value) { input = _input; + value = _value; } - @Override public void getIngredients(IIngredients ing) { ing.setInput(VanillaTypes.ITEM, input); } - } - - public static class WrapperFactory implements IRecipeWrapperFactory - { - @Override - public IRecipeWrapper getRecipeWrapper(IRecipePattern pattern) + + public String getString(String info_value) { - return new Wrapper(pattern.input()); + if(value == -1) + return info_value; + + return "+ "+Tools.longFormatToString(value); } } - - public static interface IRecipePattern - { - public ItemStack input(); - } } diff --git a/java/javapower/storagetech/jei/FluidDiskWorkbench.java b/java/javapower/storagetech/jei/FluidDiskWorkbench.java index 2226960..bdb3294 100644 --- a/java/javapower/storagetech/jei/FluidDiskWorkbench.java +++ b/java/javapower/storagetech/jei/FluidDiskWorkbench.java @@ -1,29 +1,27 @@ package javapower.storagetech.jei; +import javapower.storagetech.core.ResourceLocationRegister; import javapower.storagetech.core.StorageTech; -import javapower.storagetech.proxy.ResourceLocationRegister; -import mezz.jei.api.IGuiHelper; -import mezz.jei.api.gui.IDrawable; -import mezz.jei.api.gui.IDrawableStatic; -import mezz.jei.api.gui.IGuiItemStackGroup; +import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.gui.drawable.IDrawableStatic; +import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; +import mezz.jei.api.helpers.IGuiHelper; import mezz.jei.api.ingredients.IIngredients; -import mezz.jei.api.ingredients.VanillaTypes; -import mezz.jei.api.recipe.IRecipeCategory; -import mezz.jei.api.recipe.IRecipeWrapper; -import mezz.jei.api.recipe.IRecipeWrapperFactory; +import mezz.jei.api.recipe.category.IRecipeCategory; import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; public class FluidDiskWorkbench { public static class Category implements IRecipeCategory { - - public static final String UID = StorageTech.MODID + ".diskfwb"; - private final String localizedName; - private final IDrawableStatic background; + public static final ResourceLocation UID = new ResourceLocation(StorageTech.MODID,"diskfwb"); + private String localizedName; + private IDrawableStatic background; public Category(IGuiHelper guiHelper) { @@ -32,21 +30,21 @@ public Category(IGuiHelper guiHelper) } @Override - public String getUid() + public ResourceLocation getUid() { return UID; } @Override - public String getTitle() + public Class getRecipeClass() { - return localizedName; + return Wrapper.class; } @Override - public String getModName() + public String getTitle() { - return "Storage Tech"; + return localizedName; } @Override @@ -56,19 +54,30 @@ public IDrawable getBackground() } @Override - public void setRecipe(IRecipeLayout recipeLayout, Wrapper recipeWrapper, IIngredients ingredients) + public IDrawable getIcon() { - IGuiItemStackGroup guiItemStacks = recipeLayout.getItemStacks(); - - guiItemStacks.init(0, true, 5, 1); - guiItemStacks.init(1, false, 5, 51); - guiItemStacks.set(ingredients); + return null; + } + @Override + public void setIngredients(Wrapper recipe, IIngredients ingredients) + { + ingredients.setInput(VanillaTypes.ITEM, recipe.input); + ingredients.setOutput(VanillaTypes.ITEM, recipe.output); + } + + @Override + public void setRecipe(IRecipeLayout recipeLayout, Wrapper recipe, IIngredients ingredients) + { + IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); + itemStacks.init(0, true, 5, 1); + itemStacks.init(1, false, 5, 51); + itemStacks.set(ingredients); } } - public static class Wrapper implements IRecipeWrapper + public static class Wrapper { private ItemStack input; private ItemStack output; @@ -79,26 +88,10 @@ public Wrapper(ItemStack _input, ItemStack _output) output = _output; } - @Override public void getIngredients(IIngredients ing) { ing.setInput(VanillaTypes.ITEM, input); ing.setOutput(VanillaTypes.ITEM, output); } } - - public static class WrapperFactory implements IRecipeWrapperFactory - { - @Override - public IRecipeWrapper getRecipeWrapper(IRecipePattern pattern) - { - return new Wrapper(pattern.input(), pattern.output()); - } - } - - public static interface IRecipePattern - { - public ItemStack input(); - public ItemStack output(); - } } diff --git a/java/javapower/storagetech/jei/FluidDiskWorkbenchMemory.java b/java/javapower/storagetech/jei/FluidDiskWorkbenchMemory.java index 04b23c2..93d1e9b 100644 --- a/java/javapower/storagetech/jei/FluidDiskWorkbenchMemory.java +++ b/java/javapower/storagetech/jei/FluidDiskWorkbenchMemory.java @@ -1,52 +1,59 @@ package javapower.storagetech.jei; +import com.mojang.blaze3d.matrix.MatrixStack; + +import javapower.storagetech.core.ClientDiskOverlay; +import javapower.storagetech.core.ResourceLocationRegister; import javapower.storagetech.core.StorageTech; -import javapower.storagetech.proxy.ResourceLocationRegister; -import mezz.jei.api.IGuiHelper; -import mezz.jei.api.gui.IDrawable; -import mezz.jei.api.gui.IDrawableStatic; -import mezz.jei.api.gui.IGuiItemStackGroup; +import javapower.storagetech.util.Tools; +import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.gui.drawable.IDrawableStatic; +import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; +import mezz.jei.api.helpers.IGuiHelper; import mezz.jei.api.ingredients.IIngredients; -import mezz.jei.api.ingredients.VanillaTypes; -import mezz.jei.api.recipe.IRecipeCategory; -import mezz.jei.api.recipe.IRecipeWrapper; -import mezz.jei.api.recipe.IRecipeWrapperFactory; +import mezz.jei.api.recipe.category.IRecipeCategory; +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.Matrix4f; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; public class FluidDiskWorkbenchMemory { public static class Category implements IRecipeCategory { - - public static final String UID = StorageTech.MODID + ".diskfwbm"; - private final String localizedName; - private final IDrawableStatic background; + public static final ResourceLocation UID = new ResourceLocation(StorageTech.MODID,"diskfwbm"); + private String localizedName, info_value; + private IDrawableStatic background; public Category(IGuiHelper guiHelper) { localizedName = I18n.format(StorageTech.MODID+".jei.category.diskfwbm"); - background = guiHelper.createDrawable(ResourceLocationRegister.textrue_gui_jei_recipe, 27, 67, 20, 69); + info_value = I18n.format(StorageTech.MODID+".jei.info.diskwbm.value"); + + background = guiHelper.createDrawable(ResourceLocationRegister.textrue_gui_jei_recipe, 28, 81, 56, 82); } @Override - public String getUid() + public ResourceLocation getUid() { return UID; } @Override - public String getTitle() + public Class getRecipeClass() { - return localizedName; + return Wrapper.class; } @Override - public String getModName() + public String getTitle() { - return "Storage Tech"; + return localizedName; } @Override @@ -56,44 +63,63 @@ public IDrawable getBackground() } @Override - public void setRecipe(IRecipeLayout recipeLayout, Wrapper recipeWrapper, IIngredients ingredients) + public IDrawable getIcon() { - IGuiItemStackGroup guiItemStacks = recipeLayout.getItemStacks(); - - guiItemStacks.init(0, true, 1, 1); - guiItemStacks.set(ingredients); + return null; + } + @Override + public void setIngredients(Wrapper recipe, IIngredients ingredients) + { + ingredients.setInput(VanillaTypes.ITEM, recipe.input); + } + + @Override + public void setRecipe(IRecipeLayout recipeLayout, Wrapper recipe, IIngredients ingredients) + { + IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); + itemStacks.init(0, true, 19, 1); + itemStacks.set(ingredients); + } + + @Override + public void draw(Wrapper recipe, double mouseX, double mouseY) + { + IRenderTypeBuffer.Impl renderType = IRenderTypeBuffer.getImpl(Tessellator.getInstance().getBuffer()); + MatrixStack textStack = new MatrixStack(); + textStack.translate(0.0D, 0.0D, 300D); + Matrix4f textLocation = textStack.getLast().getMatrix(); + String text = recipe.getString(info_value); + int text_x = -(ClientDiskOverlay.minecraft.fontRenderer.getStringWidth(text))/2 + background.getWidth()/2; + + ClientDiskOverlay.minecraft.fontRenderer.renderString(text, /*X*/ text_x, /*Y*/ 71, 0xffffff, false, textLocation, renderType, false, 0, 15728880); + renderType.finish(); } } - public static class Wrapper implements IRecipeWrapper + public static class Wrapper { private ItemStack input; + private long value; - public Wrapper(ItemStack _input) + public Wrapper(ItemStack _input, long _value) { input = _input; + value = _value; } - @Override public void getIngredients(IIngredients ing) { ing.setInput(VanillaTypes.ITEM, input); } - } - - public static class WrapperFactory implements IRecipeWrapperFactory - { - @Override - public IRecipeWrapper getRecipeWrapper(IRecipePattern pattern) + + public String getString(String info_value) { - return new Wrapper(pattern.input()); + if(value == -1) + return info_value; + + return "+ "+Tools.longFormatToString(value); } } - - public static interface IRecipePattern - { - public ItemStack input(); - } } diff --git a/java/javapower/storagetech/jei/StorageTechJEIPlugin.java b/java/javapower/storagetech/jei/StorageTechJEIPlugin.java index cea72ce..0fc72f9 100644 --- a/java/javapower/storagetech/jei/StorageTechJEIPlugin.java +++ b/java/javapower/storagetech/jei/StorageTechJEIPlugin.java @@ -3,124 +3,121 @@ import java.util.ArrayList; import java.util.List; -import com.raoulvdberge.refinedstorage.RSItems; +import com.refinedmods.refinedstorage.RSItems; import javapower.storagetech.block.STBlocks; +import javapower.storagetech.core.StorageTech; import javapower.storagetech.item.STItems; +import javapower.storagetech.screen.ScreenContainerDiskWorkbench; +import javapower.storagetech.screen.ScreenContainerFluidDiskWorkbench; +import javapower.storagetech.util.DiskUtils; +import javapower.storagetech.util.PartValue; import mezz.jei.api.IModPlugin; -import mezz.jei.api.IModRegistry; -import mezz.jei.api.JEIPlugin; -import mezz.jei.api.recipe.IRecipeCategoryRegistration; -import net.minecraft.item.Item; +import mezz.jei.api.JeiPlugin; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.registration.IGuiHandlerRegistration; +import mezz.jei.api.registration.IRecipeCatalystRegistration; +import mezz.jei.api.registration.IRecipeCategoryRegistration; +import mezz.jei.api.registration.IRecipeRegistration; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; -@JEIPlugin +@JeiPlugin public class StorageTechJEIPlugin implements IModPlugin { + @Override - public void register(IModRegistry registry) + public ResourceLocation getPluginUid() { - //DiskWorkbench - - List diskiwb_recipes = new ArrayList(); - diskiwb_recipes.add(new DiskWorkbench.IRecipePattern() - { - @Override public ItemStack output() {return new ItemStack(STItems.item_diskcustom);} - @Override public ItemStack input() {return new ItemStack(RSItems.STORAGE_HOUSING);} - }); - - registry.handleRecipes(DiskWorkbench.IRecipePattern.class, new DiskWorkbench.WrapperFactory(), DiskWorkbench.Category.UID); - registry.addRecipes(diskiwb_recipes, DiskWorkbench.Category.UID); - registry.addRecipeCatalyst(new ItemStack(STBlocks.block_diskWorkbench), DiskWorkbench.Category.UID); - - //FluidDiskWorkbench - - List diskfwb_recipes = new ArrayList(); - diskfwb_recipes.add(new FluidDiskWorkbench.IRecipePattern() - { - @Override public ItemStack output() {return new ItemStack(STItems.item_fluiddiskcustom);} - @Override public ItemStack input() {return new ItemStack(RSItems.STORAGE_HOUSING);} - }); - - registry.handleRecipes(FluidDiskWorkbench.IRecipePattern.class, new FluidDiskWorkbench.WrapperFactory(), FluidDiskWorkbench.Category.UID); - registry.addRecipes(diskfwb_recipes, FluidDiskWorkbench.Category.UID); - registry.addRecipeCatalyst(new ItemStack(STBlocks.block_fluiddiskWorkbench), FluidDiskWorkbench.Category.UID); - - //DiskWorkbench - - List diskiwbm_recipes = new ArrayList(); - - diskiwbm_recipes.add(new DiskWorkbenchMemory.IRecipePattern() - {@Override public ItemStack input() {return new ItemStack(RSItems.STORAGE_PART, 1, 0);}}); - diskiwbm_recipes.add(new DiskWorkbenchMemory.IRecipePattern() - {@Override public ItemStack input() {return new ItemStack(RSItems.STORAGE_PART, 1, 1);}}); - diskiwbm_recipes.add(new DiskWorkbenchMemory.IRecipePattern() - {@Override public ItemStack input() {return new ItemStack(RSItems.STORAGE_PART, 1, 2);}}); - diskiwbm_recipes.add(new DiskWorkbenchMemory.IRecipePattern() - {@Override public ItemStack input() {return new ItemStack(RSItems.STORAGE_PART, 1, 3);}}); - - Item i = Item.getByNameOrId("rebornstorage:storagepart"); - if(i != null) - { - diskiwbm_recipes.add(new DiskWorkbenchMemory.IRecipePattern() - {@Override public ItemStack input() {return new ItemStack(i, 1, 0);}}); - diskiwbm_recipes.add(new DiskWorkbenchMemory.IRecipePattern() - {@Override public ItemStack input() {return new ItemStack(i, 1, 1);}}); - diskiwbm_recipes.add(new DiskWorkbenchMemory.IRecipePattern() - {@Override public ItemStack input() {return new ItemStack(i, 1, 2);}}); - diskiwbm_recipes.add(new DiskWorkbenchMemory.IRecipePattern() - {@Override public ItemStack input() {return new ItemStack(i, 1, 3);}}); - } - - diskiwbm_recipes.add(new DiskWorkbenchMemory.IRecipePattern() - {@Override public ItemStack input() {return new ItemStack(STItems.item_memory, 1, 0);}}); - - registry.handleRecipes(DiskWorkbenchMemory.IRecipePattern.class, new DiskWorkbenchMemory.WrapperFactory(), DiskWorkbenchMemory.Category.UID); - registry.addRecipes(diskiwbm_recipes, DiskWorkbenchMemory.Category.UID); - registry.addRecipeCatalyst(new ItemStack(STBlocks.block_diskWorkbench), DiskWorkbenchMemory.Category.UID); - - //FluidDiskWorkbench - - List diskfwbm_recipes = new ArrayList(); - - diskfwbm_recipes.add(new FluidDiskWorkbenchMemory.IRecipePattern() - {@Override public ItemStack input() {return new ItemStack(RSItems.FLUID_STORAGE_PART, 1, 0);}}); - diskfwbm_recipes.add(new FluidDiskWorkbenchMemory.IRecipePattern() - {@Override public ItemStack input() {return new ItemStack(RSItems.FLUID_STORAGE_PART, 1, 1);}}); - diskfwbm_recipes.add(new FluidDiskWorkbenchMemory.IRecipePattern() - {@Override public ItemStack input() {return new ItemStack(RSItems.FLUID_STORAGE_PART, 1, 2);}}); - diskfwbm_recipes.add(new FluidDiskWorkbenchMemory.IRecipePattern() - {@Override public ItemStack input() {return new ItemStack(RSItems.FLUID_STORAGE_PART, 1, 3);}}); - - if(i != null) - { - diskfwbm_recipes.add(new FluidDiskWorkbenchMemory.IRecipePattern() - {@Override public ItemStack input() {return new ItemStack(i, 1, 4);}}); - diskfwbm_recipes.add(new FluidDiskWorkbenchMemory.IRecipePattern() - {@Override public ItemStack input() {return new ItemStack(i, 1, 5);}}); - diskfwbm_recipes.add(new FluidDiskWorkbenchMemory.IRecipePattern() - {@Override public ItemStack input() {return new ItemStack(i, 1, 6);}}); - diskfwbm_recipes.add(new FluidDiskWorkbenchMemory.IRecipePattern() - {@Override public ItemStack input() {return new ItemStack(i, 1, 7);}}); - } - - diskfwbm_recipes.add(new FluidDiskWorkbenchMemory.IRecipePattern() - {@Override public ItemStack input() {return new ItemStack(STItems.item_memory, 1, 1);}}); - - registry.handleRecipes(FluidDiskWorkbenchMemory.IRecipePattern.class, new FluidDiskWorkbenchMemory.WrapperFactory(), FluidDiskWorkbenchMemory.Category.UID); - registry.addRecipes(diskfwbm_recipes, FluidDiskWorkbenchMemory.Category.UID); - registry.addRecipeCatalyst(new ItemStack(STBlocks.block_fluiddiskWorkbench), FluidDiskWorkbenchMemory.Category.UID); - - + return new ResourceLocation(StorageTech.MODID, "jei"); } @Override public void registerCategories(IRecipeCategoryRegistration registry) { - registry.addRecipeCategories(new DiskWorkbench.Category(registry.getJeiHelpers().getGuiHelper())); - registry.addRecipeCategories(new FluidDiskWorkbench.Category(registry.getJeiHelpers().getGuiHelper())); - registry.addRecipeCategories(new DiskWorkbenchMemory.Category(registry.getJeiHelpers().getGuiHelper())); - registry.addRecipeCategories(new FluidDiskWorkbenchMemory.Category(registry.getJeiHelpers().getGuiHelper())); + IGuiHelper guiHelper = registry.getJeiHelpers().getGuiHelper(); + + registry.addRecipeCategories(new DiskWorkbench.Category(guiHelper)); + registry.addRecipeCategories(new DiskWorkbenchMemory.Category(guiHelper)); + registry.addRecipeCategories(new FluidDiskWorkbench.Category(guiHelper)); + registry.addRecipeCategories(new FluidDiskWorkbenchMemory.Category(guiHelper)); } + + @Override + public void registerGuiHandlers(IGuiHandlerRegistration registry) + { + registry.addRecipeClickArea(ScreenContainerDiskWorkbench.class, 8, 36, 15, 46, DiskWorkbenchMemory.Category.UID); + registry.addRecipeClickArea(ScreenContainerDiskWorkbench.class, 148, 36, 15, 22, DiskWorkbench.Category.UID); + registry.addRecipeClickArea(ScreenContainerFluidDiskWorkbench.class, 8, 36, 15, 46, FluidDiskWorkbenchMemory.Category.UID); + registry.addRecipeClickArea(ScreenContainerFluidDiskWorkbench.class, 148, 36, 15, 22, FluidDiskWorkbench.Category.UID); + + } + + /*@Override + public void registerRecipeTransferHandlers(IRecipeTransferRegistration registration) + { + registration.addRecipeTransferHandler(ContainerDiskWorkbench.class,DiskWorkbench.Category.UID,0,1,37,1); + registration.addRecipeTransferHandler(ContainerDiskWorkbench.class,DiskWorkbenchMemory.Category.UID,0,1,36,1); + + registration.addRecipeTransferHandler(ContainerFluidDiskWorkbench.class,FluidDiskWorkbench.Category.UID,0,1,37,1); + registration.addRecipeTransferHandler(ContainerFluidDiskWorkbench.class,FluidDiskWorkbenchMemory.Category.UID,0,1,36,1); + + }*/ + @Override + public void registerRecipes(IRecipeRegistration registry) + { + + List recipes_diskWorkbench = new ArrayList(); + + recipes_diskWorkbench.add(new DiskWorkbench.Wrapper(new ItemStack(RSItems.STORAGE_HOUSING), new ItemStack(STItems.item_diskcustom))); + + registry.addRecipes(recipes_diskWorkbench, DiskWorkbench.Category.UID); + + // ---------------- + + List recipes_diskWorkbenchMemory = new ArrayList(); + + for(PartValue item : DiskUtils.getItemParts()) + recipes_diskWorkbenchMemory.add(new DiskWorkbenchMemory.Wrapper(new ItemStack(item.getItem()), item.getValue())); + + recipes_diskWorkbenchMemory.add(new DiskWorkbenchMemory.Wrapper(new ItemStack(STItems.item_memory), -1)); + + registry.addRecipes(recipes_diskWorkbenchMemory, DiskWorkbenchMemory.Category.UID); + + // ---------------- + + List recipes_fluidDiskWorkbench = new ArrayList(); + + recipes_fluidDiskWorkbench.add(new FluidDiskWorkbench.Wrapper(new ItemStack(RSItems.STORAGE_HOUSING), new ItemStack(STItems.item_fluiddiskcustom))); + + registry.addRecipes(recipes_fluidDiskWorkbench, FluidDiskWorkbench.Category.UID); + + // ---------------- + + List recipes_fluidDiskWorkbenchMemory = new ArrayList(); + + for(PartValue item : DiskUtils.getFluidParts()) + recipes_fluidDiskWorkbenchMemory.add(new FluidDiskWorkbenchMemory.Wrapper(new ItemStack(item.getItem()), item.getValue())); + + recipes_fluidDiskWorkbenchMemory.add(new FluidDiskWorkbenchMemory.Wrapper(new ItemStack(STItems.item_memory_fluid), -1)); + + registry.addRecipes(recipes_fluidDiskWorkbenchMemory, FluidDiskWorkbenchMemory.Category.UID); + + // ---------------- + + + } + + @Override + public void registerRecipeCatalysts(IRecipeCatalystRegistration registry) + { + registry.addRecipeCatalyst(new ItemStack(STBlocks.blockDiskWorkbench), DiskWorkbench.Category.UID); + registry.addRecipeCatalyst(new ItemStack(STBlocks.blockDiskWorkbench), DiskWorkbenchMemory.Category.UID); + + registry.addRecipeCatalyst(new ItemStack(STBlocks.blockFluidDiskWorkbench), FluidDiskWorkbench.Category.UID); + registry.addRecipeCatalyst(new ItemStack(STBlocks.blockFluidDiskWorkbench), FluidDiskWorkbenchMemory.Category.UID); + + } + } diff --git a/java/javapower/storagetech/message/ClientBuffer.java b/java/javapower/storagetech/message/ClientBuffer.java deleted file mode 100644 index bcef625..0000000 --- a/java/javapower/storagetech/message/ClientBuffer.java +++ /dev/null @@ -1,11 +0,0 @@ -package javapower.storagetech.message; - -import net.minecraft.client.gui.GuiScreen; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -@SideOnly(Side.CLIENT) -public class ClientBuffer -{ - public static GuiScreen currentGuiBuilder; -} diff --git a/java/javapower/storagetech/message/ClientHandlerTileSync.java b/java/javapower/storagetech/message/ClientHandlerTileSync.java deleted file mode 100644 index 41bb346..0000000 --- a/java/javapower/storagetech/message/ClientHandlerTileSync.java +++ /dev/null @@ -1,46 +0,0 @@ -package javapower.storagetech.message; - -import org.lwjgl.input.Mouse; - -import javapower.storagetech.proxy.ClientProxy; -import javapower.storagetech.util.IGUITileSync; -import javapower.storagetech.util.NetworkUtils; -import net.minecraftforge.fml.common.FMLCommonHandler; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; -import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -public class ClientHandlerTileSync implements IMessageHandler -{ - @Override - @SideOnly(Side.CLIENT) - public IMessage onMessage(NetworkTileSync message, MessageContext ctx) - { - int lock_key = message.nbt_inf.getInteger("lk"); - - if(lock_key == 4) - { - if(ClientBuffer.currentGuiBuilder != null && ClientBuffer.currentGuiBuilder instanceof IGUITileSync) - { - ClientBuffer.currentGuiBuilder.mc = ClientProxy.minecraft; - ((IGUITileSync)ClientBuffer.currentGuiBuilder).reciveDataFromServer(message.nbt); - - FMLCommonHandler.instance().showGuiScreen(ClientBuffer.currentGuiBuilder); - //ClientProxy.minecraft.currentScreen = ClientBuffer.currentGuiBuilder; - ClientBuffer.currentGuiBuilder = null; - } - } - else if(ClientProxy.minecraft.currentScreen instanceof IGUITileSync) - { - ((IGUITileSync)ClientProxy.minecraft.currentScreen).reciveDataFromServer(message.nbt); - } - else if(ClientBuffer.currentGuiBuilder == null) - { - NetworkUtils.sendToServerPlayerStopOpenGUI(message.env); - } - return null; - } - -} \ No newline at end of file diff --git a/java/javapower/storagetech/message/NetworkTileSync.java b/java/javapower/storagetech/message/NetworkTileSync.java deleted file mode 100644 index a5ad0bd..0000000 --- a/java/javapower/storagetech/message/NetworkTileSync.java +++ /dev/null @@ -1,51 +0,0 @@ -package javapower.storagetech.message; - -import io.netty.buffer.ByteBuf; -import javapower.storagetech.util.BlockPosDim; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraftforge.fml.common.network.ByteBufUtils; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; - -public class NetworkTileSync implements IMessage -{ - public BlockPosDim env; - public NBTTagCompound nbt; - public NBTTagCompound nbt_inf; - - public NetworkTileSync() - { - - } - - public NetworkTileSync(BlockPosDim _env, NBTTagCompound _nbt, NBTTagCompound _nbt_inf) - { - env = _env; - nbt = _nbt; - nbt_inf = _nbt_inf; - } - - @Override - public void fromBytes(ByteBuf buf) - { - NBTTagCompound in = ByteBufUtils.readTag(buf); - if(in == null) - return; - - env = new BlockPosDim(in, "e"); - nbt = in.getCompoundTag("d"); - nbt_inf = in.getCompoundTag("i"); - } - - @Override - public void toBytes(ByteBuf buf) - { - NBTTagCompound out = new NBTTagCompound(); - if(env != null) - env.WriteToNBT(out, "e"); - out.setTag("d", nbt); - out.setTag("i", nbt_inf); - - ByteBufUtils.writeTag(buf, out); - } - -} diff --git a/java/javapower/storagetech/message/ServerHandlerTileSync.java b/java/javapower/storagetech/message/ServerHandlerTileSync.java deleted file mode 100644 index 21327d7..0000000 --- a/java/javapower/storagetech/message/ServerHandlerTileSync.java +++ /dev/null @@ -1,66 +0,0 @@ -package javapower.storagetech.message; - -import javapower.storagetech.util.BlockPosDim; -import javapower.storagetech.util.ITileUpdate; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; -import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; - -public class ServerHandlerTileSync implements IMessageHandler -{ - @Override - public IMessage onMessage(NetworkTileSync message, MessageContext ctx) - { - int lock_key = message.nbt_inf.getInteger("lk"); - if(lock_key == 1) - { - String te_name = message.nbt_inf.getString("te"); - TileEntity the_te = message.env.GetTileEntity(); - if(the_te.getClass().getName().equalsIgnoreCase(te_name) && the_te instanceof ITileUpdate) - { - ((ITileUpdate)the_te).addOrRemovePlayer(ctx.getServerHandler().player, true); - - NBTTagCompound nbt = new NBTTagCompound(); - - ((ITileUpdate)the_te).onPlayerOpenGUISendData(nbt, ctx.getServerHandler().player); - - return new NetworkTileSync(new BlockPosDim(the_te.getPos(), the_te.getWorld().provider.getDimension()), nbt, new NBTTagCompound()); - } - } - else if(lock_key == 2) - { - String te_name = message.nbt_inf.getString("te"); - TileEntity the_te = message.env.GetTileEntity(); - if(the_te.getClass().getName().equalsIgnoreCase(te_name) && the_te instanceof ITileUpdate) - { - ((ITileUpdate)the_te).reciveDataFromClient(message.nbt, ctx.getServerHandler().player); - } - } - else if(lock_key == 3) - { - TileEntity the_te = message.env.GetTileEntity(); - if(the_te instanceof ITileUpdate) - { - ((ITileUpdate)the_te).addOrRemovePlayer(ctx.getServerHandler().player, false); - } - } - else if(lock_key == 4) - { - TileEntity the_te = message.env.GetTileEntity(); - if(the_te instanceof ITileUpdate) - { - NBTTagCompound nbt = new NBTTagCompound(); - NBTTagCompound nbt_key = new NBTTagCompound(); - - ((ITileUpdate)the_te).onPlayerOpenGUISendData(nbt, ctx.getServerHandler().player); - nbt_key.setInteger("lk", 4); - return new NetworkTileSync(new BlockPosDim(the_te.getPos(), the_te.getWorld().provider.getDimension()), nbt, nbt_key); - } - } - - return null; - } - -} \ No newline at end of file diff --git a/java/javapower/storagetech/node/CustomItemStorageWrapperStorageDisk.java b/java/javapower/storagetech/node/CustomItemStorageWrapperStorageDisk.java new file mode 100644 index 0000000..b230444 --- /dev/null +++ b/java/javapower/storagetech/node/CustomItemStorageWrapperStorageDisk.java @@ -0,0 +1,104 @@ +package javapower.storagetech.node; + +import java.util.Collection; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +import com.refinedmods.refinedstorage.api.storage.AccessType; +import com.refinedmods.refinedstorage.api.storage.disk.IStorageDisk; +import com.refinedmods.refinedstorage.api.storage.disk.IStorageDiskContainerContext; +import com.refinedmods.refinedstorage.api.storage.disk.IStorageDiskListener; +import com.refinedmods.refinedstorage.api.util.Action; +import com.refinedmods.refinedstorage.tile.config.IWhitelistBlacklist; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.items.ItemHandlerHelper; + +public class CustomItemStorageWrapperStorageDisk implements IStorageDisk +{ + private CustomStorageNetworkNode storage; + private IStorageDisk parent; + + public CustomItemStorageWrapperStorageDisk(CustomStorageNetworkNode storage, IStorageDisk parent) + { + this.storage = storage; + this.parent = parent; + this.setSettings(null, storage); + } + + @Override + public int getPriority() + { + return storage.getPriority(); + } + + @Override + public AccessType getAccessType() + { + return parent.getAccessType(); + } + + @Override + public Collection getStacks() + { + return parent.getStacks(); + } + + @Override + @Nonnull + public ItemStack insert(@Nonnull ItemStack stack, int size, Action action) + { + if (!IWhitelistBlacklist.acceptsItem(storage.getFilters(), storage.getWhitelistBlacklistMode(), storage.getCompare(), stack)) + { + return ItemHandlerHelper.copyStackWithSize(stack, size); + } + + return parent.insert(stack, size, action); + } + + @Override + @Nonnull + public ItemStack extract(@Nonnull ItemStack stack, int size, int flags, Action action) + { + return parent.extract(stack, size, flags, action); + } + + @Override + public int getStored() + { + return parent.getStored(); + } + + @Override + public int getCacheDelta(int storedPreInsertion, int size, @Nullable ItemStack remainder) + { + return parent.getCacheDelta(storedPreInsertion, size, remainder); + } + + @Override + public int getCapacity() + { + return parent.getCapacity(); + } + + @Override + public void setSettings(@Nullable IStorageDiskListener listener, IStorageDiskContainerContext context) + { + parent.setSettings(listener, context); + } + + @Override + public CompoundNBT writeToNbt() + { + return parent.writeToNbt(); + } + + @Override + public ResourceLocation getFactoryId() + { + return parent.getFactoryId(); + } +} diff --git a/java/javapower/storagetech/node/CustomStorageNetworkNode.java b/java/javapower/storagetech/node/CustomStorageNetworkNode.java new file mode 100644 index 0000000..93359fb --- /dev/null +++ b/java/javapower/storagetech/node/CustomStorageNetworkNode.java @@ -0,0 +1,334 @@ +package javapower.storagetech.node; + +import java.util.List; +import java.util.UUID; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import com.refinedmods.refinedstorage.RS; +import com.refinedmods.refinedstorage.api.network.INetwork; +import com.refinedmods.refinedstorage.api.network.node.INetworkNode; +import com.refinedmods.refinedstorage.api.storage.AccessType; +import com.refinedmods.refinedstorage.api.storage.IStorage; +import com.refinedmods.refinedstorage.api.storage.IStorageProvider; +import com.refinedmods.refinedstorage.api.storage.cache.InvalidateCause; +import com.refinedmods.refinedstorage.api.storage.disk.IStorageDisk; +import com.refinedmods.refinedstorage.api.storage.disk.IStorageDiskContainerContext; +import com.refinedmods.refinedstorage.api.util.IComparer; +import com.refinedmods.refinedstorage.apiimpl.API; +import com.refinedmods.refinedstorage.apiimpl.network.node.ConnectivityStateChangeCause; +import com.refinedmods.refinedstorage.apiimpl.network.node.IStorageScreen; +import com.refinedmods.refinedstorage.apiimpl.network.node.NetworkNode; +import com.refinedmods.refinedstorage.apiimpl.storage.cache.ItemStorageCache; +import com.refinedmods.refinedstorage.inventory.item.BaseItemHandler; +import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeInventoryListener; +import com.refinedmods.refinedstorage.tile.StorageTile; +import com.refinedmods.refinedstorage.tile.config.IAccessType; +import com.refinedmods.refinedstorage.tile.config.IComparable; +import com.refinedmods.refinedstorage.tile.config.IPrioritizable; +import com.refinedmods.refinedstorage.tile.config.IWhitelistBlacklist; +import com.refinedmods.refinedstorage.tile.data.TileDataParameter; +import com.refinedmods.refinedstorage.util.AccessTypeUtils; +import com.refinedmods.refinedstorage.util.StackUtils; + +import javapower.storagetech.block.BlockCustomStorage; +import javapower.storagetech.core.StorageTech; +import javapower.storagetech.tileentity.CustomStorageTile; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +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.minecraft.world.server.ServerWorld; +import net.minecraftforge.fluids.FluidStack; + +public class CustomStorageNetworkNode extends NetworkNode implements IStorageScreen, IStorageProvider, IComparable, IWhitelistBlacklist, IPrioritizable, IAccessType, IStorageDiskContainerContext { + + private static final Logger LOGGER = LogManager.getLogger(CustomStorageNetworkNode.class); + + private static final String NBT_PRIORITY = "Priority"; + private static final String NBT_COMPARE = "Compare"; + private static final String NBT_MODE = "Mode"; + public static final String NBT_ID = "Id"; + + private BaseItemHandler filters = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this)); + + public static final ResourceLocation NETWORK_NODE_ID = new ResourceLocation(StorageTech.MODID, BlockCustomStorage.raw_name); + + private AccessType accessType = AccessType.INSERT_EXTRACT; + private int priority = 0; + private int compare = IComparer.COMPARE_NBT; + private int mode = IWhitelistBlacklist.BLACKLIST; + + private UUID storageId = UUID.randomUUID(); + private IStorageDisk storage; + + private CustomStorageTile ten; + + public CustomStorageNetworkNode(World world, BlockPos pos, CustomStorageTile _ten) + { + super(world, pos); + ten = _ten; + } + + @Override + public int getEnergyUsage() + { + return RS.SERVER_CONFIG.getStorageBlock().getSixtyFourKUsage(); + } + + @Override + public void onConnectedStateChange(INetwork network, boolean state, ConnectivityStateChangeCause cause) + { + super.onConnectedStateChange(network, state, cause); + + LOGGER.debug("Connectivity state of item storage block at {} changed to {} due to {}", pos, state, cause); + + network.getNodeGraph().runActionWhenPossible(ItemStorageCache.INVALIDATE.apply(InvalidateCause.CONNECTED_STATE_CHANGED)); + } + + @Override + public void addItemStorages(List> storages) + { + if (storage == null) + loadStorage(); + + storages.add(storage); + } + + @Override + public void addFluidStorages(List> storages) + { + // NO OP + } + + @Override + public ResourceLocation getId() + { + return NETWORK_NODE_ID; + } + + @Override + public CompoundNBT write(CompoundNBT tag) + { + super.write(tag); + + tag.putUniqueId(NBT_ID, storageId); + + return tag; + } + + @Override + public void read(CompoundNBT tag) + { + super.read(tag); + + if (tag.hasUniqueId(NBT_ID)) + { + storageId = tag.getUniqueId(NBT_ID); + + loadStorage(); + } + } + + public void loadStorage() + { + IStorageDisk disk = API.instance().getStorageDiskManager((ServerWorld) world).get(storageId); + + if (disk == null) + { + INetworkNode node = API.instance().getNetworkNodeManager((ServerWorld)world).getNode(pos); + if(node instanceof CustomStorageNetworkNode) + { + API.instance().getStorageDiskManager((ServerWorld) world).set(storageId, disk = API.instance().createDefaultItemDisk((ServerWorld) world, ((CustomStorageNetworkNode)node).getStorageCapacity())); + API.instance().getStorageDiskManager((ServerWorld) world).markForSaving(); + } + } + + this.storage = new CustomItemStorageWrapperStorageDisk(this, disk); + } + + private int getStorageCapacity() + { + return ten.storageCapacity; + } + + public void setStorageId(UUID id) + { + this.storageId = id; + + markDirty(); + } + + public UUID getStorageId() + { + return storageId; + } + + public IStorageDisk getStorage() + { + return storage; + } + + @Override + public CompoundNBT writeConfiguration(CompoundNBT tag) + { + super.writeConfiguration(tag); + + StackUtils.writeItems(filters, 0, tag); + + tag.putInt(NBT_PRIORITY, priority); + tag.putInt(NBT_COMPARE, compare); + tag.putInt(NBT_MODE, mode); + + AccessTypeUtils.writeAccessType(tag, accessType); + + return tag; + } + + @Override + public void readConfiguration(CompoundNBT tag) + { + super.readConfiguration(tag); + + StackUtils.readItems(filters, 0, tag); + + if (tag.contains(NBT_PRIORITY)) + priority = tag.getInt(NBT_PRIORITY); + + if (tag.contains(NBT_COMPARE)) + compare = tag.getInt(NBT_COMPARE); + + if (tag.contains(NBT_MODE)) + mode = tag.getInt(NBT_MODE); + + accessType = AccessTypeUtils.readAccessType(tag); + } + + @Override + public int getCompare() + { + return compare; + } + + @Override + public void setCompare(int compare) + { + this.compare = compare; + + markDirty(); + } + + @Override + public int getWhitelistBlacklistMode() + { + return mode; + } + + @Override + public void setWhitelistBlacklistMode(int mode) + { + this.mode = mode; + + markDirty(); + } + + public BaseItemHandler getFilters() + { + return filters; + } + + @Override + public ITextComponent getTitle() + { + return new TranslationTextComponent("block.storagetech.customstorageblock"); + } + + @Override + public TileDataParameter getTypeParameter() + { + return null; + } + + @Override + public TileDataParameter getRedstoneModeParameter() + { + return StorageTile.REDSTONE_MODE; + } + + @Override + public TileDataParameter getCompareParameter() + { + return StorageTile.COMPARE; + } + + @Override + public TileDataParameter getWhitelistBlacklistParameter() + { + return StorageTile.WHITELIST_BLACKLIST; + } + + @Override + public TileDataParameter getPriorityParameter() + { + return StorageTile.PRIORITY; + } + + @Override + public TileDataParameter getAccessTypeParameter() + { + return StorageTile.ACCESS_TYPE; + } + + @Override + public long getStored() + { + return StorageTile.STORED.getValue(); + } + + @Override + public long getCapacity() + { + return getStorageCapacity(); + } + + @Override + public AccessType getAccessType() + { + return accessType; + } + + @Override + public void setAccessType(AccessType value) + { + this.accessType = value; + + if (network != null) + { + network.getItemStorageCache().invalidate(InvalidateCause.DEVICE_CONFIGURATION_CHANGED); + } + + markDirty(); + } + + @Override + public int getPriority() + { + return priority; + } + + @Override + public void setPriority(int priority) + { + this.priority = priority; + + markDirty(); + + if (network != null) { + network.getItemStorageCache().sort(); + } + } +} \ No newline at end of file diff --git a/java/javapower/storagetech/proxy/ClientProxy.java b/java/javapower/storagetech/proxy/ClientProxy.java deleted file mode 100644 index 2fbb9fc..0000000 --- a/java/javapower/storagetech/proxy/ClientProxy.java +++ /dev/null @@ -1,103 +0,0 @@ -package javapower.storagetech.proxy; - -import java.lang.reflect.Field; -import java.util.UUID; - -import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider; -import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSyncData; -import com.raoulvdberge.refinedstorage.apiimpl.API; - -import javapower.storagetech.block.STBlocks; -import javapower.storagetech.core.ConfigClient; -import javapower.storagetech.item.STItems; -import javapower.storagetech.util.RegisterUtils; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Gui; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.event.ModelRegistryEvent; -import net.minecraftforge.client.event.RenderTooltipEvent; -import net.minecraftforge.fml.client.config.GuiUtils; -import net.minecraftforge.fml.common.event.FMLInitializationEvent; -import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; -import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; - -public class ClientProxy extends CommonProxy -{ - public static Minecraft minecraft = Minecraft.getMinecraft(); - - @Override - public void preInit(FMLPreInitializationEvent e) - { - ConfigClient.init(e); - super.preInit(e); - - //Field[] fields1 = STBlocks.class.getFields(); - //RegisterUtils.RegisterTilesEntitySR(fields1); - } - - @Override - public void init(FMLInitializationEvent e) - { - ResourceLocationRegister.register(); - - super.init(e); - } - - @Override - public void postInit(FMLPostInitializationEvent e) - { - super.postInit(e); - } - - @SubscribeEvent - public void registerModels(ModelRegistryEvent e) - { - //Items - Field[] fields0 = STItems.class.getFields(); - RegisterUtils.RegisterIRender(fields0); - - //Blocks - Field[] fields1 = STBlocks.class.getFields(); - RegisterUtils.RegisterIRender(fields1); - //ClientRegistry.bindTileEntitySpecialRenderer(tileEntityClass, specialRenderer); - } - - @SubscribeEvent - public void drawTooltip(RenderTooltipEvent.PostBackground event) - { - if(ConfigClient.overlayEnable) - { - ItemStack itemstack = event.getStack(); - if(itemstack != null && itemstack.getItem() instanceof IStorageDiskProvider) - { - if(!((IStorageDiskProvider)itemstack.getItem()).isValid(itemstack)) - return; - UUID uuid = ((IStorageDiskProvider)itemstack.getItem()).getId(itemstack); - if(uuid == null) - return; - IStorageDiskSyncData data = API.instance().getStorageDiskSync().getData(uuid); - if(data != null) - { - if(data.getCapacity() != -1) - { - float size = data.getStored()/(float)data.getCapacity(); - int color = size >= 0.75f ? size >= 1 ? 0xffff0000 : 0xffffd800 : 0xff00eded; - minecraft.renderEngine.bindTexture(ResourceLocationRegister.overlay); - GuiUtils.drawTexturedModalRect(event.getX() - 4, event.getY() - 24, 0, 0, 93, 20, 0.1f); - Gui.drawRect(event.getX(), event.getY() - 18, event.getX() + 60, event.getY() - 10, 0xff444444); - if(size > 0) - Gui.drawRect(event.getX(), event.getY() - 18, event.getX() + (int)(60*size), event.getY() - 10, color); - minecraft.fontRenderer.drawString(((int) (size*100))+"%", event.getX() + 62, event.getY() - 17, color); - } - else - { - minecraft.renderEngine.bindTexture(ResourceLocationRegister.overlay); - GuiUtils.drawTexturedModalRect(event.getX() - 4, event.getY() - 24, 0, 0, 93, 20, 0.1f); - minecraft.fontRenderer.drawString("Infinite", event.getX() + 25, event.getY() - 17, 0xff00eded); - } - } - } - } - } -} diff --git a/java/javapower/storagetech/proxy/CommonProxy.java b/java/javapower/storagetech/proxy/CommonProxy.java deleted file mode 100644 index 17b4a0b..0000000 --- a/java/javapower/storagetech/proxy/CommonProxy.java +++ /dev/null @@ -1,83 +0,0 @@ -package javapower.storagetech.proxy; - -import java.lang.reflect.Field; - -import javapower.storagetech.block.STBlocks; -import javapower.storagetech.core.StorageTech; -import javapower.storagetech.gui.GuiHandler; -import javapower.storagetech.item.STItems; -import javapower.storagetech.message.ClientHandlerTileSync; -import javapower.storagetech.message.NetworkTileSync; -import javapower.storagetech.message.ServerHandlerTileSync; -import javapower.storagetech.util.RegisterUtils; -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraft.server.MinecraftServer; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.fml.common.FMLCommonHandler; -import net.minecraftforge.fml.common.event.FMLInitializationEvent; -import net.minecraftforge.fml.common.event.FMLLoadEvent; -import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; -import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import net.minecraftforge.fml.common.network.NetworkRegistry; -import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper; -import net.minecraftforge.fml.relauncher.Side; - -public class CommonProxy -{ - public static MinecraftServer minecraftServer = FMLCommonHandler.instance().getMinecraftServerInstance(); - - public static SimpleNetworkWrapper network_TileSynchroniser = NetworkRegistry.INSTANCE.newSimpleChannel(StorageTech.MODID+"1"); - - public void preInit(FMLPreInitializationEvent e) - { - MinecraftForge.EVENT_BUS.register(this); - //StorageTechBlocks.registerTileEntitys(); - - //TilesEntity - Field[] fields1 = STBlocks.class.getFields(); - RegisterUtils.RegisterTilesEntity(fields1); - - NetworkRegistry.INSTANCE.registerGuiHandler(StorageTech.INSTANCE, new GuiHandler()); - - network_TileSynchroniser.registerMessage(ServerHandlerTileSync.class, NetworkTileSync.class, 0, Side.SERVER); - network_TileSynchroniser.registerMessage(ClientHandlerTileSync.class, NetworkTileSync.class, 1, Side.CLIENT); - } - - public void init(FMLInitializationEvent e) - { - //Recipe.register(); - } - - public void postInit(FMLPostInitializationEvent e) - { - - } - - public void load(FMLLoadEvent e) - { - - } - - @SubscribeEvent - public void registerBlocks(RegistryEvent.Register event) - { - //Blocks - Field[] fields1 = STBlocks.class.getFields(); - RegisterUtils.RegisterBlocks(fields1, event.getRegistry()); - } - - @SubscribeEvent - public void registerItems(RegistryEvent.Register event) - { - //Items - Field[] fields0 = STItems.class.getFields(); - RegisterUtils.RegisterItems(fields0, event.getRegistry()); - - //Blocks - Field[] fields1 = STBlocks.class.getFields(); - RegisterUtils.RegisterItems(fields1, event.getRegistry()); - } -} diff --git a/java/javapower/storagetech/screen/CustomStorageBlockScreen.java b/java/javapower/storagetech/screen/CustomStorageBlockScreen.java new file mode 100644 index 0000000..b54f72c --- /dev/null +++ b/java/javapower/storagetech/screen/CustomStorageBlockScreen.java @@ -0,0 +1,29 @@ +package javapower.storagetech.screen; + +import com.refinedmods.refinedstorage.screen.StorageScreen; + +import javapower.storagetech.container.CustomStorageContainer; +import javapower.storagetech.tileentity.CustomStorageTile; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.util.text.ITextComponent; + +public class CustomStorageBlockScreen extends StorageScreen +{ + public CustomStorageBlockScreen(CustomStorageContainer container, PlayerInventory inventory, ITextComponent title) + { + super( + container, + inventory, + title, + "gui/storage.png", + null, + CustomStorageTile.REDSTONE_MODE, + CustomStorageTile.COMPARE, + CustomStorageTile.WHITELIST_BLACKLIST, + CustomStorageTile.PRIORITY, + CustomStorageTile.ACCESS_TYPE, + CustomStorageTile.STORED::getValue, + () -> (long) ((CustomStorageTile) container.getTile()).storageCapacity + ); + } +} \ No newline at end of file diff --git a/java/javapower/storagetech/screen/ScreenContainerDiskWorkbench.java b/java/javapower/storagetech/screen/ScreenContainerDiskWorkbench.java new file mode 100644 index 0000000..c48da51 --- /dev/null +++ b/java/javapower/storagetech/screen/ScreenContainerDiskWorkbench.java @@ -0,0 +1,354 @@ +package javapower.storagetech.screen; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Predicate; + +import com.mojang.blaze3d.systems.RenderSystem; + +import javapower.storagetech.container.ContainerDiskWorkbench; +import javapower.storagetech.core.ClientConfig; +import javapower.storagetech.core.ClientSetup; +import javapower.storagetech.core.CommonConfig; +import javapower.storagetech.core.PacketCreateDisk; +import javapower.storagetech.core.ResourceLocationRegister; +import javapower.storagetech.core.StorageTech; +import javapower.storagetech.util.Tools; +import net.minecraft.client.gui.screen.inventory.ContainerScreen; +import net.minecraft.client.gui.widget.TextFieldWidget; +import net.minecraft.client.gui.widget.button.Button; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.inventory.container.Slot; +import net.minecraft.util.text.ITextComponent; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.fml.client.gui.GuiUtils; + +@OnlyIn(Dist.CLIENT) +public class ScreenContainerDiskWorkbench extends ContainerScreen +{ + TextFieldWidget textField_size; + + int disk_size = 1000; + private String[] i18nBuffer; + int slot = -1; + int animaite = 0; + long energycost = 0; + //28 17 + Button button_create = new Button(28, 17, 40, 20, I18n.format("storagetech.gui.create"), (button) -> + { + //TODO send to server the starting + StorageTech.INSTANCE_CHANNEL.sendToServer(new PacketCreateDisk(container.tile.getPos(), disk_size)); + }); + + public ScreenContainerDiskWorkbench(ContainerDiskWorkbench _screenContainer, PlayerInventory inv, ITextComponent titleIn) + { + super(_screenContainer, inv, titleIn); + + ClientConfig.loadConfig(); + + i18nBuffer = new String[] + { + I18n.format("storagetech.gui.creation"), + I18n.format("storagetech.gui.availablespace"), + I18n.format("storagetech.gui.disksizein"), + I18n.format("storagetech.gui.info"), + I18n.format("storagetech.gui.insertstoragepart"), + I18n.format("storagetech.gui.insertstoragehousing"), + I18n.format("storagetech.gui.for"), + I18n.format("storagetech.gui.cost") + }; + + //addButton(button_create); + //addButton(textField_size); + + this.passEvents = false; + } + + @Override + public void init() + { + this.xSize = 176 + (CommonConfig.Value_EnableCostDisk ? 45 : 0); + this.ySize = 189; + + super.init(); + + textField_size = new TextFieldWidget(font, 28, 17, 70, 20,""+disk_size); + textField_size.setValidator(new Predicate() + { + + @Override + public boolean test(String text) + { + if(text.length() == 0) + { + disk_size = 1; + return true; + } + + boolean invalid = false; + try + { + double disk_size_d = Double.parseDouble(text); + if(disk_size_d > CommonConfig.Value_DiskMaxSize) + invalid = true; + else + disk_size = (int) disk_size_d; + } + catch (Exception e) + { + return false; + } + + if(invalid) + { + disk_size = CommonConfig.Value_DiskMaxSize; + textField_size.setText(""+disk_size); + return false; + } + + energycost = ((long)CommonConfig.Value_EnergyCostPerSize)*disk_size; + + //System.out.println(t); + return true; + } + }); + textField_size.setMaxStringLength(10); + textField_size.setText(""+disk_size); + //button_create.x = 40; + //addButton(button_create); + addButton(textField_size); + addButton(button_create); + } + + @Override + public void render(int mouseX, int mouseY, float partialTicks) + { + + this.renderBackground(); + super.render(mouseX, mouseY, partialTicks); + this.renderHoveredToolTip(mouseX, mouseY); + + if(ClientConfig.Value_showHelp) + { + if(slot == 0) + { + List list = new ArrayList(); + list.add("b(i) f"+i18nBuffer[3]); + list.add("7"+i18nBuffer[4]); + GuiUtils.drawHoveringText(list, mouseX, mouseY, minecraft.currentScreen.width, minecraft.currentScreen.height, 150, font); + } + else if(slot == 1) + { + List list = new ArrayList(); + list.add("b(i) f"+i18nBuffer[3]); + list.add("7"+i18nBuffer[5]); + GuiUtils.drawHoveringText(list, mouseX, mouseY, minecraft.currentScreen.width, minecraft.currentScreen.height, 150, font); + } + } + } + + @Override + protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) + { + button_create.x = 100 + guiLeft; + button_create.y = 65 + guiTop; + + textField_size.x = 28 + guiLeft; + textField_size.y = 65 + guiTop; + + RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); + minecraft.getTextureManager().bindTexture(ResourceLocationRegister.gui_diskwb); + + blit(guiLeft, guiTop, 0, 0, xSize - (CommonConfig.Value_EnableCostDisk ? 45 : 0), ySize); + blit(guiLeft-24, guiTop+10, 210, 0, 27, 82); + + if(CommonConfig.Value_EnableCostDisk) + { + this.blit(guiLeft+173, guiTop, 176, 0, 22, 98); + + if(container.tile.energyBuffer.energy > 0) + { + int yw = (int)(59*(container.tile.energyBuffer.energy/(float)container.tile.energyBuffer.capacity)); + this.blit(guiLeft+176, guiTop+20+(59-yw), 198, 59-yw, 12, yw); + } + + if(container.tile.prosses && prossesTime() > 0.0f) + this.blit(guiLeft+148, guiTop+36, 176, 98, 15, Math.min((int)(22*prossesTime()),22)); + } + + if(container.tile.prosses && prossesTime() > 0.0f) + { + blit(guiLeft+26, guiTop+15, 0, 194, 121, 18); + blit(guiLeft+27, guiTop+16, 0 + animaite, 189, 114, 5); + blit(guiLeft+27, guiTop+48, 0 + animaite, 189, 114, 5); + + this.drawCenteredString(font, i18nBuffer[0]+" "+(((int)(prossesTime()*10000))/100f)+" %", guiLeft + 84, guiTop + 30, 0xffffff); + if(animaite < 0) + animaite = 10; + else + --animaite; + } + else + { + + this.drawString(font, i18nBuffer[1]+": ", guiLeft + 28, guiTop + 6, 0xffffff); + if (container.tile.memory < 1000_000_000_000l) + { + String stringshow = ClientSetup.formatter.format(container.tile.memory); + String[] parts = stringshow.split(","); + if(parts != null) + { + int dec = 5 - parts.length; + for(String word : parts) + { + this.drawString(font, word, guiLeft + 28 + 22*dec, guiTop + 17, 0xffffff); + ++dec; + } + } + } + else + { + int size = ((""+container.tile.memory).length()-9)/3; + + String pre = ""+ "kMGTPE?".charAt(size < 6 && size > 0 ? size-1 : 6); + String stringshow = ClientSetup.formatter.format(container.tile.memory/(long) Math.pow(10, size*3)) + " "+pre+"*VIB"; + String[] parts = stringshow.split(" "); + if(parts != null) + { + int dec = 5 - parts.length; + for(String word : parts) + { + if(word.contains("*")) + word = word.replace('*', ' '); + this.drawString(font, word, guiLeft + 28 + 22*dec, guiTop + 17, 0xffffff); + ++dec; + } + } + } + this.drawString(font, i18nBuffer[2]+" VIB:", guiLeft + 28, guiTop + 47, 0xffffff); + + } + + //textField_size.render(mouseX, mouseY, partialTicks);//TODO + + this.drawString(font, "VIB: Virtual Item Box", guiLeft + 34, guiTop + 87, 0xffffff); + this.drawString(font, "1 VIB = "+i18nBuffer[6]+" 1 item", guiLeft + 40, guiTop + 97, 0xffffff); + + if(CommonConfig.Value_EnableCostDisk) + { + if(container.tile.prosses && mouseX >= guiLeft+148 && mouseY >= guiTop+36 && mouseX <= guiLeft+163 && mouseY <= guiTop+58) + { + List list = new ArrayList(); + list.add((((int)(prossesTime()*10000))/100f)+" %"); + GuiUtils.drawHoveringText(list, mouseX, mouseY, minecraft.currentScreen.width, minecraft.currentScreen.height, 100, font); + } + + if(mouseX >= guiLeft+176 && mouseY >= guiTop+20 && mouseX <= guiLeft+187 && mouseY <= guiTop+79) + { + List list = new ArrayList(); + list.add(ClientSetup.formatter.format(container.tile.energyBuffer.energy)+" RF /"+ClientSetup.formatter.format(container.tile.energyBuffer.capacity)+" RF"); + GuiUtils.drawHoveringText(list, mouseX, mouseY, minecraft.currentScreen.width, minecraft.currentScreen.height, 200, font); + } + + if(textField_size.isFocused()) + { + List list = new ArrayList(); + list.add(i18nBuffer[7]+": "+Tools.longFormatToString(energycost)+" RF"); + GuiUtils.drawHoveringText(list, guiLeft, guiTop, minecraft.currentScreen.width, minecraft.currentScreen.height, 200, font); + } + } + } + + @Override + public void tick() + { + super.tick(); + + textField_size.tick(); + + Slot s = getSlotUnderMouse(); + if(s != null && s.getStack().isEmpty()) + { + if(s.slotNumber == 36)//storage part + { + slot = 0; + } + else if(s.slotNumber == 37)//storage Housing + { + slot = 1; + } + else + { + slot = -1; + } + } + else + slot = -1; + + if(CommonConfig.Value_EnableCostDisk) + if(container.tile.prosses) + { + if(button_create.active) + button_create.active = false; + } + else + { + if(!button_create.active) + button_create.active = true; + } + } + + /*@Override + public boolean mouseClicked(double xm, double ym, int mb) + { + textField_size.mouseClicked(xm, ym, mb); + + return super.mouseClicked(xm, ym, mb); + }*/ + + /*@Override + public boolean keyPressed(int typedChar, int keyCode, int p_keyPressed_3_) + { + if("0123456789".indexOf((char)typedChar) != -1 || keyCode == 14 || keyCode == 203 || keyCode == 205) + { + textField_size.keyPressed(typedChar, keyCode, p_keyPressed_3_); + updateTFInteger(); + } + return super.keyPressed(typedChar, keyCode, p_keyPressed_3_); + }*/ + + @SuppressWarnings("unused") + private void updateTFInteger() + { + String text = textField_size.getText(); + boolean invalid = false; + try + { + double disk_size_d = Double.parseDouble(text); + if(disk_size_d > CommonConfig.Value_DiskMaxSize) + invalid = true; + else + disk_size = (int) disk_size_d; + } + catch (Exception e) + { + + } + + if(invalid) + { + disk_size = CommonConfig.Value_DiskMaxSize; + textField_size.setText(""+disk_size); + } + + energycost = ((long)CommonConfig.Value_EnergyCostPerSize)*disk_size; + } + + private float prossesTime() + { + return ((float)container.tile.createProsses)/container.tile.diskSize; + } + +} diff --git a/java/javapower/storagetech/screen/ScreenContainerFluidDiskWorkbench.java b/java/javapower/storagetech/screen/ScreenContainerFluidDiskWorkbench.java new file mode 100644 index 0000000..872d4fa --- /dev/null +++ b/java/javapower/storagetech/screen/ScreenContainerFluidDiskWorkbench.java @@ -0,0 +1,354 @@ +package javapower.storagetech.screen; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Predicate; + +import com.mojang.blaze3d.systems.RenderSystem; + +import javapower.storagetech.container.ContainerFluidDiskWorkbench; +import javapower.storagetech.core.ClientConfig; +import javapower.storagetech.core.ClientSetup; +import javapower.storagetech.core.CommonConfig; +import javapower.storagetech.core.PacketCreateDisk; +import javapower.storagetech.core.ResourceLocationRegister; +import javapower.storagetech.core.StorageTech; +import javapower.storagetech.util.Tools; +import net.minecraft.client.gui.screen.inventory.ContainerScreen; +import net.minecraft.client.gui.widget.TextFieldWidget; +import net.minecraft.client.gui.widget.button.Button; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.inventory.container.Slot; +import net.minecraft.util.text.ITextComponent; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.fml.client.gui.GuiUtils; + +@OnlyIn(Dist.CLIENT) +public class ScreenContainerFluidDiskWorkbench extends ContainerScreen +{ + TextFieldWidget textField_size; + + int disk_size = 1000; + private String[] i18nBuffer; + int slot = -1; + int animaite = 0; + long energycost = 0; + //28 17 + Button button_create = new Button(28, 17, 40, 20, I18n.format("storagetech.gui.create"), (button) -> + { + //TODO send to server the starting + StorageTech.INSTANCE_CHANNEL.sendToServer(new PacketCreateDisk(container.tile.getPos(), disk_size)); + }); + + public ScreenContainerFluidDiskWorkbench(ContainerFluidDiskWorkbench _screenContainer, PlayerInventory inv, ITextComponent titleIn) + { + super(_screenContainer, inv, titleIn); + + ClientConfig.loadConfig(); + + i18nBuffer = new String[] + { + I18n.format("storagetech.gui.creation"), + I18n.format("storagetech.gui.availablespace"), + I18n.format("storagetech.gui.disksizein"), + I18n.format("storagetech.gui.info"), + I18n.format("storagetech.gui.insertfluidstoragepart"), + I18n.format("storagetech.gui.insertstoragehousing"), + I18n.format("storagetech.gui.for"), + I18n.format("storagetech.gui.cost") + }; + + //addButton(button_create); + //addButton(textField_size); + + this.passEvents = false; + } + + @Override + public void init() + { + this.xSize = 176 + (CommonConfig.Value_EnableCostDisk ? 45 : 0); + this.ySize = 189; + + super.init(); + + textField_size = new TextFieldWidget(font, 28, 17, 70, 20,""+disk_size); + textField_size.setValidator(new Predicate() + { + + @Override + public boolean test(String text) + { + if(text.length() == 0) + { + disk_size = 1; + return true; + } + + boolean invalid = false; + try + { + double disk_size_d = Double.parseDouble(text); + if(disk_size_d > CommonConfig.Value_DiskFluidMaxSize) + invalid = true; + else + disk_size = (int) disk_size_d; + } + catch (Exception e) + { + return false; + } + + if(invalid) + { + disk_size = CommonConfig.Value_DiskFluidMaxSize; + textField_size.setText(""+disk_size); + return false; + } + + energycost = ((long)CommonConfig.Value_EnergyCostPerSize)*disk_size; + + //System.out.println(t); + return true; + } + }); + textField_size.setMaxStringLength(10); + textField_size.setText(""+disk_size); + //button_create.x = 40; + //addButton(button_create); + addButton(textField_size); + addButton(button_create); + } + + @Override + public void render(int mouseX, int mouseY, float partialTicks) + { + + this.renderBackground(); + super.render(mouseX, mouseY, partialTicks); + this.renderHoveredToolTip(mouseX, mouseY); + + if(ClientConfig.Value_showHelp) + { + if(slot == 0) + { + List list = new ArrayList(); + list.add("b(i) f"+i18nBuffer[3]); + list.add("7"+i18nBuffer[4]); + GuiUtils.drawHoveringText(list, mouseX, mouseY, minecraft.currentScreen.width, minecraft.currentScreen.height, 150, font); + } + else if(slot == 1) + { + List list = new ArrayList(); + list.add("b(i) f"+i18nBuffer[3]); + list.add("7"+i18nBuffer[5]); + GuiUtils.drawHoveringText(list, mouseX, mouseY, minecraft.currentScreen.width, minecraft.currentScreen.height, 150, font); + } + } + } + + @Override + protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) + { + button_create.x = 100 + guiLeft; + button_create.y = 65 + guiTop; + + textField_size.x = 28 + guiLeft; + textField_size.y = 65 + guiTop; + + RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); + minecraft.getTextureManager().bindTexture(ResourceLocationRegister.gui_fdiskwb); + + blit(guiLeft, guiTop, 0, 0, xSize - (CommonConfig.Value_EnableCostDisk ? 45 : 0), ySize); + blit(guiLeft-24, guiTop+10, 210, 0, 27, 82); + + if(CommonConfig.Value_EnableCostDisk) + { + this.blit(guiLeft+173, guiTop, 176, 0, 22, 98); + + if(container.tile.energyBuffer.energy > 0) + { + int yw = (int)(59*(container.tile.energyBuffer.energy/(float)container.tile.energyBuffer.capacity)); + this.blit(guiLeft+176, guiTop+20+(59-yw), 198, 59-yw, 12, yw); + } + + if(container.tile.prosses && prossesTime() > 0.0f) + this.blit(guiLeft+148, guiTop+36, 176, 98, 15, Math.min((int)(22*prossesTime()),22)); + } + + if(container.tile.prosses && prossesTime() > 0.0f) + { + blit(guiLeft+26, guiTop+15, 0, 194, 121, 18); + blit(guiLeft+27, guiTop+16, 0 + animaite, 189, 114, 5); + blit(guiLeft+27, guiTop+48, 0 + animaite, 189, 114, 5); + + this.drawCenteredString(font, i18nBuffer[0]+" "+(((int)(prossesTime()*10000))/100f)+" %", guiLeft + 84, guiTop + 30, 0xffffff); + if(animaite < 0) + animaite = 10; + else + --animaite; + } + else + { + + this.drawString(font, i18nBuffer[1]+": ", guiLeft + 28, guiTop + 6, 0xffffff); + if (container.tile.memory < 1000_000_000_000l) + { + String stringshow = ClientSetup.formatter.format(container.tile.memory); + String[] parts = stringshow.split(","); + if(parts != null) + { + int dec = 5 - parts.length; + for(String word : parts) + { + this.drawString(font, word, guiLeft + 28 + 22*dec, guiTop + 17, 0xffffff); + ++dec; + } + } + } + else + { + int size = ((""+container.tile.memory).length()-9)/3; + + String pre = ""+ "kMGTPE?".charAt(size < 6 && size > 0 ? size-1 : 6); + String stringshow = ClientSetup.formatter.format(container.tile.memory/(long) Math.pow(10, size*3)) + " "+pre+"*VFT"; + String[] parts = stringshow.split(" "); + if(parts != null) + { + int dec = 5 - parts.length; + for(String word : parts) + { + if(word.contains("*")) + word = word.replace('*', ' '); + this.drawString(font, word, guiLeft + 28 + 22*dec, guiTop + 17, 0xffffff); + ++dec; + } + } + } + this.drawString(font, i18nBuffer[2]+" VFT:", guiLeft + 28, guiTop + 47, 0xffffff); + + } + + //textField_size.render(mouseX, mouseY, partialTicks);//TODO + + this.drawString(font, "VFT: Virtual Fluid Tank", guiLeft + 34, guiTop + 87, 0xffffff); + this.drawString(font, "1 VFT = "+i18nBuffer[6]+" 1 mB", guiLeft + 40, guiTop + 97, 0xffffff); + + if(CommonConfig.Value_EnableCostDisk) + { + if(container.tile.prosses && mouseX >= guiLeft+148 && mouseY >= guiTop+36 && mouseX <= guiLeft+163 && mouseY <= guiTop+58) + { + List list = new ArrayList(); + list.add((((int)(prossesTime()*10000))/100f)+" %"); + GuiUtils.drawHoveringText(list, mouseX, mouseY, minecraft.currentScreen.width, minecraft.currentScreen.height, 100, font); + } + + if(mouseX >= guiLeft+176 && mouseY >= guiTop+20 && mouseX <= guiLeft+187 && mouseY <= guiTop+79) + { + List list = new ArrayList(); + list.add(ClientSetup.formatter.format(container.tile.energyBuffer.energy)+" RF /"+ClientSetup.formatter.format(container.tile.energyBuffer.capacity)+" RF"); + GuiUtils.drawHoveringText(list, mouseX, mouseY, minecraft.currentScreen.width, minecraft.currentScreen.height, 200, font); + } + + if(textField_size.isFocused()) + { + List list = new ArrayList(); + list.add(i18nBuffer[7]+": "+Tools.longFormatToString(energycost)+" RF"); + GuiUtils.drawHoveringText(list, guiLeft, guiTop, minecraft.currentScreen.width, minecraft.currentScreen.height, 200, font); + } + } + } + + @Override + public void tick() + { + super.tick(); + + textField_size.tick(); + + Slot s = getSlotUnderMouse(); + if(s != null && s.getStack().isEmpty()) + { + if(s.slotNumber == 36)//storage part + { + slot = 0; + } + else if(s.slotNumber == 37)//storage Housing + { + slot = 1; + } + else + { + slot = -1; + } + } + else + slot = -1; + + if(CommonConfig.Value_EnableCostDisk) + if(container.tile.prosses) + { + if(button_create.active) + button_create.active = false; + } + else + { + if(!button_create.active) + button_create.active = true; + } + } + + /*@Override + public boolean mouseClicked(double xm, double ym, int mb) + { + textField_size.mouseClicked(xm, ym, mb); + + return super.mouseClicked(xm, ym, mb); + }*/ + + /*@Override + public boolean keyPressed(int typedChar, int keyCode, int p_keyPressed_3_) + { + if("0123456789".indexOf((char)typedChar) != -1 || keyCode == 14 || keyCode == 203 || keyCode == 205) + { + textField_size.keyPressed(typedChar, keyCode, p_keyPressed_3_); + updateTFInteger(); + } + return super.keyPressed(typedChar, keyCode, p_keyPressed_3_); + }*/ + + @SuppressWarnings("unused") + private void updateTFInteger() + { + String text = textField_size.getText(); + boolean invalid = false; + try + { + double disk_size_d = Double.parseDouble(text); + if(disk_size_d > CommonConfig.Value_DiskFluidMaxSize) + invalid = true; + else + disk_size = (int) disk_size_d; + } + catch (Exception e) + { + + } + + if(invalid) + { + disk_size = CommonConfig.Value_DiskFluidMaxSize; + textField_size.setText(""+disk_size); + } + + energycost = ((long)CommonConfig.Value_EnergyCostPerSize)*disk_size; + } + + private float prossesTime() + { + return ((float)container.tile.createProsses)/container.tile.diskSize; + } + +} diff --git a/java/javapower/storagetech/slot/SlotFiltred.java b/java/javapower/storagetech/slot/SlotFiltred.java index 02f86ba..a1b0bf9 100644 --- a/java/javapower/storagetech/slot/SlotFiltred.java +++ b/java/javapower/storagetech/slot/SlotFiltred.java @@ -1,7 +1,7 @@ package javapower.storagetech.slot; import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.Slot; +import net.minecraft.inventory.container.Slot; import net.minecraft.item.ItemStack; public class SlotFiltred extends Slot diff --git a/java/javapower/storagetech/slot/SlotOutput.java b/java/javapower/storagetech/slot/SlotOutput.java index 452fe7a..5e57daf 100644 --- a/java/javapower/storagetech/slot/SlotOutput.java +++ b/java/javapower/storagetech/slot/SlotOutput.java @@ -1,8 +1,7 @@ package javapower.storagetech.slot; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.Slot; +import net.minecraft.inventory.container.Slot; import net.minecraft.item.ItemStack; public class SlotOutput extends Slot diff --git a/java/javapower/storagetech/tileentity/CustomStorageTile.java b/java/javapower/storagetech/tileentity/CustomStorageTile.java new file mode 100644 index 0000000..52fa888 --- /dev/null +++ b/java/javapower/storagetech/tileentity/CustomStorageTile.java @@ -0,0 +1,85 @@ +package javapower.storagetech.tileentity; + +import javax.annotation.Nonnull; + +import com.refinedmods.refinedstorage.api.storage.AccessType; +import com.refinedmods.refinedstorage.tile.NetworkNodeTile; +import com.refinedmods.refinedstorage.tile.config.IAccessType; +import com.refinedmods.refinedstorage.tile.config.IComparable; +import com.refinedmods.refinedstorage.tile.config.IPrioritizable; +import com.refinedmods.refinedstorage.tile.config.IWhitelistBlacklist; +import com.refinedmods.refinedstorage.tile.data.RSSerializers; +import com.refinedmods.refinedstorage.tile.data.TileDataParameter; + +import javapower.storagetech.core.StorageTech; +import javapower.storagetech.node.CustomStorageNetworkNode; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.registries.ObjectHolder; + +public class CustomStorageTile extends NetworkNodeTile +{ + @ObjectHolder(StorageTech.MODID+":customstorageblock") + public static final TileEntityType CURRENT_TILE = null; + + public static final TileDataParameter PRIORITY = IPrioritizable.createParameter(); + public static final TileDataParameter COMPARE = IComparable.createParameter(); + public static final TileDataParameter WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(); + public static final TileDataParameter ACCESS_TYPE = IAccessType.createParameter(); + public static final TileDataParameter STORED = new TileDataParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> t.getNode().getStorage() != null ? (long) t.getNode().getStorage().getStored() : 0); + + public int storageCapacity = 1; + + public CustomStorageTile() + { + super(CURRENT_TILE); + + dataManager.addWatchedParameter(PRIORITY); + dataManager.addWatchedParameter(COMPARE); + dataManager.addWatchedParameter(WHITELIST_BLACKLIST); + dataManager.addWatchedParameter(STORED); + dataManager.addWatchedParameter(ACCESS_TYPE); + } + + @Override + @Nonnull + public CustomStorageNetworkNode createNode(World world, BlockPos pos) + { + return new CustomStorageNetworkNode(world, pos, this); + } + + @Override + public void read(CompoundNBT compound) + { + super.read(compound); + + if(compound.contains("capacity")) + storageCapacity = compound.getInt("capacity"); + } + + @Override + public CompoundNBT write(CompoundNBT compound) + { + super.write(compound); + compound.putInt("capacity", storageCapacity); + return compound; + } + + @Override + public void readUpdate(CompoundNBT tag) + { + super.readUpdate(tag); + if(tag.contains("capacity")) + storageCapacity = tag.getInt("capacity"); + } + + @Override + public CompoundNBT writeUpdate(CompoundNBT tag) + { + super.writeUpdate(tag); + tag.putInt("capacity", storageCapacity); + return tag; + } +} \ No newline at end of file diff --git a/java/javapower/storagetech/tileentity/ICreateDisk.java b/java/javapower/storagetech/tileentity/ICreateDisk.java new file mode 100644 index 0000000..6b1ea5f --- /dev/null +++ b/java/javapower/storagetech/tileentity/ICreateDisk.java @@ -0,0 +1,6 @@ +package javapower.storagetech.tileentity; + +public interface ICreateDisk +{ + public void createDisk(int cap); +} diff --git a/java/javapower/storagetech/tileentity/TileEntityBase.java b/java/javapower/storagetech/tileentity/TileEntityBase.java index 2b07f19..5ffb926 100644 --- a/java/javapower/storagetech/tileentity/TileEntityBase.java +++ b/java/javapower/storagetech/tileentity/TileEntityBase.java @@ -1,100 +1,87 @@ package javapower.storagetech.tileentity; -import javax.annotation.Nullable; - -import net.minecraft.block.state.IBlockState; -import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.CompoundNBT; import net.minecraft.network.NetworkManager; -import net.minecraft.network.play.server.SPacketUpdateTileEntity; +import net.minecraft.network.play.server.SUpdateTileEntityPacket; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraft.world.chunk.Chunk; +import net.minecraft.tileentity.TileEntityType; -public class TileEntityBase extends TileEntity +public abstract class TileEntityBase extends TileEntity { - public NBTTagCompound write(NBTTagCompound tag) + + public TileEntityBase(TileEntityType tileEntityTypeIn) { - return tag; - } - - public NBTTagCompound writeUpdate(NBTTagCompound tag) - { - return tag; - } - - public void read(NBTTagCompound tag) - { - - } - - public void readUpdate(NBTTagCompound tag) - { - - } - - @Override - public NBTTagCompound getUpdateTag() - { - return writeUpdate(super.getUpdateTag()); - } - - @Nullable - @Override - public SPacketUpdateTileEntity getUpdatePacket() - { - return new SPacketUpdateTileEntity(pos, 1, getUpdateTag()); - } - - @Override - public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity packet) - { - readUpdate(packet.getNbtCompound()); - } - - @Override - public void handleUpdateTag(NBTTagCompound tag) - { - super.readFromNBT(tag); - - readUpdate(tag); - } - - @Override - public void readFromNBT(NBTTagCompound tag) - { - super.readFromNBT(tag); + super(tileEntityTypeIn); + } - read(tag); - } + @Override + public void read(CompoundNBT tag) + { + super.read(tag); + + readFromNBT(tag); + } + @Override + public CompoundNBT write(CompoundNBT tag) + { + super.write(tag); + return writeToNBT(tag); + } + + // ---------------- abstract ---------------- + public abstract void readFromNBT(CompoundNBT tag); + + public abstract CompoundNBT writeToNBT(CompoundNBT tag); - @Override - public NBTTagCompound writeToNBT(NBTTagCompound tag) - { - return write(super.writeToNBT(tag)); - } - - @Override - public boolean shouldRefresh(World world, BlockPos pos, IBlockState oldState, IBlockState newState) - { - return oldState.getBlock() != newState.getBlock(); - } - - @Override - public int hashCode() - { - int result = pos.hashCode(); - result = 31 * result + world.provider.getDimension(); - return result; - } - - public void UpdateCkunk() + protected abstract void readFromServer(CompoundNBT tag); + + protected abstract CompoundNBT writeToClient(CompoundNBT tag); + // ---------------- end abstract ---------------- + + + // ---------------- NBT SYNC ---------------- + // NBT Synchronizing on chunk load + // send to client packet + @Override + public CompoundNBT getUpdateTag() { - if(world != null) - { - Chunk ch = world.getChunkFromBlockCoords(pos); - if(ch != null) - ch.markDirty(); - } + CompoundNBT nbtTag = new CompoundNBT(); + super.write(nbtTag); + writeToClient(nbtTag); + return nbtTag; } -} + //recive from server packet + @Override + public void handleUpdateTag(CompoundNBT nbt) + { + super.read(nbt); + readFromServer(nbt); + } + + // NBT Synchronizing on block update + // send to client packet + public SUpdateTileEntityPacket getUpdatePacket() + { + CompoundNBT nbtTag = new CompoundNBT(); + super.write(nbtTag); + writeToClient(nbtTag); + return new SUpdateTileEntityPacket(getPos(), -1, nbtTag); + } + //recive from server packet + @Override + public void onDataPacket(NetworkManager net, SUpdateTileEntityPacket pkt) + { + CompoundNBT nbt = pkt.getNbtCompound(); + super.read(nbt); + readFromServer(nbt); + } + // ---------------- END NBT SYNC ---------------- + + @Override + public void markDirty() + { + if (world != null) + world.markChunkDirty(pos, this); + } + +} \ No newline at end of file diff --git a/java/javapower/storagetech/tileentity/TileEntityDiskWorkbench.java b/java/javapower/storagetech/tileentity/TileEntityDiskWorkbench.java index 8c55e7e..a28bee7 100644 --- a/java/javapower/storagetech/tileentity/TileEntityDiskWorkbench.java +++ b/java/javapower/storagetech/tileentity/TileEntityDiskWorkbench.java @@ -2,32 +2,51 @@ import java.util.UUID; -import com.raoulvdberge.refinedstorage.RSItems; -import com.raoulvdberge.refinedstorage.apiimpl.API; +import com.refinedmods.refinedstorage.RSItems; +import com.refinedmods.refinedstorage.apiimpl.API; -import javapower.storagetech.core.Config; +import javapower.storagetech.container.ContainerDiskWorkbench; +import javapower.storagetech.core.CommonConfig; +import javapower.storagetech.core.StorageTech; import javapower.storagetech.eventio.IEventVoid; import javapower.storagetech.item.STItems; import javapower.storagetech.util.DiskUtils; import javapower.storagetech.util.EnergyBuffer; -import javapower.storagetech.util.Tools; -import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ItemStackHelper; +import net.minecraft.inventory.container.Container; +import net.minecraft.inventory.container.INamedContainerProvider; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.EnumFacing; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.Direction; import net.minecraft.util.NonNullList; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; +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 net.minecraftforge.energy.CapabilityEnergy; +import net.minecraftforge.energy.IEnergyStorage; +import net.minecraftforge.registries.ObjectHolder; -public class TileEntityDiskWorkbench extends TileEntitySynchronized implements IInventory +public class TileEntityDiskWorkbench extends TileEntityBase implements IInventory, ITickableTileEntity, INamedContainerProvider, ICreateDisk { + @ObjectHolder(StorageTech.MODID+":diskworkbench") + public static final TileEntityType CURRENT_TILE = null; + public long memory = 0l; - boolean update = true; + //boolean update = true; public NonNullList block_inv_content = NonNullList.withSize(7, ItemStack.EMPTY); - public EnergyBuffer energyBuffer = new EnergyBuffer(1000000, 1000000, 0); + public EnergyBuffer energyBuffer = new EnergyBuffer(CommonConfig.Value_EnergyBuffer, CommonConfig.Value_EnergyBuffer, 0); + + private LazyOptional energyProxyCap = LazyOptional.of(() -> energyBuffer); public boolean prosses = false; public int time = 0; @@ -36,13 +55,33 @@ public class TileEntityDiskWorkbench extends TileEntitySynchronized implements I public TileEntityDiskWorkbench() { + super(CURRENT_TILE); + energyBuffer.eventchange = new IEventVoid() { + @Override public void event() { - update = true; - markDirty(); + if(world != null && !world.isRemote) + { + markDirty(); + world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), Constants.BlockFlags.BLOCK_UPDATE);//send update to client + } + + } + }; + + energyBuffer.eventchange = new IEventVoid() + { + @Override + public void event() + { + if(world != null && !world.isRemote) + { + markDirty(); + world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), Constants.BlockFlags.BLOCK_UPDATE);//send update to client + } } }; } @@ -51,42 +90,43 @@ public void update_prosses() { if(prosses) { - if(createProsses >= diskSize || !Config.EnableCostDisk) + if(createProsses >= diskSize || !CommonConfig.Value_EnableCostDisk) { ItemStack itemstack_diskcustom = new ItemStack(STItems.item_diskcustom); itemstack_diskcustom.getItem().onCreated(itemstack_diskcustom, world, null); - NBTTagCompound nbtitemdisk = itemstack_diskcustom.getTagCompound(); + CompoundNBT nbtitemdisk = itemstack_diskcustom.getOrCreateTag(); if(nbtitemdisk == null) - nbtitemdisk = new NBTTagCompound(); + nbtitemdisk = new CompoundNBT(); - nbtitemdisk.setInteger("st_cap", diskSize); + nbtitemdisk.putInt("st_cap", diskSize); UUID id = UUID.randomUUID(); - API.instance().getStorageDiskManager(world).set(id, API.instance().createDefaultItemDisk(world, diskSize)); - API.instance().getStorageDiskManager(world).markForSaving(); - - nbtitemdisk.setUniqueId("Id", id); - itemstack_diskcustom.setTagCompound(nbtitemdisk); + API.instance().getStorageDiskManager((ServerWorld) world).set(id, API.instance().createDefaultItemDisk((ServerWorld) world, diskSize)); + API.instance().getStorageDiskManager((ServerWorld) world).markForSaving(); + nbtitemdisk.putUniqueId("Id", id); + itemstack_diskcustom.setTag(nbtitemdisk); block_inv_content.set(2, itemstack_diskcustom); prosses = false; - update = true; + //update = true; markDirty(); + world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), Constants.BlockFlags.BLOCK_UPDATE); } else { - if(time > Config.TimeCostPerSize) + if(time > CommonConfig.Value_TimeCostPerSize) { - if(energyBuffer.energy >= Config.EnergyCostPerSize+countUpgrade()) + if(energyBuffer.energy >= CommonConfig.Value_EnergyCostPerSize+countUpgrade()) { time = 0; - createProsses += Config.ProssesAdvancementSizeFluid*countUpgrade(); - energyBuffer.energy -= Config.EnergyCostPerSize+countUpgrade(); + createProsses += CommonConfig.Value_ProssesAdvancementSize*countUpgrade(); + energyBuffer.energy -= CommonConfig.Value_EnergyCostPerSize+countUpgrade(); - update = true; + //update = true; markDirty(); + world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), Constants.BlockFlags.BLOCK_UPDATE); } } else @@ -99,225 +139,178 @@ public void update_prosses() } @Override - public void reciveDataFromClient(NBTTagCompound nbt, EntityPlayer player) + public void tick() { - if(nbt.hasKey("up")) - update = true; - - if(nbt.hasKey("startCreateDisk")) + ItemStack i = block_inv_content.get(0); + if(!i.isEmpty()) { - int disksize = nbt.getInteger("startCreateDisk"); - ItemStack itemin = block_inv_content.get(1); - ItemStack itemout = block_inv_content.get(2); - - if(itemout.isEmpty() && !itemin.isEmpty() && itemin.getCount() > 0 && disksize > 0 && disksize <= memory) + if(DiskUtils.validItemPart(i)) { - if(!prosses) - { - time = 0; - createProsses = 0; - diskSize = disksize; - prosses = true; - memory -= disksize; - update = true; - markDirty(); - if(itemin.getCount() == 1) - { - block_inv_content.set(1, ItemStack.EMPTY); - } - else - { - itemin.setCount(itemin.getCount()-1); - } - } + long memadd = DiskUtils.getMemoryFromItemPart(i); + memory += memadd; + //update = true; + block_inv_content.set(0, ItemStack.EMPTY); + markDirty(); + world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), Constants.BlockFlags.BLOCK_UPDATE); } } - /*if(nbt.hasKey("createDisk")) - { - int disksize = nbt.getInteger("createDisk"); - ItemStack itemin = block_inv_content.get(1); - if(block_inv_content.get(2).isEmpty() && !itemin.isEmpty() && itemin.getCount() > 0 && disksize <= memory) - { - ItemStack itemstack_diskcustom = new ItemStack(STItems.item_diskcustom); - itemstack_diskcustom.getItem().onCreated(itemstack_diskcustom, world, player); - NBTTagCompound nbtitemdisk = itemstack_diskcustom.getTagCompound(); - - if(nbtitemdisk == null) - nbtitemdisk = new NBTTagCompound(); - - nbtitemdisk.setInteger("st_cap", disksize); - //itemstack_diskcustom.setTagCompound(nbtitemdisk); - - UUID id = UUID.randomUUID(); - API.instance().getStorageDiskManager(world).set(id, API.instance().createDefaultItemDisk(world, disksize)); - API.instance().getStorageDiskManager(world).markForSaving(); - - nbtitemdisk.setUniqueId("Id", id); - itemstack_diskcustom.setTagCompound(nbtitemdisk); - - block_inv_content.set(2, itemstack_diskcustom); - if(itemin.getCount() == 1) - { - block_inv_content.set(1, ItemStack.EMPTY); - } - else - { - itemin.setCount(itemin.getCount()-1); - } - - memory -= disksize; - update = true; - markDirty(); - } - }*/ + if(!world.isRemote) + update_prosses(); + //super.update(); + } + + public int countUpgrade() + { + int u = 1; + if(!block_inv_content.get(3).isEmpty()) + u *= 4; + if(!block_inv_content.get(4).isEmpty()) + u *= 4; + if(!block_inv_content.get(5).isEmpty()) + u *= 4; + if(!block_inv_content.get(6).isEmpty()) + u *= 4; + + return u; } @Override - public void onPlayerOpenGUISendData(NBTTagCompound nbt, EntityPlayer player) + public void readFromNBT(CompoundNBT tag) { - nbt.setLong("memory", memory); - nbt.setInteger("max", Math.min(Config.DiskMaxSize, Tools.limiteLTI(memory))); + if(tag.contains("memory")) + memory = tag.getLong("memory"); + + if(tag.contains("inv")) + ItemStackHelper.loadAllItems(tag.getCompound("inv"), block_inv_content); - nbt.setBoolean("prosses", prosses); - nbt.setFloat("prossestime", (createProsses/(float)diskSize)); + energyBuffer.ReadFromNBT(tag); + + if(tag.contains("prosses")) + prosses = tag.getBoolean("prosses"); + + if(tag.contains("time")) + time = tag.getInt("time"); + + if(tag.contains("createprosses")) + createProsses = tag.getInt("createprosses"); + + if(tag.contains("disksize")) + diskSize = tag.getInt("disksize"); - nbt.setInteger("energy", energyBuffer.energy); - nbt.setInteger("capacity", energyBuffer.capacity); - nbt.setBoolean("encd", Config.EnableCostDisk); + markDirty(); } @Override - public NBTTagCompound updateData() + public CompoundNBT writeToNBT(CompoundNBT tag) { - if(update) - { - update = false; - NBTTagCompound nbt_update = new NBTTagCompound(); - nbt_update.setLong("memory", memory); - nbt_update.setInteger("max", Math.min(Config.DiskMaxSize, Tools.limiteLTI(memory))); - - nbt_update.setBoolean("prosses", prosses); - nbt_update.setFloat("prossestime", (createProsses/(float)diskSize)); - - nbt_update.setInteger("energy", energyBuffer.energy); - nbt_update.setInteger("capacity", energyBuffer.capacity); - nbt_update.setBoolean("encd", Config.EnableCostDisk); - return nbt_update; - } - return null; + tag.putLong("memory", memory); + + CompoundNBT nbt_inv = new CompoundNBT(); + ItemStackHelper.saveAllItems(nbt_inv, block_inv_content); + tag.put("inv", nbt_inv); + + energyBuffer.WriteToNBT(tag); + + tag.putBoolean("prosses", prosses); + tag.putInt("time", time); + tag.putInt("createprosses", createProsses); + tag.putInt("disksize", diskSize); + + return tag; } - + @Override - public void read(NBTTagCompound tag) + protected void readFromServer(CompoundNBT tag) { - if(tag.hasKey("memory")) + if(tag.contains("memory")) memory = tag.getLong("memory"); - if(tag.hasKey("inv")) - ItemStackHelper.loadAllItems(tag.getCompoundTag("inv"), block_inv_content); + if(tag.contains("inv")) + ItemStackHelper.loadAllItems(tag.getCompound("inv"), block_inv_content); energyBuffer.ReadFromNBT(tag); - if(tag.hasKey("prosses")) + if(tag.contains("prosses")) prosses = tag.getBoolean("prosses"); - if(tag.hasKey("time")) - time = tag.getInteger("time"); - - if(tag.hasKey("createprosses")) - createProsses = tag.getInteger("createprosses"); + if(tag.contains("time")) + time = tag.getInt("time"); - if(tag.hasKey("disksize")) - diskSize = tag.getInteger("disksize"); + if(tag.contains("createprosses")) + createProsses = tag.getInt("createprosses"); - markDirty(); + if(tag.contains("disksize")) + diskSize = tag.getInt("disksize"); } - + @Override - public NBTTagCompound write(NBTTagCompound tag) + protected CompoundNBT writeToClient(CompoundNBT tag) { - tag.setLong("memory", memory); + tag.putLong("memory", memory); - NBTTagCompound nbt_inv = new NBTTagCompound(); + CompoundNBT nbt_inv = new CompoundNBT(); ItemStackHelper.saveAllItems(nbt_inv, block_inv_content); - tag.setTag("inv", nbt_inv); + tag.put("inv", nbt_inv); energyBuffer.WriteToNBT(tag); - tag.setBoolean("prosses", prosses); - tag.setInteger("time", time); - tag.setInteger("createprosses", createProsses); - tag.setInteger("disksize", diskSize); + tag.putBoolean("prosses", prosses); + tag.putInt("time", time); + tag.putInt("createprosses", createProsses); + tag.putInt("disksize", diskSize); return tag; } @Override - public void update() + public CompoundNBT getUpdateTag() { - ItemStack i = block_inv_content.get(0); - if(!i.isEmpty()) - { - if(DiskUtils.validItemDisk(i)) - { - long memadd = DiskUtils.getMemoryFromItemDisk(i); - memory += memadd; - update = true; - block_inv_content.set(0, ItemStack.EMPTY); - markDirty(); - } - /*if(i.getItem().equals(RSItems.STORAGE_PART)) - { - int dam = i.getItemDamage(); - int quant = i.getCount(); - long memadd = (long) (Math.pow(2, 2*dam)*quant*1000); - if(memadd + memory > memory) - { - memory += memadd; - update = true; - block_inv_content.set(0, ItemStack.EMPTY); - markDirty(); - } - } - else if(i.getItem().equals(STItems.item_memory) && i.getItemDamage() == 0 && i.getTagCompound() != null) - { - memory += i.getTagCompound().getLong("memory"); - update = true; - block_inv_content.set(0, ItemStack.EMPTY); - markDirty(); - }*/ - } + CompoundNBT nbt = super.getUpdateTag(); - update_prosses(); - super.update(); - } - - public int countUpgrade() - { - int u = 1; - if(!block_inv_content.get(3).isEmpty()) - u *= 4; - if(!block_inv_content.get(4).isEmpty()) - u *= 4; - if(!block_inv_content.get(5).isEmpty()) - u *= 4; - if(!block_inv_content.get(6).isEmpty()) - u *= 4; + //send server config to client + CompoundNBT nbt_cfg = new CompoundNBT(); + nbt_cfg.putLong("BP", pos.toLong()); - return u; + nbt_cfg.putInt("DMS",CommonConfig.Value_DiskMaxSize); + nbt_cfg.putInt("DFMS",CommonConfig.Value_DiskFluidMaxSize); + nbt_cfg.putBoolean("ECD",CommonConfig.Value_EnableCostDisk); + nbt_cfg.putInt("ECPS",CommonConfig.Value_EnergyCostPerSize); + nbt_cfg.putInt("TCPS",CommonConfig.Value_TimeCostPerSize); + nbt_cfg.putInt("PAS",CommonConfig.Value_ProssesAdvancementSize); + nbt_cfg.putInt("PASF",CommonConfig.Value_ProssesAdvancementSizeFluid); + + nbt.put("cfg", nbt_cfg); + return nbt; } - + @Override - public String getName() + public void handleUpdateTag(CompoundNBT nbt) { - return "diskWB"; + super.handleUpdateTag(nbt); + + //update configuration from server + if(nbt.contains("cfg")) + { + CompoundNBT nbt_cfg = nbt.getCompound("cfg"); + + pos = BlockPos.fromLong(nbt_cfg.getLong("BP")); + + CommonConfig.Value_DiskMaxSize = nbt_cfg.getInt("DMS"); + CommonConfig.Value_DiskFluidMaxSize = nbt_cfg.getInt("DFMS"); + CommonConfig.Value_EnableCostDisk = nbt_cfg.getBoolean("ECD"); + CommonConfig.Value_EnergyCostPerSize = nbt_cfg.getInt("ECPS"); + CommonConfig.Value_TimeCostPerSize = nbt_cfg.getInt("TCPS"); + CommonConfig.Value_ProssesAdvancementSize = nbt_cfg.getInt("PAS"); + CommonConfig.Value_ProssesAdvancementSizeFluid = nbt_cfg.getInt("PASF"); + } } + // ---------------- INVENTORY ---------------- @Override - public boolean hasCustomName() + public void clear() { - return false; + block_inv_content.clear(); } @Override @@ -348,7 +341,9 @@ public ItemStack getStackInSlot(int index) @Override public ItemStack decrStackSize(int index, int count) { - return ItemStackHelper.getAndSplit(block_inv_content, index, count); + if(index == 2) + return ItemStackHelper.getAndSplit(block_inv_content, index, count); + return ItemStack.EMPTY; } @Override @@ -364,84 +359,85 @@ public void setInventorySlotContents(int index, ItemStack stack) } @Override - public int getInventoryStackLimit() - { - return 64; - } - - @Override - public boolean isUsableByPlayer(EntityPlayer player) + public boolean isUsableByPlayer(PlayerEntity player) { return true; } - - @Override - public void openInventory(EntityPlayer player) - { - - } - - @Override - public void closeInventory(EntityPlayer player) - { - - } - + @Override - public boolean isItemValidForSlot(int index, ItemStack stack) + public boolean isItemValidForSlot(int slot, ItemStack stack) { - if(index >= 2 && index <= 6) - return false; - else if(index == 0) + if(slot == 0) { - return DiskUtils.validItemDisk(stack); - //return stack.getItem().equals(RSItems.STORAGE_PART) || (stack.getItem().equals(STItems.item_memory) && stack.getItemDamage() == 0); + ItemStack slot_itemStack = block_inv_content.get(0); + if(slot_itemStack.isEmpty()) + return DiskUtils.validItemPart(stack); + if(slot_itemStack.getCount() < slot_itemStack.getMaxStackSize() && slot_itemStack.isItemEqual(stack)) + return true; } - else + else if(slot == 1) { - return stack.isItemEqualIgnoreDurability(new ItemStack(RSItems.STORAGE_HOUSING)); + ItemStack slot_itemStack = block_inv_content.get(1); + if(slot_itemStack.isEmpty()) + return stack.getItem() == RSItems.STORAGE_HOUSING; + if(slot_itemStack.getCount() < slot_itemStack.getMaxStackSize() && slot_itemStack.isItemEqual(stack)) + return true; } + + return false; } - - @Override - public int getField(int id) - { - return 0; - } - + @Override - public void setField(int id, int value) + public LazyOptional getCapability(Capability cap, Direction side) { + if(cap == CapabilityEnergy.ENERGY) + { + return energyProxyCap.cast(); + } + return super.getCapability(cap, side); } @Override - public int getFieldCount() + public Container createMenu(int windowid, PlayerInventory playerInv, PlayerEntity player) { - return 0; + return new ContainerDiskWorkbench(windowid, this, playerInv); } @Override - public void clear() - { - block_inv_content.clear(); - } - - @Override - public boolean hasCapability(Capability capability, EnumFacing facing) + public ITextComponent getDisplayName() { - return capability == CapabilityEnergy.ENERGY || - super.hasCapability(capability, facing); + return new TranslationTextComponent("diskworkbench"); } - + @Override - public T getCapability(Capability capability, EnumFacing facing) + public void createDisk(int disksize) { - if(capability == CapabilityEnergy.ENERGY) + ItemStack itemin = block_inv_content.get(1); + ItemStack itemout = block_inv_content.get(2); + + if(itemout.isEmpty() && !itemin.isEmpty() && itemin.getCount() > 0 && disksize > 0 && disksize <= memory) { - return (T) energyBuffer; + if(!prosses) + { + time = 0; + createProsses = 0; + diskSize = disksize; + prosses = true; + memory -= disksize; + + markDirty(); + world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), Constants.BlockFlags.BLOCK_UPDATE); + + if(itemin.getCount() == 1) + { + block_inv_content.set(1, ItemStack.EMPTY); + } + else + { + itemin.setCount(itemin.getCount()-1); + } + } } - return super.getCapability(capability, facing); } - } diff --git a/java/javapower/storagetech/tileentity/TileEntityDiskWorkbench.java.dis b/java/javapower/storagetech/tileentity/TileEntityDiskWorkbench.java.dis deleted file mode 100644 index e4d9ab9..0000000 --- a/java/javapower/storagetech/tileentity/TileEntityDiskWorkbench.java.dis +++ /dev/null @@ -1,259 +0,0 @@ -package javapower.storagetech.tileentity; - -import java.util.UUID; - -import com.raoulvdberge.refinedstorage.RSItems; -import com.raoulvdberge.refinedstorage.apiimpl.API; - -import javapower.storagetech.core.Config; -import javapower.storagetech.item.STItems; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.ItemStackHelper; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.NonNullList; - -public class TileEntityDiskWorkbench extends TileEntitySynchronized implements IInventory -{ - public long memory = 0l; - boolean update = true; - public NonNullList block_inv_content = NonNullList.withSize(3, ItemStack.EMPTY); - - @Override - public void reciveDataFromClient(NBTTagCompound nbt, EntityPlayer player) - { - if(nbt.hasKey("createDisk")) - { - int disksize = nbt.getInteger("createDisk"); - ItemStack itemin = block_inv_content.get(1); - if(block_inv_content.get(2).isEmpty() && !itemin.isEmpty() && itemin.getCount() > 0 && disksize <= memory) - { - ItemStack itemstack_diskcustom = new ItemStack(STItems.item_diskcustom); - itemstack_diskcustom.getItem().onCreated(itemstack_diskcustom, world, player); - NBTTagCompound nbtitemdisk = itemstack_diskcustom.getTagCompound(); - - if(nbtitemdisk == null) - nbtitemdisk = new NBTTagCompound(); - - nbtitemdisk.setInteger("st_cap", disksize); - //itemstack_diskcustom.setTagCompound(nbtitemdisk); - - UUID id = UUID.randomUUID(); - API.instance().getStorageDiskManager(world).set(id, API.instance().createDefaultItemDisk(world, disksize)); - API.instance().getStorageDiskManager(world).markForSaving(); - - nbtitemdisk.setUniqueId("Id", id); - itemstack_diskcustom.setTagCompound(nbtitemdisk); - - block_inv_content.set(2, itemstack_diskcustom); - if(itemin.getCount() == 1) - { - block_inv_content.set(1, ItemStack.EMPTY); - } - else - { - itemin.setCount(itemin.getCount()-1); - } - - memory -= disksize; - update = true; - markDirty(); - } - } - } - - @Override - public void onPlayerOpenGUISendData(NBTTagCompound nbt, EntityPlayer player) - { - nbt.setLong("memory", memory); - nbt.setLong("max", Config.DiskMaxSize); - } - - @Override - public NBTTagCompound updateData() - { - if(update) - { - update = false; - NBTTagCompound nbt_update = new NBTTagCompound(); - nbt_update.setLong("memory", memory); - nbt_update.setLong("max", Config.DiskMaxSize); - return nbt_update; - } - return null; - } - - @Override - public void read(NBTTagCompound tag) - { - if(tag.hasKey("memory")) - memory = tag.getLong("memory"); - - if(tag.hasKey("inv")) - ItemStackHelper.loadAllItems(tag.getCompoundTag("inv"), block_inv_content); - - markDirty(); - } - - @Override - public NBTTagCompound write(NBTTagCompound tag) - { - tag.setLong("memory", memory); - - NBTTagCompound nbt_inv = new NBTTagCompound(); - ItemStackHelper.saveAllItems(nbt_inv, block_inv_content); - tag.setTag("inv", nbt_inv); - - return tag; - } - - @Override - public void update() - { - ItemStack i = block_inv_content.get(0); - if(!i.isEmpty()) - { - if(i.getItem().equals(RSItems.STORAGE_PART)) - { - int dam = i.getItemDamage(); - int quant = i.getCount(); - long memadd = (long) (Math.pow(2, 2*dam)*quant*1000); - if(memadd + memory > memory) - { - memory += memadd; - update = true; - block_inv_content.set(0, ItemStack.EMPTY); - markDirty(); - } - } - else if(i.getItem().equals(STItems.item_memory) && i.getItemDamage() == 0 && i.getTagCompound() != null) - { - memory += i.getTagCompound().getLong("memory"); - update = true; - block_inv_content.set(0, ItemStack.EMPTY); - markDirty(); - } - } - super.update(); - } - - @Override - public String getName() - { - return "diskWB"; - } - - @Override - public boolean hasCustomName() - { - return false; - } - - @Override - public int getSizeInventory() - { - return block_inv_content.size(); - } - - @Override - public boolean isEmpty() - { - for(ItemStack is: block_inv_content) - if(!is.isEmpty()) - return false; - - return true; - } - - @Override - public ItemStack getStackInSlot(int index) - { - if(index < block_inv_content.size()) - return block_inv_content.get(index); - - return ItemStack.EMPTY; - } - - @Override - public ItemStack decrStackSize(int index, int count) - { - return ItemStackHelper.getAndSplit(block_inv_content, index, count); - } - - @Override - public ItemStack removeStackFromSlot(int index) - { - return ItemStackHelper.getAndRemove(block_inv_content, index); - } - - @Override - public void setInventorySlotContents(int index, ItemStack stack) - { - block_inv_content.set(index, stack); - } - - @Override - public int getInventoryStackLimit() - { - return 64; - } - - @Override - public boolean isUsableByPlayer(EntityPlayer player) - { - return true; - } - - @Override - public void openInventory(EntityPlayer player) - { - - } - - @Override - public void closeInventory(EntityPlayer player) - { - - } - - @Override - public boolean isItemValidForSlot(int index, ItemStack stack) - { - if(index == 2) - return false; - else if(index == 0) - { - return stack.getItem().equals(RSItems.STORAGE_PART) || (stack.getItem().equals(STItems.item_memory) && stack.getItemDamage() == 0); - } - else - { - return stack.isItemEqualIgnoreDurability(new ItemStack(RSItems.STORAGE_HOUSING)); - } - } - - @Override - public int getField(int id) - { - return 0; - } - - @Override - public void setField(int id, int value) - { - - } - - @Override - public int getFieldCount() - { - return 0; - } - - @Override - public void clear() - { - block_inv_content.clear(); - } - -} diff --git a/java/javapower/storagetech/tileentity/TileEntityFluidDiskWorkbench.java b/java/javapower/storagetech/tileentity/TileEntityFluidDiskWorkbench.java index 087e1b9..2af2ada 100644 --- a/java/javapower/storagetech/tileentity/TileEntityFluidDiskWorkbench.java +++ b/java/javapower/storagetech/tileentity/TileEntityFluidDiskWorkbench.java @@ -2,32 +2,50 @@ import java.util.UUID; -import com.raoulvdberge.refinedstorage.RSItems; -import com.raoulvdberge.refinedstorage.apiimpl.API; +import com.refinedmods.refinedstorage.RSItems; +import com.refinedmods.refinedstorage.apiimpl.API; -import javapower.storagetech.core.Config; +import javapower.storagetech.container.ContainerFluidDiskWorkbench; +import javapower.storagetech.core.CommonConfig; +import javapower.storagetech.core.StorageTech; import javapower.storagetech.eventio.IEventVoid; import javapower.storagetech.item.STItems; import javapower.storagetech.util.DiskUtils; import javapower.storagetech.util.EnergyBuffer; -import javapower.storagetech.util.Tools; -import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ItemStackHelper; +import net.minecraft.inventory.container.Container; +import net.minecraft.inventory.container.INamedContainerProvider; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.EnumFacing; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.Direction; import net.minecraft.util.NonNullList; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; +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 net.minecraftforge.energy.CapabilityEnergy; +import net.minecraftforge.energy.IEnergyStorage; +import net.minecraftforge.registries.ObjectHolder; -public class TileEntityFluidDiskWorkbench extends TileEntitySynchronized implements IInventory +public class TileEntityFluidDiskWorkbench extends TileEntityBase implements IInventory, ITickableTileEntity, INamedContainerProvider, ICreateDisk { + @ObjectHolder(StorageTech.MODID+":fluiddiskworkbench") + public static final TileEntityType CURRENT_TILE = null; + public long memory = 0l; - boolean update = true; + //boolean update = true; public NonNullList block_inv_content = NonNullList.withSize(7, ItemStack.EMPTY); - public EnergyBuffer energyBuffer = new EnergyBuffer(1000000, 1000000, 0); + public EnergyBuffer energyBuffer = new EnergyBuffer(CommonConfig.Value_EnergyBuffer, CommonConfig.Value_EnergyBuffer, 0); + private final LazyOptional energyProxyCap = LazyOptional.of(() -> energyBuffer); public boolean prosses = false; public int time = 0; @@ -36,13 +54,33 @@ public class TileEntityFluidDiskWorkbench extends TileEntitySynchronized impleme public TileEntityFluidDiskWorkbench() { + super(CURRENT_TILE); + energyBuffer.eventchange = new IEventVoid() { + @Override public void event() { - update = true; - markDirty(); + if(world != null && !world.isRemote) + { + markDirty(); + world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), Constants.BlockFlags.BLOCK_UPDATE);//send update to client + } + + } + }; + + energyBuffer.eventchange = new IEventVoid() + { + @Override + public void event() + { + if(world != null && !world.isRemote) + { + markDirty(); + world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), Constants.BlockFlags.BLOCK_UPDATE);//send update to client + } } }; } @@ -51,46 +89,48 @@ public void update_prosses() { if(prosses) { - if(createProsses >= diskSize || !Config.EnableCostDisk) + if(createProsses >= diskSize || !CommonConfig.Value_EnableCostDisk) { ItemStack itemstack_diskcustom = new ItemStack(STItems.item_fluiddiskcustom); itemstack_diskcustom.getItem().onCreated(itemstack_diskcustom, world, null); - NBTTagCompound nbtitemdisk = itemstack_diskcustom.getTagCompound(); + CompoundNBT nbtitemdisk = itemstack_diskcustom.getOrCreateTag(); if(nbtitemdisk == null) - nbtitemdisk = new NBTTagCompound(); + nbtitemdisk = new CompoundNBT(); - nbtitemdisk.setInteger("st_cap", diskSize); + nbtitemdisk.putInt("st_cap", diskSize); UUID id = UUID.randomUUID(); - API.instance().getStorageDiskManager(world).set(id, API.instance().createDefaultFluidDisk(world, diskSize)); - API.instance().getStorageDiskManager(world).markForSaving(); - - nbtitemdisk.setUniqueId("Id", id); - itemstack_diskcustom.setTagCompound(nbtitemdisk); + API.instance().getStorageDiskManager((ServerWorld) world).set(id, API.instance().createDefaultFluidDisk((ServerWorld) world, diskSize)); + API.instance().getStorageDiskManager((ServerWorld) world).markForSaving(); + nbtitemdisk.putUniqueId("Id", id); + itemstack_diskcustom.setTag(nbtitemdisk); block_inv_content.set(2, itemstack_diskcustom); prosses = false; - update = true; + //update = true; markDirty(); + world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), Constants.BlockFlags.BLOCK_UPDATE); } else { - if(time > Config.TimeCostPerSize) + if(time > CommonConfig.Value_TimeCostPerSize) { - if(energyBuffer.energy >= Config.EnergyCostPerSize+countUpgrade()) + if(energyBuffer.energy >= CommonConfig.Value_EnergyCostPerSize+countUpgrade()) { time = 0; - createProsses += Config.ProssesAdvancementSizeFluid*countUpgrade(); - energyBuffer.energy -= Config.EnergyCostPerSize+countUpgrade(); + createProsses += CommonConfig.Value_ProssesAdvancementSizeFluid*countUpgrade(); + energyBuffer.energy -= CommonConfig.Value_EnergyCostPerSize+countUpgrade(); - update = true; + //update = true; markDirty(); + world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), Constants.BlockFlags.BLOCK_UPDATE); } } else { + //System.out.println(countUpgrade()); ++time; } } @@ -98,224 +138,178 @@ public void update_prosses() } @Override - public void reciveDataFromClient(NBTTagCompound nbt, EntityPlayer player) + public void tick() { - if(nbt.hasKey("up")) - update = true; - - if(nbt.hasKey("startCreateDisk")) - { - int disksize = nbt.getInteger("startCreateDisk"); - ItemStack itemin = block_inv_content.get(1); - ItemStack itemout = block_inv_content.get(2); - - if(itemout.isEmpty() && !itemin.isEmpty() && itemin.getCount() > 0 && disksize > 0 && disksize <= memory) - { - if(!prosses) - { - time = 0; - createProsses = 0; - diskSize = disksize; - prosses = true; - memory -= disksize; - update = true; - markDirty(); - if(itemin.getCount() == 1) - { - block_inv_content.set(1, ItemStack.EMPTY); - } - else - { - itemin.setCount(itemin.getCount()-1); - } - } - } - } - /*if(nbt.hasKey("createDisk")) + ItemStack i = block_inv_content.get(0); + if(!i.isEmpty()) { - int disksize = nbt.getInteger("createDisk"); - ItemStack itemin = block_inv_content.get(1); - if(block_inv_content.get(2).isEmpty() && !itemin.isEmpty() && itemin.getCount() > 0 && disksize <= memory) + if(DiskUtils.validFluidPart(i)) { - ItemStack itemstack_diskcustom = new ItemStack(STItems.item_fluiddiskcustom); - itemstack_diskcustom.getItem().onCreated(itemstack_diskcustom, world, player); - NBTTagCompound nbtitemdisk = itemstack_diskcustom.getTagCompound(); - - if(nbtitemdisk == null) - nbtitemdisk = new NBTTagCompound(); - - nbtitemdisk.setInteger("st_cap", disksize); - - UUID id = UUID.randomUUID(); - API.instance().getStorageDiskManager(world).set(id, API.instance().createDefaultFluidDisk(world, disksize)); - API.instance().getStorageDiskManager(world).markForSaving(); - - nbtitemdisk.setUniqueId("Id", id); - - itemstack_diskcustom.setTagCompound(nbtitemdisk); - - block_inv_content.set(2, itemstack_diskcustom); - if(itemin.getCount() == 1) - { - block_inv_content.set(1, ItemStack.EMPTY); - } - else - { - itemin.setCount(itemin.getCount()-1); - } - - memory -= disksize; - update = true; + long memadd = DiskUtils.getMemoryFromFluidPart(i); + memory += memadd; + //update = true; + block_inv_content.set(0, ItemStack.EMPTY); markDirty(); + world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), Constants.BlockFlags.BLOCK_UPDATE); } - }*/ + } + + if(!world.isRemote) + update_prosses(); + //super.update(); + } + + public int countUpgrade() + { + int u = 1; + if(!block_inv_content.get(3).isEmpty()) + u *= 4; + if(!block_inv_content.get(4).isEmpty()) + u *= 4; + if(!block_inv_content.get(5).isEmpty()) + u *= 4; + if(!block_inv_content.get(6).isEmpty()) + u *= 4; + + return u; } @Override - public void onPlayerOpenGUISendData(NBTTagCompound nbt, EntityPlayer player) + public void readFromNBT(CompoundNBT tag) { - nbt.setLong("memory", memory); - nbt.setInteger("max", Math.min(Config.DiskMaxSize, Tools.limiteLTI(memory))); + if(tag.contains("memory")) + memory = tag.getLong("memory"); - nbt.setBoolean("prosses", prosses); - nbt.setFloat("prossestime", (createProsses/(float)diskSize)); + if(tag.contains("inv")) + ItemStackHelper.loadAllItems(tag.getCompound("inv"), block_inv_content); - nbt.setInteger("energy", energyBuffer.energy); - nbt.setInteger("capacity", energyBuffer.capacity); - nbt.setBoolean("encd", Config.EnableCostDisk); + energyBuffer.ReadFromNBT(tag); + + if(tag.contains("prosses")) + prosses = tag.getBoolean("prosses"); + + if(tag.contains("time")) + time = tag.getInt("time"); + + if(tag.contains("createprosses")) + createProsses = tag.getInt("createprosses"); + + if(tag.contains("disksize")) + diskSize = tag.getInt("disksize"); + + markDirty(); } @Override - public NBTTagCompound updateData() + public CompoundNBT writeToNBT(CompoundNBT tag) { - if(update) - { - update = false; - NBTTagCompound nbt_update = new NBTTagCompound(); - nbt_update.setLong("memory", memory); - nbt_update.setInteger("max", Math.min(Config.DiskMaxSize, Tools.limiteLTI(memory))); - - nbt_update.setBoolean("prosses", prosses); - nbt_update.setFloat("prossestime", (createProsses/(float)diskSize)); - - nbt_update.setInteger("energy", energyBuffer.energy); - nbt_update.setInteger("capacity", energyBuffer.capacity); - nbt_update.setBoolean("encd", Config.EnableCostDisk); - return nbt_update; - } - return null; + tag.putLong("memory", memory); + + CompoundNBT nbt_inv = new CompoundNBT(); + ItemStackHelper.saveAllItems(nbt_inv, block_inv_content); + tag.put("inv", nbt_inv); + + energyBuffer.WriteToNBT(tag); + + tag.putBoolean("prosses", prosses); + tag.putInt("time", time); + tag.putInt("createprosses", createProsses); + tag.putInt("disksize", diskSize); + + return tag; } - + @Override - public void read(NBTTagCompound tag) + protected void readFromServer(CompoundNBT tag) { - if(tag.hasKey("memory")) + if(tag.contains("memory")) memory = tag.getLong("memory"); - if(tag.hasKey("inv")) - ItemStackHelper.loadAllItems(tag.getCompoundTag("inv"), block_inv_content); + if(tag.contains("inv")) + ItemStackHelper.loadAllItems(tag.getCompound("inv"), block_inv_content); energyBuffer.ReadFromNBT(tag); - if(tag.hasKey("prosses")) + if(tag.contains("prosses")) prosses = tag.getBoolean("prosses"); - if(tag.hasKey("time")) - time = tag.getInteger("time"); + if(tag.contains("time")) + time = tag.getInt("time"); - if(tag.hasKey("createprosses")) - createProsses = tag.getInteger("createprosses"); + if(tag.contains("createprosses")) + createProsses = tag.getInt("createprosses"); - if(tag.hasKey("disksize")) - diskSize = tag.getInteger("disksize"); - - markDirty(); + if(tag.contains("disksize")) + diskSize = tag.getInt("disksize"); } - + @Override - public NBTTagCompound write(NBTTagCompound tag) + protected CompoundNBT writeToClient(CompoundNBT tag) { - tag.setLong("memory", memory); + tag.putLong("memory", memory); - NBTTagCompound nbt_inv = new NBTTagCompound(); + CompoundNBT nbt_inv = new CompoundNBT(); ItemStackHelper.saveAllItems(nbt_inv, block_inv_content); - tag.setTag("inv", nbt_inv); + tag.put("inv", nbt_inv); energyBuffer.WriteToNBT(tag); - tag.setBoolean("prosses", prosses); - tag.setInteger("time", time); - tag.setInteger("createprosses", createProsses); - tag.setInteger("disksize", diskSize); + tag.putBoolean("prosses", prosses); + tag.putInt("time", time); + tag.putInt("createprosses", createProsses); + tag.putInt("disksize", diskSize); return tag; } @Override - public void update() + public CompoundNBT getUpdateTag() { - ItemStack i = block_inv_content.get(0); - if(!i.isEmpty()) - { - if(DiskUtils.validFluidDisk(i)) - { - long memadd = DiskUtils.getMemoryFromFluidDisk(i); - memory += memadd; - update = true; - block_inv_content.set(0, ItemStack.EMPTY); - markDirty(); - } - /*if(i.getItem().equals(RSItems.FLUID_STORAGE_PART)) - { - int dam = i.getItemDamage(); - int quant = i.getCount(); - long memadd = (long) (Math.pow(2, dam+6)*quant*1000); - if(memadd + memory > memory) - { - memory += memadd; - update = true; - block_inv_content.set(0, ItemStack.EMPTY); - markDirty(); - } - } - else if(i.getItem().equals(STItems.item_memory) && i.getItemDamage() == 1 && i.getTagCompound() != null) - { - memory += i.getTagCompound().getLong("memory"); - update = true; - block_inv_content.set(0, ItemStack.EMPTY); - markDirty(); - }*/ - } + CompoundNBT nbt = super.getUpdateTag(); - update_prosses(); - super.update(); - } - - public int countUpgrade() - { - int u = 1; - if(!block_inv_content.get(3).isEmpty()) - u *= 4; - if(!block_inv_content.get(4).isEmpty()) - u *= 4; - if(!block_inv_content.get(5).isEmpty()) - u *= 4; - if(!block_inv_content.get(6).isEmpty()) - u *= 4; + //send server config to client + CompoundNBT nbt_cfg = new CompoundNBT(); + nbt_cfg.putLong("BP", pos.toLong()); - return u; + nbt_cfg.putInt("DMS",CommonConfig.Value_DiskMaxSize); + nbt_cfg.putInt("DFMS",CommonConfig.Value_DiskFluidMaxSize); + nbt_cfg.putBoolean("ECD",CommonConfig.Value_EnableCostDisk); + nbt_cfg.putInt("ECPS",CommonConfig.Value_EnergyCostPerSize); + nbt_cfg.putInt("TCPS",CommonConfig.Value_TimeCostPerSize); + nbt_cfg.putInt("PAS",CommonConfig.Value_ProssesAdvancementSize); + nbt_cfg.putInt("PASF",CommonConfig.Value_ProssesAdvancementSizeFluid); + + nbt.put("cfg", nbt_cfg); + return nbt; } - + @Override - public String getName() + public void handleUpdateTag(CompoundNBT nbt) { - return "fluiddiskWB"; + super.handleUpdateTag(nbt); + + //update configuration from server + if(nbt.contains("cfg")) + { + CompoundNBT nbt_cfg = nbt.getCompound("cfg"); + + pos = BlockPos.fromLong(nbt_cfg.getLong("BP")); + + CommonConfig.Value_DiskMaxSize = nbt_cfg.getInt("DMS"); + CommonConfig.Value_DiskFluidMaxSize = nbt_cfg.getInt("DFMS"); + CommonConfig.Value_EnableCostDisk = nbt_cfg.getBoolean("ECD"); + CommonConfig.Value_EnergyCostPerSize = nbt_cfg.getInt("ECPS"); + CommonConfig.Value_TimeCostPerSize = nbt_cfg.getInt("TCPS"); + CommonConfig.Value_ProssesAdvancementSize = nbt_cfg.getInt("PAS"); + CommonConfig.Value_ProssesAdvancementSizeFluid = nbt_cfg.getInt("PASF"); + } } + // ---------------- INVENTORY ---------------- @Override - public boolean hasCustomName() + public void clear() { - return false; + block_inv_content.clear(); } @Override @@ -362,85 +356,86 @@ public void setInventorySlotContents(int index, ItemStack stack) } @Override - public int getInventoryStackLimit() - { - return 64; - } - - @Override - public boolean isUsableByPlayer(EntityPlayer player) + public boolean isUsableByPlayer(PlayerEntity player) { return true; } - - @Override - public void openInventory(EntityPlayer player) - { - - } - - @Override - public void closeInventory(EntityPlayer player) - { - - } - + @Override - public boolean isItemValidForSlot(int index, ItemStack stack) + public boolean isItemValidForSlot(int slot, ItemStack stack) { - if(index >= 2 && index <= 6) - return false; - else if(index == 0) + if(slot == 0) { - return DiskUtils.validFluidDisk(stack); - //return stack.getItem().equals(RSItems.FLUID_STORAGE_PART) || (stack.getItem().equals(STItems.item_memory) && stack.getItemDamage() == 1); + ItemStack slot_itemStack = block_inv_content.get(0); + if(slot_itemStack.isEmpty()) + return DiskUtils.validFluidPart(stack); + if(slot_itemStack.getCount() < slot_itemStack.getMaxStackSize() && slot_itemStack.isItemEqual(stack)) + return true; } - else + else if(slot == 1) { - return stack.isItemEqualIgnoreDurability(new ItemStack(RSItems.STORAGE_HOUSING)); + ItemStack slot_itemStack = block_inv_content.get(1); + if(slot_itemStack.isEmpty()) + return stack.getItem() == RSItems.STORAGE_HOUSING; + if(slot_itemStack.getCount() < slot_itemStack.getMaxStackSize() && slot_itemStack.isItemEqual(stack)) + return true; } + return false; } - - @Override - public int getField(int id) - { - return 0; - } - + @Override - public void setField(int id, int value) + public LazyOptional getCapability(Capability cap, Direction side) { + if(cap == CapabilityEnergy.ENERGY) + { + return energyProxyCap.cast(); + } + return super.getCapability(cap, side); } + @Override - public int getFieldCount() + public Container createMenu(int windowid, PlayerInventory playerInv, PlayerEntity player) { - return 0; + return new ContainerFluidDiskWorkbench(windowid, this, playerInv); } @Override - public void clear() - { - block_inv_content.clear(); - } - - @Override - public boolean hasCapability(Capability capability, EnumFacing facing) + public ITextComponent getDisplayName() { - return capability == CapabilityEnergy.ENERGY || - super.hasCapability(capability, facing); + return new TranslationTextComponent("fluiddiskworkbench"); } - + @Override - public T getCapability(Capability capability, EnumFacing facing) + public void createDisk(int disksize) { - if(capability == CapabilityEnergy.ENERGY) + ItemStack itemin = block_inv_content.get(1); + ItemStack itemout = block_inv_content.get(2); + + if(itemout.isEmpty() && !itemin.isEmpty() && itemin.getCount() > 0 && disksize > 0 && disksize <= memory) { - return (T) energyBuffer; + if(!prosses) + { + time = 0; + createProsses = 0; + diskSize = disksize; + prosses = true; + memory -= disksize; + + markDirty(); + world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), Constants.BlockFlags.BLOCK_UPDATE); + + if(itemin.getCount() == 1) + { + block_inv_content.set(1, ItemStack.EMPTY); + } + else + { + itemin.setCount(itemin.getCount()-1); + } + } } - return super.getCapability(capability, facing); } - } diff --git a/java/javapower/storagetech/tileentity/TileEntityFluidDiskWorkbench.java.dis b/java/javapower/storagetech/tileentity/TileEntityFluidDiskWorkbench.java.dis deleted file mode 100644 index 8d43b74..0000000 --- a/java/javapower/storagetech/tileentity/TileEntityFluidDiskWorkbench.java.dis +++ /dev/null @@ -1,259 +0,0 @@ -package javapower.storagetech.tileentity; - -import java.util.UUID; - -import com.raoulvdberge.refinedstorage.RSItems; -import com.raoulvdberge.refinedstorage.apiimpl.API; - -import javapower.storagetech.core.Config; -import javapower.storagetech.item.STItems; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.ItemStackHelper; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.NonNullList; - -public class TileEntityFluidDiskWorkbench2 extends TileEntitySynchronized implements IInventory -{ - public long memory = 0l; - boolean update = true; - public NonNullList block_inv_content = NonNullList.withSize(3, ItemStack.EMPTY); - - @Override - public void reciveDataFromClient(NBTTagCompound nbt, EntityPlayer player) - { - if(nbt.hasKey("createDisk")) - { - int disksize = nbt.getInteger("createDisk"); - ItemStack itemin = block_inv_content.get(1); - if(block_inv_content.get(2).isEmpty() && !itemin.isEmpty() && itemin.getCount() > 0 && disksize <= memory) - { - ItemStack itemstack_diskcustom = new ItemStack(STItems.item_fluiddiskcustom); - itemstack_diskcustom.getItem().onCreated(itemstack_diskcustom, world, player); - NBTTagCompound nbtitemdisk = itemstack_diskcustom.getTagCompound(); - - if(nbtitemdisk == null) - nbtitemdisk = new NBTTagCompound(); - - nbtitemdisk.setInteger("st_cap", disksize); - - UUID id = UUID.randomUUID(); - API.instance().getStorageDiskManager(world).set(id, API.instance().createDefaultFluidDisk(world, disksize)); - API.instance().getStorageDiskManager(world).markForSaving(); - - nbtitemdisk.setUniqueId("Id", id); - - itemstack_diskcustom.setTagCompound(nbtitemdisk); - - block_inv_content.set(2, itemstack_diskcustom); - if(itemin.getCount() == 1) - { - block_inv_content.set(1, ItemStack.EMPTY); - } - else - { - itemin.setCount(itemin.getCount()-1); - } - - memory -= disksize; - update = true; - markDirty(); - } - } - } - - @Override - public void onPlayerOpenGUISendData(NBTTagCompound nbt, EntityPlayer player) - { - nbt.setLong("memory", memory); - nbt.setLong("max", Config.DiskFluidMaxSize); - } - - @Override - public NBTTagCompound updateData() - { - if(update) - { - update = false; - NBTTagCompound nbt_update = new NBTTagCompound(); - nbt_update.setLong("memory", memory); - nbt_update.setLong("max", Config.DiskFluidMaxSize); - return nbt_update; - } - return null; - } - - @Override - public void read(NBTTagCompound tag) - { - if(tag.hasKey("memory")) - memory = tag.getLong("memory"); - - if(tag.hasKey("inv")) - ItemStackHelper.loadAllItems(tag.getCompoundTag("inv"), block_inv_content); - - markDirty(); - } - - @Override - public NBTTagCompound write(NBTTagCompound tag) - { - tag.setLong("memory", memory); - - NBTTagCompound nbt_inv = new NBTTagCompound(); - ItemStackHelper.saveAllItems(nbt_inv, block_inv_content); - tag.setTag("inv", nbt_inv); - - return tag; - } - - @Override - public void update() - { - ItemStack i = block_inv_content.get(0); - if(!i.isEmpty()) - { - if(i.getItem().equals(RSItems.FLUID_STORAGE_PART)) - { - int dam = i.getItemDamage(); - int quant = i.getCount(); - long memadd = (long) (Math.pow(2, dam+6)*quant*1000); - if(memadd + memory > memory) - { - memory += memadd; - update = true; - block_inv_content.set(0, ItemStack.EMPTY); - markDirty(); - } - } - else if(i.getItem().equals(STItems.item_memory) && i.getItemDamage() == 1 && i.getTagCompound() != null) - { - memory += i.getTagCompound().getLong("memory"); - update = true; - block_inv_content.set(0, ItemStack.EMPTY); - markDirty(); - } - } - super.update(); - } - - @Override - public String getName() - { - return "fluiddiskWB"; - } - - @Override - public boolean hasCustomName() - { - return false; - } - - @Override - public int getSizeInventory() - { - return block_inv_content.size(); - } - - @Override - public boolean isEmpty() - { - for(ItemStack is: block_inv_content) - if(!is.isEmpty()) - return false; - - return true; - } - - @Override - public ItemStack getStackInSlot(int index) - { - if(index < block_inv_content.size()) - return block_inv_content.get(index); - - return ItemStack.EMPTY; - } - - @Override - public ItemStack decrStackSize(int index, int count) - { - return ItemStackHelper.getAndSplit(block_inv_content, index, count); - } - - @Override - public ItemStack removeStackFromSlot(int index) - { - return ItemStackHelper.getAndRemove(block_inv_content, index); - } - - @Override - public void setInventorySlotContents(int index, ItemStack stack) - { - block_inv_content.set(index, stack); - } - - @Override - public int getInventoryStackLimit() - { - return 64; - } - - @Override - public boolean isUsableByPlayer(EntityPlayer player) - { - return true; - } - - @Override - public void openInventory(EntityPlayer player) - { - - } - - @Override - public void closeInventory(EntityPlayer player) - { - - } - - @Override - public boolean isItemValidForSlot(int index, ItemStack stack) - { - if(index == 2) - return false; - else if(index == 0) - { - return stack.getItem().equals(RSItems.FLUID_STORAGE_PART) || (stack.getItem().equals(STItems.item_memory) && stack.getItemDamage() == 1); - } - else - { - return stack.isItemEqualIgnoreDurability(new ItemStack(RSItems.STORAGE_HOUSING)); - } - } - - @Override - public int getField(int id) - { - return 0; - } - - @Override - public void setField(int id, int value) - { - - } - - @Override - public int getFieldCount() - { - return 0; - } - - @Override - public void clear() - { - block_inv_content.clear(); - } - -} diff --git a/java/javapower/storagetech/tileentity/TileEntitySynchronized.java b/java/javapower/storagetech/tileentity/TileEntitySynchronized.java deleted file mode 100644 index 58689fa..0000000 --- a/java/javapower/storagetech/tileentity/TileEntitySynchronized.java +++ /dev/null @@ -1,57 +0,0 @@ -package javapower.storagetech.tileentity; - -import java.util.ArrayList; -import java.util.List; - -import javapower.storagetech.util.ITileUpdate; -import javapower.storagetech.util.NetworkUtils; -import javapower.storagetech.util.Tools; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ITickable; - -public abstract class TileEntitySynchronized extends TileEntityBase implements ITileUpdate, ITickable -{ - public List players = new ArrayList(); - - @Override - public void addOrRemovePlayer(EntityPlayerMP player, boolean isAdded) - { - if(isAdded) - { - if(players.isEmpty()) - { - players.add(player); - } - else - { - if(!Tools.PlayerIsOnList(players, player)) - { - players.add(player); - } - } - } - else - { - Tools.RemovePlayerOnList(players, player); - } - } - - @Override - public void update() - { - if(!players.isEmpty()) - { - NBTTagCompound update = updateData(); - if(update != null) - { - for(EntityPlayerMP pl : players) - { - if(pl != null) - NetworkUtils.sendToPlayerTheData(this, update, pl); - } - } - } - } - -} diff --git a/java/javapower/storagetech/util/BlockPosDim.java b/java/javapower/storagetech/util/BlockPosDim.java deleted file mode 100644 index 32cd82b..0000000 --- a/java/javapower/storagetech/util/BlockPosDim.java +++ /dev/null @@ -1,214 +0,0 @@ -package javapower.storagetech.util; - -import net.minecraft.block.state.IBlockState; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.WorldServer; -import net.minecraftforge.common.DimensionManager; - -public class BlockPosDim -{ - BlockPos pos; - int dimID; - - public BlockPosDim(BlockPos _pos, int _dimID) - { - pos = _pos; - dimID = _dimID; - } - - public BlockPosDim() - { - pos = new BlockPos(0, 0, 0); - dimID = 0; - } - - public BlockPosDim(int x, int y, int z, int d) - { - pos = new BlockPos(x, y, z); - dimID = d; - } - - public BlockPosDim(String seed) - { - this(); - if(seed != null && seed.contains("-")) - { - String[] s = seed.split("-"); - if(s != null && s.length == 4) - { - int x = 0,y = 0,z = 0,d = 0; - try - { - x = Integer.parseInt(s[0].substring(1)); - } - catch (StringIndexOutOfBoundsException | NumberFormatException e) - { - e.printStackTrace(); - } - - try - { - y = Integer.parseInt(s[1].substring(1)); - } - catch (StringIndexOutOfBoundsException | NumberFormatException e) - { - e.printStackTrace(); - } - - try - { - z = Integer.parseInt(s[2].substring(1)); - } - catch (StringIndexOutOfBoundsException | NumberFormatException e) - { - e.printStackTrace(); - } - - try - { - d = Integer.parseInt(s[3].substring(1)); - } - catch (StringIndexOutOfBoundsException | NumberFormatException e) - { - e.printStackTrace(); - } - - pos = new BlockPos(x, y, z); - dimID = d; - } - } - } - - public BlockPosDim(NBTTagCompound nbt, String name) - { - if(nbt != null && name != null && nbt.hasKey(name)) - { - NBTTagCompound inbt = nbt.getCompoundTag(name); - dimID = inbt.getInteger("D"); - pos = new BlockPos(inbt.getInteger("X"), inbt.getInteger("Y"), inbt.getInteger("Z")); - } - else - { - pos = new BlockPos(0, 0, 0); - } - } - - public void WriteToNBT(NBTTagCompound nbt, String name) - { - if(nbt != null && name != null) - { - NBTTagCompound inbt = new NBTTagCompound(); - - inbt.setInteger("D", dimID); - if(pos != null) - { - inbt.setInteger("X", pos.getX()); - inbt.setInteger("Y", pos.getY()); - inbt.setInteger("Z", pos.getZ()); - } - - nbt.setTag(name, inbt); - } - } - - public void ReadFromNBT(NBTTagCompound nbt, String name) - { - if(nbt != null && name != null && nbt.hasKey(name)) - { - NBTTagCompound inbt = nbt.getCompoundTag(name); - dimID = inbt.getInteger("D"); - pos = new BlockPos(inbt.getInteger("X"), inbt.getInteger("Y"), inbt.getInteger("Z")); - } - } - - public TileEntity GetTileEntity() - { - WorldServer w = DimensionManager.getWorld(dimID); - if(w == null) - return null; - return w.getTileEntity(pos); - } - - public IBlockState GetBlockState() - { - WorldServer w = DimensionManager.getWorld(dimID); - if(w == null) - return null; - return w.getBlockState(pos); - } - - public WorldServer GetWorld() - { - return DimensionManager.getWorld(dimID); - } - - public BlockPos getPos() - { - return pos; - } - - public int getDimID() - { - return dimID; - } - - public void setDimID(int _dimID) - { - dimID = _dimID; - } - - public void setPos(BlockPos _pos) - { - pos = _pos; - } - - public void setPos(int x, int y, int z) - { - pos = new BlockPos(x, y, z); - } - - public int getX() - { - return pos.getX(); - } - - public int getY() - { - return pos.getY(); - } - - public int getZ() - { - return pos.getZ(); - } - - @Override - public String toString() - { - return "x"+pos.getX()+"-y"+pos.getY()+"-z"+pos.getZ()+"-d"+dimID; - } - - public String toText() - { - return "x="+pos.getX()+",y="+pos.getY()+",z="+pos.getZ()+",d="+dimID; - } - - @Override - public boolean equals(Object obj) - { - if(obj == this) - return true; - - else if(obj instanceof BlockPosDim) - { - return dimID == ((BlockPosDim)obj).dimID && - ((BlockPosDim)obj).pos.getX() == pos.getX() && - ((BlockPosDim)obj).pos.getY() == pos.getY() && - ((BlockPosDim)obj).pos.getZ() == pos.getZ(); - } - return false; - } - -} diff --git a/java/javapower/storagetech/util/DifferentialEvent.java b/java/javapower/storagetech/util/DifferentialEvent.java deleted file mode 100644 index 85a76a1..0000000 --- a/java/javapower/storagetech/util/DifferentialEvent.java +++ /dev/null @@ -1,34 +0,0 @@ -package javapower.storagetech.util; - -import javapower.storagetech.eventio.IEventOut; - -public class DifferentialEvent -{ - T buffer; - IEventOut event; - - public DifferentialEvent(IEventOut _event) - { - event = _event; - } - - public DifferentialEvent(T defaultvalue, IEventOut _event) - { - event = _event; - buffer = defaultvalue; - } - - public void SetValue(T v) - { - if(!v.equals(buffer)) - { - buffer = v; - event.event(buffer); - } - } - - public T GetValue() - { - return buffer; - } -} diff --git a/java/javapower/storagetech/util/DiskUtils.java b/java/javapower/storagetech/util/DiskUtils.java index 3f862f7..2440e2a 100644 --- a/java/javapower/storagetech/util/DiskUtils.java +++ b/java/javapower/storagetech/util/DiskUtils.java @@ -1,135 +1,88 @@ package javapower.storagetech.util; -import javax.annotation.Nonnull; +import java.util.List; -import com.raoulvdberge.refinedstorage.RSItems; - -import javapower.storagetech.item.STItems; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class DiskUtils { - public static long getMemoryFromItemDisk(ItemStack itemstack) + private static PartValue[] item_part = {}, fluid_part = {}; + + public static void updateValidParts(List item_part2, List fluid_part2) + { + item_part = new PartValue[item_part2.size()]; + fluid_part = new PartValue[fluid_part2.size()]; + + item_part = item_part2.toArray(item_part); + fluid_part = fluid_part2.toArray(fluid_part); + } + + public static long getMemoryFromItemPart(ItemStack itemstack) { if(!itemstack.isEmpty()) { - Item item = itemstack.getItem(); - if(item != null) + for(PartValue partv : item_part) { - if(item.equals(RSItems.STORAGE_PART)) - { - int dam = itemstack.getItemDamage(); - int quant = itemstack.getCount(); - long memadd = (long) (Math.pow(2, 2*dam)*quant*1000); - return memadd; - } - else if(item.equals(Item.getByNameOrId("rebornstorage:storagepart"))) - { - int dam = itemstack.getItemDamage(); - if(dam >= 0 && dam <= 3) - { - int quant = itemstack.getCount(); - long memadd = (long) (Math.pow(2, 2*(dam+4))*quant*1000); - return memadd; - } - } - else if(item.equals(STItems.item_memory) && itemstack.getItemDamage() == 0 && itemstack.getTagCompound() != null) - { - return itemstack.getTagCompound().getLong("memory"); - } + if(partv.getItem() == itemstack.getItem()) + return partv.getValue(); } } + return 0; } - public static long getMemoryFromFluidDisk(ItemStack itemstack) + public static long getMemoryFromFluidPart(ItemStack itemstack) { if(!itemstack.isEmpty()) { - Item item = itemstack.getItem(); - if(item != null) + for(PartValue partv : fluid_part) { - if(item.equals(RSItems.FLUID_STORAGE_PART)) - { - int dam = itemstack.getItemDamage(); - int quant = itemstack.getCount(); - long memadd = (long) (Math.pow(2, (dam*2)+6)*quant*1000); - return memadd; - } - else if(item.equals(Item.getByNameOrId("rebornstorage:storagepart"))) - { - int dam = itemstack.getItemDamage(); - if(dam >= 4 && dam <= 7) - { - int quant = itemstack.getCount(); - int exp = dam == 4 ? 14 : dam == 5 ? 15 : dam == 6 ? 17 : dam == 7 ? 19 : 0; - long memadd = (long) (Math.pow(2, exp)*quant*1000); - return memadd; - } - } - else if(item.equals(STItems.item_memory) && itemstack.getItemDamage() == 1 && itemstack.getTagCompound() != null) - { - return itemstack.getTagCompound().getLong("memory"); - } + if(partv.getItem() == itemstack.getItem()) + return partv.getValue(); } } + return 0; } - public static boolean validItemDisk(ItemStack itemstack) + public static boolean validItemPart(ItemStack itemstack) { if(!itemstack.isEmpty()) { Item item = itemstack.getItem(); if(item != null) { - if(item.equals(RSItems.STORAGE_PART)) - { + String path = item.getRegistryName().getPath(); + if(path.contains("_storage_part") && !path.contains("_fluid")) return true; - } - else if(item.equals(Item.getByNameOrId("rebornstorage:storagepart"))) - { - int dam = itemstack.getItemDamage(); - if(dam >= 0 && dam <= 3) - { - return true; - } - } - else if(item.equals(STItems.item_memory) && itemstack.getItemDamage() == 0 && itemstack.getTagCompound() != null) - { - return true; - } } } return false; } - public static boolean validFluidDisk(ItemStack itemstack) + public static boolean validFluidPart(ItemStack itemstack) { if(!itemstack.isEmpty()) { Item item = itemstack.getItem(); if(item != null) { - if(item.equals(RSItems.FLUID_STORAGE_PART)) - { - return true; - } - else if(item.equals(Item.getByNameOrId("rebornstorage:storagepart"))) - { - int dam = itemstack.getItemDamage(); - if(dam >= 4 && dam <= 7) - { - return true; - } - } - else if(item.equals(STItems.item_memory) && itemstack.getItemDamage() == 1 && itemstack.getTagCompound() != null) - { + String path = item.getRegistryName().getPath(); + if(path.contains("_fluid_storage_part")) return true; - } } } return false; } + + public static PartValue[] getFluidParts() + { + return fluid_part; + } + + public static PartValue[] getItemParts() + { + return item_part; + } } diff --git a/java/javapower/storagetech/util/EScreenAnchor.java b/java/javapower/storagetech/util/EScreenAnchor.java deleted file mode 100644 index bf2e300..0000000 --- a/java/javapower/storagetech/util/EScreenAnchor.java +++ /dev/null @@ -1,15 +0,0 @@ -package javapower.storagetech.util; - -public enum EScreenAnchor -{ - TOP_LEFT, - TOP_MIDDLE, - TOP_RIGHT, - MIDDLE_LEFT, - MIDDLE, - MIDDLE_RIGHT, - BOTTOM_LEFT, - BOTTOM_MIDDLE, - BOTTOM_RIGHT; - -} diff --git a/java/javapower/storagetech/util/EnergyBuffer.java b/java/javapower/storagetech/util/EnergyBuffer.java index 80b7682..8a5041a 100644 --- a/java/javapower/storagetech/util/EnergyBuffer.java +++ b/java/javapower/storagetech/util/EnergyBuffer.java @@ -1,8 +1,7 @@ package javapower.storagetech.util; import javapower.storagetech.eventio.IEventVoid; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraftforge.energy.EnergyStorage; +import net.minecraft.nbt.CompoundNBT; import net.minecraftforge.energy.IEnergyStorage; public class EnergyBuffer implements IEnergyStorage @@ -92,18 +91,18 @@ public boolean canReceive() return this.maxReceive > 0; } - public void WriteToNBT(NBTTagCompound nbt) + public void WriteToNBT(CompoundNBT nbt) { - nbt.setInteger("energy", energy); + nbt.putInt("energy", energy); } - public boolean ReadFromNBT(NBTTagCompound nbt) + public boolean ReadFromNBT(CompoundNBT nbt) { - if(nbt.hasKey("energy")) + if(nbt.contains("energy")) { - energy = nbt.getInteger("energy"); + energy = nbt.getInt("energy"); return true; } return false; } -} +} \ No newline at end of file diff --git a/java/javapower/storagetech/util/EnergyUtils.java b/java/javapower/storagetech/util/EnergyUtils.java deleted file mode 100644 index b4a93d9..0000000 --- a/java/javapower/storagetech/util/EnergyUtils.java +++ /dev/null @@ -1,30 +0,0 @@ -package javapower.storagetech.util; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumFacing; -import net.minecraftforge.energy.CapabilityEnergy; -import net.minecraftforge.energy.IEnergyStorage; - -public class EnergyUtils -{ - public static void emit(TileEntity tile, IEnergyStorage emitter, EnumFacing output) - { - if(!tile.getWorld().isRemote) - { - int energyToSend = Math.min(emitter.getEnergyStored(), emitter.getMaxEnergyStored()); - - if(energyToSend > 0) - { - TileEntity te_insert = tile.getWorld().getTileEntity(tile.getPos().offset(output)); - if(te_insert != null && te_insert.hasCapability(CapabilityEnergy.ENERGY, output.getOpposite())) - { - IEnergyStorage es = te_insert.getCapability(CapabilityEnergy.ENERGY, output.getOpposite()); - if(es.canReceive()) - { - emitter.extractEnergy(es.receiveEnergy(energyToSend, false), false); - } - } - } - } - } -} diff --git a/java/javapower/storagetech/util/GuiUtils.java b/java/javapower/storagetech/util/GuiUtils.java deleted file mode 100644 index 79cb320..0000000 --- a/java/javapower/storagetech/util/GuiUtils.java +++ /dev/null @@ -1,59 +0,0 @@ -package javapower.storagetech.util; - -import io.netty.channel.embedded.EmbeddedChannel; -import net.minecraft.block.Block; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.inventory.Container; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.common.util.FakePlayer; -import net.minecraftforge.fml.common.FMLCommonHandler; -import net.minecraftforge.fml.common.FMLLog; -import net.minecraftforge.fml.common.ModContainer; -import net.minecraftforge.fml.common.network.FMLOutboundHandler; -import net.minecraftforge.fml.common.network.NetworkRegistry; -import net.minecraftforge.fml.common.network.FMLOutboundHandler.OutboundTarget; -import net.minecraftforge.fml.common.network.internal.FMLMessage; -import net.minecraftforge.fml.common.network.internal.FMLNetworkHandler; -import net.minecraftforge.fml.relauncher.Side; - -public class GuiUtils -{ - public static GuiContainer getGuiContainer(World world, BlockPos pos, EntityPlayer player) - { - Block block = world.getBlockState(pos).getBlock(); - if(block != null && block instanceof IGuiRegister) - return ((IGuiRegister)block).getGui(world.getTileEntity(pos), player); - - return null; - } - - public static Container getContainer(World world, BlockPos pos, EntityPlayer player) - { - Block block = world.getBlockState(pos).getBlock(); - if(block != null && block instanceof IGuiRegister) - return ((IGuiRegister)block).getContainer(world.getTileEntity(pos), player); - - return null; - } - - public static void openGui(EntityPlayer entityPlayer, Object mod, int modGuiId, World world, BlockPos pos) - { - ModContainer mc = FMLCommonHandler.instance().findContainerFor(mod); - if (entityPlayer instanceof EntityPlayerMP && !(entityPlayer instanceof FakePlayer)) - { - FMLNetworkHandler.openGui(entityPlayer, mod, modGuiId, world, pos.getX(), pos.getY(), pos.getZ()); - } - else if (entityPlayer instanceof FakePlayer && FMLCommonHandler.instance().getSide().equals(Side.CLIENT)) - { - NetworkUtils.sendToServerOpenGui(mc, entityPlayer, modGuiId, world.getTileEntity(pos)); - } - else - { - FMLLog.log.debug("Invalid attempt to open a local GUI on a dedicated server. This is likely a bug. GUI ID: {},{}", mc.getModId(), modGuiId); - } - - } -} diff --git a/java/javapower/storagetech/util/IBlockRegister.java b/java/javapower/storagetech/util/IBlockRegister.java deleted file mode 100644 index 66f5794..0000000 --- a/java/javapower/storagetech/util/IBlockRegister.java +++ /dev/null @@ -1,8 +0,0 @@ -package javapower.storagetech.util; - -import net.minecraft.block.Block; - -public interface IBlockRegister extends IItemRegister -{ - public Block getBlock(); -} diff --git a/java/javapower/storagetech/util/IGUITileSync.java b/java/javapower/storagetech/util/IGUITileSync.java deleted file mode 100644 index b03aa56..0000000 --- a/java/javapower/storagetech/util/IGUITileSync.java +++ /dev/null @@ -1,10 +0,0 @@ -package javapower.storagetech.util; - -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; - -public interface IGUITileSync -{ - public Class tileEntityLink(); - public void reciveDataFromServer(NBTTagCompound nbt); -} diff --git a/java/javapower/storagetech/util/IGuiRegister.java b/java/javapower/storagetech/util/IGuiRegister.java deleted file mode 100644 index 0104db8..0000000 --- a/java/javapower/storagetech/util/IGuiRegister.java +++ /dev/null @@ -1,15 +0,0 @@ -package javapower.storagetech.util; - -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -public interface IGuiRegister -{ - @SideOnly(Side.CLIENT) - public GuiContainer getGui(TileEntity tile, EntityPlayer player); - public Container getContainer(TileEntity tile, EntityPlayer player); -} diff --git a/java/javapower/storagetech/util/IItemRegister.java b/java/javapower/storagetech/util/IItemRegister.java deleted file mode 100644 index b23466a..0000000 --- a/java/javapower/storagetech/util/IItemRegister.java +++ /dev/null @@ -1,8 +0,0 @@ -package javapower.storagetech.util; - -import net.minecraft.item.Item; - -public interface IItemRegister -{ - public Item getItem(); -} diff --git a/java/javapower/storagetech/util/IRenderItemRegister.java b/java/javapower/storagetech/util/IRenderItemRegister.java deleted file mode 100644 index edcb382..0000000 --- a/java/javapower/storagetech/util/IRenderItemRegister.java +++ /dev/null @@ -1,10 +0,0 @@ -package javapower.storagetech.util; - -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -public interface IRenderItemRegister -{ - @SideOnly(Side.CLIENT) - public ItemRenderCast[] getItemsRender(); -} diff --git a/java/javapower/storagetech/util/ITileRegister.java b/java/javapower/storagetech/util/ITileRegister.java deleted file mode 100644 index 974dd45..0000000 --- a/java/javapower/storagetech/util/ITileRegister.java +++ /dev/null @@ -1,6 +0,0 @@ -package javapower.storagetech.util; - -public interface ITileRegister -{ - public TileNamed[] getTilesEntity(); -} diff --git a/java/javapower/storagetech/util/ITileUpdate.java b/java/javapower/storagetech/util/ITileUpdate.java deleted file mode 100644 index b663900..0000000 --- a/java/javapower/storagetech/util/ITileUpdate.java +++ /dev/null @@ -1,13 +0,0 @@ -package javapower.storagetech.util; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.nbt.NBTTagCompound; - -public interface ITileUpdate -{ - public void reciveDataFromClient(NBTTagCompound nbt, EntityPlayer player); - public void onPlayerOpenGUISendData(NBTTagCompound nbt, EntityPlayer player); - public NBTTagCompound updateData(); - public void addOrRemovePlayer(EntityPlayerMP player, boolean isAdded); -} diff --git a/java/javapower/storagetech/util/ItemRenderCast.java b/java/javapower/storagetech/util/ItemRenderCast.java deleted file mode 100644 index 5653d19..0000000 --- a/java/javapower/storagetech/util/ItemRenderCast.java +++ /dev/null @@ -1,26 +0,0 @@ -package javapower.storagetech.util; - -import javapower.storagetech.core.StorageTech; -import net.minecraft.client.renderer.block.model.ModelResourceLocation; - -public class ItemRenderCast -{ - private int meta; - private String variant; - - public ItemRenderCast(int _meta, String _variant) - { - meta = _meta; - variant = _variant; - } - - public int getMetadata() - { - return meta; - } - - public ModelResourceLocation getModelRL(String registeryN) - { - return new ModelResourceLocation(StorageTech.MODID+":"+registeryN, variant); - } -} diff --git a/java/javapower/storagetech/util/NetworkUtils.java b/java/javapower/storagetech/util/NetworkUtils.java deleted file mode 100644 index f61c8b9..0000000 --- a/java/javapower/storagetech/util/NetworkUtils.java +++ /dev/null @@ -1,62 +0,0 @@ -package javapower.storagetech.util; - -import javapower.storagetech.message.ClientBuffer; -import javapower.storagetech.message.NetworkTileSync; -import javapower.storagetech.proxy.CommonProxy; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.fml.common.ModContainer; -import net.minecraftforge.fml.common.network.NetworkRegistry; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -public class NetworkUtils -{ - @SideOnly(Side.CLIENT) - public static void sendToServerPlayerAsOpenGUI(TileEntity te, IGUITileSync gui) - { - NBTTagCompound tag_inf = new NBTTagCompound(); - tag_inf.setString("te", gui.tileEntityLink().getName()); - tag_inf.setInteger("lk", 1); - CommonProxy.network_TileSynchroniser.sendToServer(new NetworkTileSync(new BlockPosDim(te.getPos(), te.getWorld().provider.getDimension()), new NBTTagCompound(), tag_inf)); - } - - @SideOnly(Side.CLIENT) - public static void sendToServerPlayerStopOpenGUI(BlockPosDim posdim) - { - NBTTagCompound tag_inf = new NBTTagCompound(); - tag_inf.setInteger("lk", 3); - CommonProxy.network_TileSynchroniser.sendToServer(new NetworkTileSync(posdim, new NBTTagCompound(), tag_inf)); - } - - public static void sendToPlayerTheData(TileEntity te, NBTTagCompound nbt, EntityPlayerMP player) - { - CommonProxy.network_TileSynchroniser.sendTo(new NetworkTileSync(new BlockPosDim(te.getPos(), te.getWorld().provider.getDimension()), nbt, new NBTTagCompound()), player); - } - - @SideOnly(Side.CLIENT) - public static void sendToServerTheData(TileEntity te, IGUITileSync gui, NBTTagCompound nbt) - { - NBTTagCompound tag_inf = new NBTTagCompound(); - tag_inf.setString("te", gui.tileEntityLink().getName()); - tag_inf.setInteger("lk", 2); - CommonProxy.network_TileSynchroniser.sendToServer(new NetworkTileSync(new BlockPosDim(te.getPos(), te.getWorld().provider.getDimension()), nbt, tag_inf)); - } - - @SideOnly(Side.CLIENT) - public static void sendToServerOpenGui(ModContainer mc, EntityPlayer entityPlayer, int modGuiId, TileEntity te) - { - Object guiContainer = NetworkRegistry.INSTANCE.getLocalGuiContainer(mc, entityPlayer, modGuiId, te.getWorld(), te.getPos().getX(), te.getPos().getY(), te.getPos().getZ()); - if(guiContainer instanceof GuiScreen && guiContainer instanceof IGUITileSync) - { - ClientBuffer.currentGuiBuilder = (GuiScreen) guiContainer; - NBTTagCompound tag_inf = new NBTTagCompound(); - tag_inf.setString("te", ((IGUITileSync) guiContainer).tileEntityLink().getName()); - tag_inf.setInteger("lk", 4); - CommonProxy.network_TileSynchroniser.sendToServer(new NetworkTileSync(new BlockPosDim(te.getPos(), te.getWorld().provider.getDimension()), new NBTTagCompound(), tag_inf)); - } - } -} diff --git a/java/javapower/storagetech/util/PartValue.java b/java/javapower/storagetech/util/PartValue.java new file mode 100644 index 0000000..4a220dd --- /dev/null +++ b/java/javapower/storagetech/util/PartValue.java @@ -0,0 +1,23 @@ +package javapower.storagetech.util; + +import net.minecraft.item.Item; + +public class PartValue +{ + private Item item; + private long value; + + public PartValue(Item _item, long _value) + { + item = _item; + value = _value; + } + + public Item getItem() { + return item; + } + + public long getValue() { + return value; + } +} diff --git a/java/javapower/storagetech/util/RegisterUtils.java b/java/javapower/storagetech/util/RegisterUtils.java deleted file mode 100644 index a98c297..0000000 --- a/java/javapower/storagetech/util/RegisterUtils.java +++ /dev/null @@ -1,112 +0,0 @@ -package javapower.storagetech.util; - -import java.lang.reflect.Field; - -import javapower.storagetech.core.StorageTech; -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraftforge.client.model.ModelLoader; -import net.minecraftforge.fml.client.registry.ClientRegistry; -import net.minecraftforge.fml.common.registry.GameRegistry; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -import net.minecraftforge.registries.IForgeRegistry; - -public class RegisterUtils -{ - public static void RegisterItems(Field[] fields, IForgeRegistry register) - { - for(Field field : fields) - { - try - { - Object var = field.get(null); - if(var instanceof IItemRegister) - { - Item i = ((IItemRegister)var).getItem(); - if(i != null) - register.register(i); - } - } - catch (Exception ex) - { - ex.printStackTrace(); - } - } - } - - public static void RegisterBlocks(Field[] fields, IForgeRegistry register) - { - for(Field field : fields) - { - try - { - Object var = field.get(null); - if(var instanceof IBlockRegister) - { - Block b = ((IBlockRegister)var).getBlock(); - if(b != null) - register.register(b); - } - } - catch (Exception ex) - { - ex.printStackTrace(); - } - } - } - - public static void RegisterTilesEntity(Field[] fields) - { - for(Field field : fields) - { - try - { - Object var = field.get(null); - if(var instanceof ITileRegister) - { - TileNamed[] tiles = ((ITileRegister)var).getTilesEntity(); - if(tiles != null && tiles.length > 0) - for(TileNamed cte : tiles) - { - GameRegistry.registerTileEntity(cte.TClass, StorageTech.MODID + ":" + cte.TName); - } - } - } - catch (Exception ex) - { - ex.printStackTrace(); - } - } - } - - @SideOnly(Side.CLIENT) - public static void RegisterIRender(Field[] fields) - { - for(Field field : fields) - { - try - { - Object var = field.get(null); - if(var instanceof IRenderItemRegister && var instanceof IItemRegister) - { - Item item = ((IItemRegister)var).getItem(); - for(ItemRenderCast renderCast : ((IRenderItemRegister)var).getItemsRender()) - { - if(renderCast != null) - { - String name = item.getUnlocalizedName().replace("item.", ""); - if(name.startsWith("tile.")) - name = name.replace("tile.", ""); - ModelLoader.setCustomModelResourceLocation(item, renderCast.getMetadata(), renderCast.getModelRL(name)); - } - } - } - } - catch (Exception ex) - { - ex.printStackTrace(); - } - } - } -} diff --git a/java/javapower/storagetech/util/Result.java b/java/javapower/storagetech/util/Result.java deleted file mode 100644 index e01724c..0000000 --- a/java/javapower/storagetech/util/Result.java +++ /dev/null @@ -1,8 +0,0 @@ -package javapower.storagetech.util; - -public enum Result -{ - SUCCESSFUL, - DECLINE, - ERROR -} diff --git a/java/javapower/storagetech/util/TileNamed.java b/java/javapower/storagetech/util/TileNamed.java deleted file mode 100644 index 251b2cd..0000000 --- a/java/javapower/storagetech/util/TileNamed.java +++ /dev/null @@ -1,20 +0,0 @@ -package javapower.storagetech.util; - -import net.minecraft.tileentity.TileEntity; - -public class TileNamed -{ - public Class TClass; - public String TName; - - public TileNamed(Class exClass, String name) - { - TClass = exClass; - TName = name; - } - - public Class getTClass() - { - return TClass; - } -} diff --git a/java/javapower/storagetech/util/Tools.java b/java/javapower/storagetech/util/Tools.java index 6e50d29..86e6172 100644 --- a/java/javapower/storagetech/util/Tools.java +++ b/java/javapower/storagetech/util/Tools.java @@ -1,177 +1,10 @@ package javapower.storagetech.util; -import java.util.Collection; -import java.util.List; - -import org.lwjgl.input.Mouse; - -import javapower.storagetech.proxy.ClientProxy; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.Vec3d; -import net.minecraftforge.fml.common.FMLCommonHandler; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; +import net.minecraft.entity.LivingEntity; public class Tools { - public static boolean isClient() - { - return FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT; - } - - public static boolean isServer() - { - return FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER; - } - - public static AxisAlignedBB getBounds(int fromX, int fromY, int fromZ, int toX, int toY, int toZ) - { - return new AxisAlignedBB((float) fromX / 16F, (float) fromY / 16F, (float) fromZ / 16F, (float) toX / 16F, (float) toY / 16F, (float) toZ / 16F); - } - - // -- - - private static class AdvancedRayTraceResultBase - { - public final AxisAlignedBB bounds; - public final T hit; - - public AdvancedRayTraceResultBase(T mop, AxisAlignedBB bounds) - { - - this.hit = mop; - this.bounds = bounds; - } - - public boolean valid() - { - return hit != null && bounds != null; - } - - public double squareDistanceTo(Vec3d vec) - { - return hit.hitVec.squareDistanceTo(vec); - } - } - - public static class AdvancedRayTraceResult extends AdvancedRayTraceResultBase - { - public AdvancedRayTraceResult(RayTraceResult mop, AxisAlignedBB bounds) - { - super(mop, bounds); - } - } - - public static AdvancedRayTraceResult collisionRayTrace(BlockPos pos, Vec3d start, Vec3d end, Collection boxes) - { - double minDistance = Double.POSITIVE_INFINITY; - AdvancedRayTraceResult hit = null; - int i = -1; - - for (AxisAlignedBB aabb : boxes) - { - AdvancedRayTraceResult result = aabb == null ? null : collisionRayTrace(pos, start, end, aabb, i, null); - - if (result != null) - { - double d = result.squareDistanceTo(start); - if (d < minDistance) - { - minDistance = d; - hit = result; - } - } - - i++; - } - - return hit; - } - - public static AdvancedRayTraceResult collisionRayTrace(BlockPos pos, Vec3d start, Vec3d end, AxisAlignedBB bounds, int subHit, Object hitInfo) - { - RayTraceResult result = bounds.offset(pos).calculateIntercept(start, end); - - if (result == null) - { - return null; - } - - result = new RayTraceResult(RayTraceResult.Type.BLOCK, result.hitVec, result.sideHit, pos); - result.subHit = subHit; - result.hitInfo = hitInfo; - - return new AdvancedRayTraceResult(result, bounds); - } - - public static boolean PlayerIsOnList(List entityPlayers, EntityPlayerMP entityPlayer) - { - if(entityPlayers != null && !entityPlayers.isEmpty()) - for(EntityPlayer pl : entityPlayers) - { - if(pl.getUniqueID() == entityPlayer.getPersistentID()) - return true; - } - return false; - } - - public static void RemovePlayerOnList(List entityPlayers, EntityPlayerMP entityPlayer) - { - if(entityPlayers != null && !entityPlayers.isEmpty()) - { - boolean isPresent = false; - int id = 0; - for(EntityPlayer pl : entityPlayers) - { - if(pl.getUniqueID() == entityPlayer.getPersistentID()) - { - isPresent = true; - break; - } - ++id; - } - - if(isPresent) - entityPlayers.remove(id); - } - } - - @SideOnly(Side.CLIENT) - public static void GetMouseLocalisation(Vector2 mouspos, int width, int height, int xSize, int ySize) - { - int x = (width - xSize) / 2; - int y = (height - ySize) / 2; - - float guiMPX = (float)ClientProxy.minecraft.displayWidth/ (float)width; - float guiMPY = (float)ClientProxy.minecraft.getMinecraft().displayHeight/ (float)height; - float guiMP = 0; - if(guiMPX < guiMPY)guiMP = guiMPX; - else guiMP = guiMPY; - - mouspos.x = (int) ((Mouse.getX()-x*guiMP)/guiMP); - mouspos.y = (int) ((ClientProxy.minecraft.displayHeight-Mouse.getY()-y*guiMP)/guiMP); - } - - public static void GetMouseLocalisationNoMC(Vector2 mouspos, int vect, boolean middleZero) - { - if(middleZero) - { - mouspos.x = Mouse.getX()/vect - ClientProxy.minecraft.displayWidth/(2*vect); - mouspos.y = (ClientProxy.minecraft.displayHeight-Mouse.getY())/vect - ClientProxy.minecraft.displayHeight/(2*vect); - } - else - { - mouspos.x = Mouse.getX()/vect; - mouspos.y = (ClientProxy.minecraft.displayHeight-Mouse.getY())/vect; - } - } - - public static String longFormatToString(long bytes) + public static String longFormatToString(long bytes) { if (bytes < 1000) return ""+bytes; int exp = (int) (Math.log(bytes) / Math.log(1000)); @@ -179,38 +12,8 @@ public static String longFormatToString(long bytes) return String.format("%.1f %s", bytes / Math.pow(1000, exp), pre); } - public static boolean isJavaPower(EntityPlayer player) + public static boolean isJavaPower(LivingEntity player) { return player.getUniqueID().toString().equalsIgnoreCase("6d89ae8c-01f7-498c-bb36-3f76ff9dfdc9"); } - - public static int moyInteger(int[] in) - { - if(in == null || in.length <= 0) - return 0; - - int out = 0; - for(int i : in) - out += i; - - return out/in.length; - } - - public static EnumFacing getFacingForm2Blocks(BlockPos core, BlockPos satellit) - { - return EnumFacing.getFacingFromVector(satellit.getX() - core.getX(), satellit.getY() - core.getY(), satellit.getZ() - core.getZ()); - } - - public static void AddOnListIfNotPresent(List list, E element) - { - for(E e: list) - if(e.equals(element)) - return; - list.add(element); - } - - public static int limiteLTI(long v) - { - return (int) Math.min(v, Integer.MIN_VALUE-1); - } } diff --git a/java/javapower/storagetech/util/Var.java b/java/javapower/storagetech/util/Var.java deleted file mode 100644 index 45e86f6..0000000 --- a/java/javapower/storagetech/util/Var.java +++ /dev/null @@ -1,21 +0,0 @@ -package javapower.storagetech.util; - -public class Var -{ - public T var; - - public Var(T _var) - { - var = _var; - } - - public void setVar(T _var) - { - var = _var; - } - - public T getVar() - { - return var; - } -} diff --git a/java/javapower/storagetech/util/Vector2.java b/java/javapower/storagetech/util/Vector2.java deleted file mode 100644 index 0fc77f0..0000000 --- a/java/javapower/storagetech/util/Vector2.java +++ /dev/null @@ -1,70 +0,0 @@ -package javapower.storagetech.util; - -import net.minecraft.nbt.NBTTagCompound; - -public class Vector2 -{ - public int x,y; - - public Vector2(int _x, int _y) - { - x = _x; - y = _y; - } - - public Vector2() - { - x = 0; - y = 0; - } - - public Vector2 copy() - { - return new Vector2(x, y); - } - - public Vector2 copyAndAdd(int _x, int _y) - { - return new Vector2(x+_x, y+_y); - } - - public void SaveToNBT(NBTTagCompound nbt, String name) - { - nbt.setInteger(name+"X", x); - nbt.setInteger(name+"Y", y); - } - - public void ReadFromNBT(NBTTagCompound nbt, String name) - { - if(nbt.hasKey(name+"X")&&nbt.hasKey(name+"Y")) - { - x = nbt.getInteger(name+"X"); - y = nbt.getInteger(name+"Y"); - } - } - - public String toString() - { - return "[X:"+x+" Y:"+y+"]"; - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof Vector2) - { - return ((Vector2)obj).x == x && ((Vector2)obj).y == y; - } - return super.equals(obj); - } - - public boolean equals(Vector2 vec) - { - return vec.x == x && vec.y == y; - } - - public boolean equals(int _x, int _y) - { - return _x == x && _y == y; - } -} diff --git a/java/javapower/storagetech/util/Vector3.java b/java/javapower/storagetech/util/Vector3.java deleted file mode 100644 index 3d8e4ad..0000000 --- a/java/javapower/storagetech/util/Vector3.java +++ /dev/null @@ -1,77 +0,0 @@ -package javapower.storagetech.util; - -import net.minecraft.nbt.NBTTagCompound; - -public class Vector3 -{ - public int x,y,z; - - public Vector3(int _x, int _y, int _z) - { - x = _x; - y = _y; - z = _z; - } - - public Vector3() - { - x = 0; - y = 0; - z = 0; - } - - public Vector3 copy() - { - return new Vector3(x, y, z); - } - - public void SaveToNBT(NBTTagCompound nbt, String name) - { - if(this != null) - { - nbt.setInteger(name+"X", x); - nbt.setInteger(name+"Y", y); - nbt.setInteger(name+"Z", z); - } - } - - public void ReadFromNBT(NBTTagCompound nbt, String name) - { - if(nbt.hasKey(name+"X")&&nbt.hasKey(name+"Y")&&nbt.hasKey(name+"Z")) - { - x = nbt.getInteger(name+"X"); - y = nbt.getInteger(name+"Y"); - z = nbt.getInteger(name+"Z"); - } - } - - public String toString() - { - return "[X:"+x+" Y:"+y+" Z:"+z+"]"; - } - - public boolean ZeroPoint() - { - return x == 0 && y == 0 && z == 0; - } - - @Override - public boolean equals(Object obj) - { - if(obj instanceof Vector3) - { - return ((Vector3)obj).x == x && ((Vector3)obj).y == y && ((Vector3)obj).z == z; - } - return super.equals(obj); - } - - public boolean equals(Vector3 vec) - { - return vec.x == x && vec.y == y && vec.z == z; - } - - public boolean equals(int _x, int _y, int _z) - { - return _x == x && _y == y && _z == z; - } -} diff --git a/java/javapower/storagetech/util/VectorDynamic2.java b/java/javapower/storagetech/util/VectorDynamic2.java deleted file mode 100644 index 4b80f05..0000000 --- a/java/javapower/storagetech/util/VectorDynamic2.java +++ /dev/null @@ -1,72 +0,0 @@ -package javapower.storagetech.util; - -public class VectorDynamic2 -{ - public VectorScreen screen; - EScreenAnchor anchor; - Vector2 vector; - public Vector2 pos; - - public VectorDynamic2(VectorScreen _screen, EScreenAnchor _anchor, Vector2 _vector) - { - screen = _screen; - anchor = _anchor; - vector = _vector; - reCalculate(); - } - - public void reCalculate() - { - pos = calculate(); - } - - private Vector2 calculate() - { - switch(anchor) - { - case TOP_LEFT: - return vector.copy(); - case TOP_MIDDLE: - return vector.copyAndAdd(screen.screensize.x/2, 0); - case TOP_RIGHT: - return vector.copyAndAdd(screen.screensize.x, 0); - case MIDDLE_LEFT: - return vector.copyAndAdd(0, screen.screensize.y/2); - case MIDDLE: - return vector.copyAndAdd(screen.screensize.x/2, screen.screensize.y/2); - case MIDDLE_RIGHT: - return vector.copyAndAdd(screen.screensize.x, screen.screensize.y/2); - case BOTTOM_LEFT: - return vector.copyAndAdd(0, screen.screensize.y); - case BOTTOM_MIDDLE: - return vector.copyAndAdd(screen.screensize.x/2 , screen.screensize.y); - case BOTTOM_RIGHT: - return vector.copyAndAdd(screen.screensize.x , screen.screensize.y); - default: - return vector.copy(); - } - } - - public Vector2 getPos() - { - return pos; - } - - public void setAnchor(EScreenAnchor _anchor) - { - anchor = _anchor; - reCalculate(); - } - - public void setVector(Vector2 _vector) - { - vector = _vector; - reCalculate(); - } - - public void setScreen(VectorScreen _screen) - { - screen = _screen; - reCalculate(); - } -} diff --git a/java/javapower/storagetech/util/VectorScreen.java b/java/javapower/storagetech/util/VectorScreen.java deleted file mode 100644 index bd73a49..0000000 --- a/java/javapower/storagetech/util/VectorScreen.java +++ /dev/null @@ -1,24 +0,0 @@ -package javapower.storagetech.util; - -public class VectorScreen -{ - public Vector2 screensize; - public Vector2 mouse; - - public VectorScreen(Vector2 _screensize, Vector2 _mouse) - { - screensize = _screensize; - mouse = _mouse; - } - - public void onResizeScreen(int w, int h) - { - screensize.x = w; - screensize.y = h; - } - - public void update(int vect) - { - Tools.GetMouseLocalisationNoMC(mouse, vect, false); - } -} diff --git a/java/javapower/storagetech/util/Zone2D.java b/java/javapower/storagetech/util/Zone2D.java deleted file mode 100644 index ba63517..0000000 --- a/java/javapower/storagetech/util/Zone2D.java +++ /dev/null @@ -1,57 +0,0 @@ -package javapower.storagetech.util; - -public class Zone2D -{ - public Vector2 start, end; - - public Zone2D(int _XStart, int _YStart, int _XEnd, int _YEnd) - { - start = new Vector2(_XStart, _YStart); - end = new Vector2(_XEnd, _YEnd); - } - - public Zone2D(Vector2 _start, Vector2 _end) - { - start = _start; - end = _end; - } - - public Zone2D(Vector2 _start, Vector2 _end, boolean _static) - { - if(_static) - { - start = _start.copy(); - end = _end.copy(); - } - else - { - start = _start; - end = _end; - } - } - - public boolean MouseIsOnArea(Vector2 mousepos) - { - if(mousepos.x >= start.x && mousepos.x <= end.x && mousepos.y >= start.y && mousepos.y <= end.y)return true; - return false; - } - - public boolean MouseIsOnArea(int x, int y) - { - if(x >= start.x && x <= end.x && y >= start.y && y <= end.y)return true; - return false; - } - - public boolean MouseIsOnArea_X(int x) - { - if(x >= start.x && x <= end.x)return true; - return false; - } - - public boolean MouseIsOnArea_Y(int y) - { - if(y >= start.y && y <= end.y)return true; - return false; - } - -} diff --git a/resources/META-INF/mods.toml b/resources/META-INF/mods.toml new file mode 100644 index 0000000..c3426e6 --- /dev/null +++ b/resources/META-INF/mods.toml @@ -0,0 +1,59 @@ +# This is an example mods.toml file. It contains the data relating to the loading mods. +# There are several mandatory fields (#mandatory), and many more that are optional (#optional). +# The overall format is standard TOML format, v0.5.0. +# Note that there are a couple of TOML lists in this file. +# Find more information on toml format here: https://github.com/toml-lang/toml +# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml +modLoader="javafml" #mandatory +# A version range to match for said mod loader - for regular FML @Mod it will be the forge version +loaderVersion="[31,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions. +# A URL to refer people to when problems occur with this mod +# issueTrackerURL="http://my.issue.tracker/" #optional +# A list of mods - how many allowed here is determined by the individual mod loader +[[mods]] #mandatory +# The modid of the mod +modId="storagetech" #mandatory +# The version number of the mod - there's a few well known ${} variables useable here or just hardcode it +version="R7.2" #mandatory + # A display name for the mod +displayName="Storage Tech" #mandatory +# A URL to query for updates for this mod. See the JSON update specification +# updateJSONURL="http://myurl.me/" #optional +# A URL for the "homepage" for this mod, displayed in the mod UI +# displayURL="http://example.com/" #optional +# A file name (in the root of the mod JAR) containing a logo for display +# logoFile="examplemod.png" #optional +# A text field displayed in the mod UI +# credits="Thanks for this example mod goes to Java" #optional +# A text field displayed in the mod UI +authors="java_power" #optional +# The description text for the mod (multi line!) (#mandatory) +description=''' +Storage Tech Mod +''' +# A dependency - use the . to indicate dependency for a specific modid. Dependencies are optional. +[[dependencies.storagetech]] #optional + # the modid of the dependency + modId="forge" #mandatory + # Does this dependency have to exist - if not, ordering below must be specified + mandatory=true #mandatory + # The version range of the dependency + versionRange="[31,)" #mandatory + # An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory + ordering="NONE" + # Side this dependency is applied on - BOTH, CLIENT or SERVER + side="BOTH" +# Here's another dependency +[[dependencies.storagetech]] + modId="minecraft" + mandatory=true + versionRange="[1.15.2]" + ordering="NONE" + side="BOTH" + +[[dependencies.storagetech]] + modId="refinedstorage" + mandatory=true + versionRange="[1.8.5,]" + ordering="NONE" + side="BOTH" diff --git a/resources/assets/storagetech/blockstates/diskworkbench.json b/resources/assets/storagetech/blockstates/diskworkbench.json index 320099b..186bbaa 100644 --- a/resources/assets/storagetech/blockstates/diskworkbench.json +++ b/resources/assets/storagetech/blockstates/diskworkbench.json @@ -1,18 +1,7 @@ { - "forge_marker": 1, - "defaults": - { - "model": "storagetech:diskworkbench" - }, - "variants": - { - "inventory": - [ - {"transform": "forge:default-block"} - ], - "normal": - { - "model": "storagetech:diskworkbench" - } + "variants": { + "": { + "model": "storagetech:block/diskworkbench" + } } } \ No newline at end of file diff --git a/resources/assets/storagetech/blockstates/fluiddiskworkbench.json b/resources/assets/storagetech/blockstates/fluiddiskworkbench.json index a010d96..b4b1b87 100644 --- a/resources/assets/storagetech/blockstates/fluiddiskworkbench.json +++ b/resources/assets/storagetech/blockstates/fluiddiskworkbench.json @@ -1,18 +1,7 @@ { - "forge_marker": 1, - "defaults": - { - "model": "storagetech:fluiddiskworkbench" - }, - "variants": - { - "inventory": - [ - {"transform": "forge:default-block"} - ], - "normal": - { - "model": "storagetech:fluiddiskworkbench" - } + "variants": { + "": { + "model": "storagetech:block/fluiddiskworkbench" + } } } \ No newline at end of file diff --git a/resources/assets/storagetech/lang/en_us.json b/resources/assets/storagetech/lang/en_us.json new file mode 100644 index 0000000..b625427 --- /dev/null +++ b/resources/assets/storagetech/lang/en_us.json @@ -0,0 +1,41 @@ +{ +"_comment": "items", +"item.storagetech.customdisk": "Custom Disk", +"item.storagetech.fluidcustomdisk": "Fluid Custom Disk", +"item.storagetech.memory": "Memory", +"item.storagetech.fluidmemory": "Fluid Memory", + +"_comment": "block", +"block.storagetech.diskworkbench": "Disk Workbench", +"block.storagetech.fluiddiskworkbench": "Fluid Disk Workbench", + +"_comment": "gui", +"itemGroup.storagetech": "Storage Tech", + +"_comment": "jei", +"storagetech.jei.category.diskiwb": "Disk Workbench", +"storagetech.jei.category.diskiwbm": "Disk Workbench", +"storagetech.jei.category.diskfwb": "Fluid Disk Workbench", +"storagetech.jei.category.diskfwbm": "Fluid Disk Workbench", +"storagetech.jei.info.diskwbm.value": "Memory", + +"_comment": "gui", +"storagetech.gui.create": "Create", +"storagetech.gui.creation": "Creation", +"storagetech.gui.availablespace": "available space", +"storagetech.gui.disksizein": "disk size in", +"storagetech.gui.info": "info", +"storagetech.gui.insertfluidstoragepart": "insert fluid storage part", +"storagetech.gui.insertstoragepart": "insert storage part", +"storagetech.gui.insertstoragehousing": "insert storage housing", +"storagetech.gui.for": "for", +"storagetech.gui.cost": "Total Energy Cost", + +"_comment": "Tooltip", +"storagetech.tooltip.putvft": "Put me in Fluid Disk Workbench", +"storagetech.tooltip.putvib": "Put me in Disk Workbench", +"storagetech.tooltip.novft": "No VFT Stored", +"storagetech.tooltip.novib": "No VIB Stored", +"storagetech.tooltip.memory": "Memory", +"storagetech.tooltip.inprocess": "In Process" +} \ No newline at end of file diff --git a/resources/assets/storagetech/lang/en_us.lang b/resources/assets/storagetech/lang/en_us.lang deleted file mode 100644 index e260c47..0000000 --- a/resources/assets/storagetech/lang/en_us.lang +++ /dev/null @@ -1,33 +0,0 @@ -//items -item.customdisk.name=Custom Disk -item.fluidcustomdisk.name=Fluid Custom Disk -item.memory.name=Memory - -//block -tile.diskworkbench.name=Disk Workbench -tile.fluiddiskworkbench.name=Fluid Disk Workbench - -//gui -itemGroup.storagetech=Storage Tech - -//jei -storagetech.jei.category.diskiwb=Disk Workbench -storagetech.jei.category.diskiwbm=Disk Workbench -storagetech.jei.category.diskfwb=Fluid Disk Workbench -storagetech.jei.category.diskfwbm=Fluid Disk Workbench - -//gui -storagetech.gui.create=Create -storagetech.gui.creation=Creation -storagetech.gui.availablespace=available space -storagetech.gui.disksizein=disk size in -storagetech.gui.info=info -storagetech.gui.insertfluidstoragepart=insert fluid storage part -storagetech.gui.insertstoragepart=insert storage part -storagetech.gui.insertstoragehousing=insert storage housing -storagetech.gui.for=for -//Tooltip -storagetech.tooltip.putvft=Put me in Fluid Disk Workbench -storagetech.tooltip.putvib=Put me in Disk Workbench -storagetech.tooltip.novft=No VFT Stored -storagetech.tooltip.novib=No VIB Stored \ No newline at end of file diff --git a/resources/assets/storagetech/lang/fr_fr.json b/resources/assets/storagetech/lang/fr_fr.json new file mode 100644 index 0000000..fff405f --- /dev/null +++ b/resources/assets/storagetech/lang/fr_fr.json @@ -0,0 +1,41 @@ +{ +"_comment": items", +"item.storagetech.customdisk": "Disque Personnalisé", +"item.storagetech.fluidcustomdisk": "Disque De Liquide Personnalisé", +"item.storagetech.memory": "Mémoire", +"item.storagetech.fluidmemory": "Mémoire De Liquide", + +"_comment": "block", +"block.storagetech.diskworkbench": "Atelier De Disque", +"block.storagetech.fluiddiskworkbench": "Atelier De Disque Pour Liquide", + +"_comment": "gui", +"itemGroup.storagetech": "Storage Tech", + +"_comment": "jei", +"storagetech.jei.category.diskiwb": "Atelier De Disque", +"storagetech.jei.category.diskiwbm": "Atelier De Disque", +"storagetech.jei.category.diskfwb": "Atelier De Disque Pour Liquide", +"storagetech.jei.category.diskfwbm": "Atelier De Disque Pour Liquide", +"storagetech.jei.info.diskwbm.value": "Mémoire", + +"_comment": "gui", +"storagetech.gui.create": "Créer", +"storagetech.gui.creation": "Création", +"storagetech.gui.availablespace": "espace disponible", +"storagetech.gui.disksizein": "taille du disque en", +"storagetech.gui.info": "info", +"storagetech.gui.insertfluidstoragepart": "insérer une partie de stockage pour fluide", +"storagetech.gui.insertstoragepart": "insérer une partie de stockage", +"storagetech.gui.insertstoragehousing": "insérer le boîtier de stockage", +"storagetech.gui.for": "pour", +"storagetech.gui.cost": "Coût Energétique Total", + +"_comment": "Tooltip", +"storagetech.tooltip.putvft": "Mettez-moi Dans L'Atelier De Disque Pour Liquide", +"storagetech.tooltip.putvib": "Mettez-moi Dans L'Atelier De Disque", +"storagetech.tooltip.novft": "Pas De VFT Stocké", +"storagetech.tooltip.novib": "Pas De VIB Stocké", +"storagetech.tooltip.memory": "Mémoire", +"storagetech.tooltip.inprocess": "En cours", +} \ No newline at end of file diff --git a/resources/assets/storagetech/lang/fr_fr.lang b/resources/assets/storagetech/lang/fr_fr.lang deleted file mode 100644 index f2334fe..0000000 --- a/resources/assets/storagetech/lang/fr_fr.lang +++ /dev/null @@ -1,34 +0,0 @@ -//items -item.customdisk.name=Disque Personnalisé -item.fluidcustomdisk.name=Disque De Liquide Personnalisé -item.memory.name=Mémoire - -//block -tile.diskworkbench.name=Atelier De Disque -tile.fluiddiskworkbench.name=Atelier De Disque Pour Liquide - -//gui -itemGroup.storagetech=Storage Tech - -//jei -storagetech.jei.category.diskiwb=Atelier De Disque -storagetech.jei.category.diskiwbm=Atelier De Disque -storagetech.jei.category.diskfwb=Atelier De Disque Pour Liquide -storagetech.jei.category.diskfwbm=Atelier De Disque Pour Liquide - -//gui -storagetech.gui.create=Créer -storagetech.gui.creation=Création -storagetech.gui.availablespace=espace disponible -storagetech.gui.disksizein=taille du disque en -storagetech.gui.info=info -storagetech.gui.insertfluidstoragepart=insérer une partie de stockage pour fluide -storagetech.gui.insertstoragepart=insérer une partie de stockage -storagetech.gui.insertstoragehousing=insérer le boîtier de stockage -storagetech.gui.for=pour - -//Tooltip -storagetech.tooltip.putvft=Mettez-moi Dans L'Atelier De Disque Pour Liquide -storagetech.tooltip.putvib=Mettez-moi Dans L'Atelier De Disque -storagetech.tooltip.novft=Pas De VFT Stocké -storagetech.tooltip.novib=Pas De VIB Stocké \ No newline at end of file diff --git a/resources/assets/storagetech/lang/ko_kr.json b/resources/assets/storagetech/lang/ko_kr.json new file mode 100644 index 0000000..ffcf4bd --- /dev/null +++ b/resources/assets/storagetech/lang/ko_kr.json @@ -0,0 +1,41 @@ +{ +"_comment": "items", +"item.storagetech.customdisk": "사용자 지정 디스크", +"item.storagetech.fluidcustomdisk": "유체 사용자 지정 디스크", +"item.storagetech.memory": "메모리", +"item.storagetech.fluidmemory": "유체 메모리", + +"_comment": "block", +"block.storagetech.diskworkbench": "디스크 작업대", +"block.storagetech.fluiddiskworkbench": "유체 디스크 작업대", + +"_comment": "gui", +"itemGroup.storagetech": "스토리지 테크", + +"_comment": "jei", +"storagetech.jei.category.diskiwb": "디스크 작업대", +"storagetech.jei.category.diskiwbm": "디스크 작업대", +"storagetech.jei.category.diskfwb": "유체 디스크 작업대", +"storagetech.jei.category.diskfwbm": "유체 디스크 작업대", +"storagetech.jei.info.diskwbm.value": "메모리", + +"_comment": "gui", +"storagetech.gui.create": "만들기", +"storagetech.gui.creation": "구축", +"storagetech.gui.availablespace": "이용 가능한 공간", +"storagetech.gui.disksizein": "디스크 크기", +"storagetech.gui.info": "정보", +"storagetech.gui.insertfluidstoragepart": "유체 저장 부품을 삽입", +"storagetech.gui.insertstoragepart": "저장 부품을 삽입", +"storagetech.gui.insertstoragehousing": "저장 주택을 삽입", +"storagetech.gui.for": "목적", +"storagetech.gui.cost": "총 에너지 비용", + +"_comment": "Tooltip", +"storagetech.tooltip.putvft": "유체 디스크 작업대에 넣어 주십시오.", +"storagetech.tooltip.putvib": "디스크 작업대에 넣어 주십시오.", +"storagetech.tooltip.novft": "저장된 유체 디스크가 없습니다.", +"storagetech.tooltip.novib": "저장된 디스크가 없습니다.", +"storagetech.tooltip.memory": "메모리", +"storagetech.tooltip.inprocess": "진행 중" +} diff --git a/resources/assets/storagetech/lang/ru_ru.json b/resources/assets/storagetech/lang/ru_ru.json new file mode 100644 index 0000000..da1e0c0 --- /dev/null +++ b/resources/assets/storagetech/lang/ru_ru.json @@ -0,0 +1,41 @@ +{ +"_comment":items", +"item.storagetech.customdisk": "Пользовательский диск", +"item.storagetech.fluidcustomdisk": "Жидкостный пользовательский диск", +"item.storagetech.memory": "Память", +"item.storagetech.fluidmemory": "Память из жидкостного", + +"_comment": "block", +"block.storagetech.diskworkbench": "Верстак для диска", +"block.storagetech.fluiddiskworkbench": "Верстак для жидкостного диска", + +"_comment": "gui", +"itemGroup.storagetech": "Storage Tech", + +"_comment": "jei", +"storagetech.jei.category.diskiwb": "Верстак для диска", +"storagetech.jei.category.diskiwbm": "Верстак для диска", +"storagetech.jei.category.diskfwb": "Верстак для жидкостного диска", +"storagetech.jei.category.diskfwbm": "Верстак для жидкостного диска", +"storagetech.jei.info.diskwbm.value": "Памяти", + +"_comment": "gui", +"storagetech.gui.create": "Создать", +"storagetech.gui.creation": "Cоздание", +"storagetech.gui.availablespace": "доступное пространство", +"storagetech.gui.disksizein": "размер диска в", +"storagetech.gui.info": "Информация", +"storagetech.gui.insertfluidstoragepart": "вставить жидкостная дискетная плата", +"storagetech.gui.insertstoragepart": "вставить дискетная плата", +"storagetech.gui.insertstoragehousing": "вставить xранилище корпуса", +"storagetech.gui.for": "за", +"storagetech.gui.cost": "Общая Стоимость Энергии", + +"_comment": "Tooltip", +"storagetech.tooltip.putvft": "Поместите меня в верстак для жидкостного диска", +"storagetech.tooltip.putvib": "Поместите меня в верстак для диска", +"storagetech.tooltip.novft": "Нет VFT Хранится", +"storagetech.tooltip.novib": "Нет VIB Хранится", +"storagetech.tooltip.memory": "Память", +"storagetech.tooltip.inprocess": "В процессе +} \ No newline at end of file diff --git a/resources/assets/storagetech/lang/ru_ru.lang b/resources/assets/storagetech/lang/ru_ru.lang deleted file mode 100644 index 3070a8c..0000000 --- a/resources/assets/storagetech/lang/ru_ru.lang +++ /dev/null @@ -1,34 +0,0 @@ -//items -item.customdisk.name=Пользовательский диск -item.fluidcustomdisk.name=Жидкостный пользовательский диск -item.memory.name=Память - -//block -tile.diskworkbench.name=Верстак для диска -tile.fluiddiskworkbench.name=Верстак для жидкостного диска - -//gui -itemGroup.storagetech=Storage Tech - -//jei -storagetech.jei.category.diskiwb=Верстак для диска -storagetech.jei.category.diskiwbm=Верстак для диска -storagetech.jei.category.diskfwb=Верстак для жидкостного диска -storagetech.jei.category.diskfwbm=Верстак для жидкостного диска - -//gui -storagetech.gui.create=Создать -storagetech.gui.creation=Cоздание -storagetech.gui.availablespace=доступное пространство -storagetech.gui.disksizein=размер диска в -storagetech.gui.info=Информация -storagetech.gui.insertfluidstoragepart=вставить жидкостная дискетная плата -storagetech.gui.insertstoragepart=вставить дискетная плата -storagetech.gui.insertstoragehousing=вставить xранилище корпуса -storagetech.gui.for=за - -//Tooltip -storagetech.tooltip.putvft=Поместите меня в верстак для жидкостного диска -storagetech.tooltip.putvib=Поместите меня в верстак для диска -storagetech.tooltip.novft=Нет VFT Хранится -storagetech.tooltip.novib=Нет VIB Хранится \ No newline at end of file diff --git a/resources/assets/storagetech/models/item/diskworkbench.json b/resources/assets/storagetech/models/item/diskworkbench.json new file mode 100644 index 0000000..082d3bd --- /dev/null +++ b/resources/assets/storagetech/models/item/diskworkbench.json @@ -0,0 +1,3 @@ +{ + "parent": "storagetech:block/diskworkbench" +} \ No newline at end of file diff --git a/resources/assets/storagetech/models/item/fluiddiskworkbench.json b/resources/assets/storagetech/models/item/fluiddiskworkbench.json new file mode 100644 index 0000000..53292c4 --- /dev/null +++ b/resources/assets/storagetech/models/item/fluiddiskworkbench.json @@ -0,0 +1,3 @@ +{ + "parent": "storagetech:block/fluiddiskworkbench" +} \ No newline at end of file diff --git a/resources/assets/storagetech/models/item/fluidmemory.json b/resources/assets/storagetech/models/item/fluidmemory.json new file mode 100644 index 0000000..efd4fed --- /dev/null +++ b/resources/assets/storagetech/models/item/fluidmemory.json @@ -0,0 +1,4 @@ +{ + "parent": "item/generated", + "textures": {"layer0": "storagetech:items/fluidmemory"} +} \ No newline at end of file diff --git a/resources/assets/storagetech/textures/blocks/fluid_storage_block.png b/resources/assets/storagetech/textures/blocks/fluid_storage_block.png new file mode 100644 index 0000000..42b5ddb Binary files /dev/null and b/resources/assets/storagetech/textures/blocks/fluid_storage_block.png differ diff --git a/resources/assets/storagetech/textures/blocks/storage_block.png b/resources/assets/storagetech/textures/blocks/storage_block.png new file mode 100644 index 0000000..49104e0 Binary files /dev/null and b/resources/assets/storagetech/textures/blocks/storage_block.png differ diff --git a/resources/assets/storagetech/textures/guis/gui_adder.png b/resources/assets/storagetech/textures/guis/gui_adder.png new file mode 100644 index 0000000..ac22f0f Binary files /dev/null and b/resources/assets/storagetech/textures/guis/gui_adder.png differ diff --git a/resources/assets/storagetech/textures/guis/gui_diskmaker.png b/resources/assets/storagetech/textures/guis/gui_diskmaker.png index 9eab4ac..9b96142 100644 Binary files a/resources/assets/storagetech/textures/guis/gui_diskmaker.png and b/resources/assets/storagetech/textures/guis/gui_diskmaker.png differ diff --git a/resources/assets/storagetech/textures/guis/gui_diskmakerfluid.png b/resources/assets/storagetech/textures/guis/gui_diskmakerfluid.png index bee56fa..83ca967 100644 Binary files a/resources/assets/storagetech/textures/guis/gui_diskmakerfluid.png and b/resources/assets/storagetech/textures/guis/gui_diskmakerfluid.png differ diff --git a/resources/assets/storagetech/textures/guis/jei.png b/resources/assets/storagetech/textures/guis/jei.png index 1c12f05..3078376 100644 Binary files a/resources/assets/storagetech/textures/guis/jei.png and b/resources/assets/storagetech/textures/guis/jei.png differ diff --git a/resources/assets/storagetech/textures/items/fluidmemory.png b/resources/assets/storagetech/textures/items/fluidmemory.png new file mode 100644 index 0000000..183d8bc Binary files /dev/null and b/resources/assets/storagetech/textures/items/fluidmemory.png differ diff --git a/resources/assets/storagetech/recipes/diskworkbench.json b/resources/data/storagetech/recipes/diskworkbench.json similarity index 76% rename from resources/assets/storagetech/recipes/diskworkbench.json rename to resources/data/storagetech/recipes/diskworkbench.json index 5f40524..ef8a34d 100644 --- a/resources/assets/storagetech/recipes/diskworkbench.json +++ b/resources/data/storagetech/recipes/diskworkbench.json @@ -13,12 +13,10 @@ "item": "minecraft:crafting_table" }, "P": { - "item": "refinedstorage:processor", - "data": 5 + "item": "refinedstorage:advanced_processor" }, "S": { - "item": "refinedstorage:storage_part", - "data": 3 + "item": "refinedstorage:64k_storage_part" }, "H": { "item": "refinedstorage:storage_housing" diff --git a/resources/assets/storagetech/recipes/fluiddiskworkbench.json b/resources/data/storagetech/recipes/fluiddiskworkbench.json similarity index 76% rename from resources/assets/storagetech/recipes/fluiddiskworkbench.json rename to resources/data/storagetech/recipes/fluiddiskworkbench.json index 931f12d..a0f5ca8 100644 --- a/resources/assets/storagetech/recipes/fluiddiskworkbench.json +++ b/resources/data/storagetech/recipes/fluiddiskworkbench.json @@ -13,12 +13,10 @@ "item": "minecraft:crafting_table" }, "P": { - "item": "refinedstorage:processor", - "data": 5 + "item": "refinedstorage:advanced_processor" }, "S": { - "item": "refinedstorage:fluid_storage_part", - "data": 3 + "item": "refinedstorage:4096k_fluid_storage_part" }, "H": { "item": "refinedstorage:storage_housing" diff --git a/resources/mcmod.info b/resources/mcmod.info deleted file mode 100644 index c01a2a0..0000000 --- a/resources/mcmod.info +++ /dev/null @@ -1,16 +0,0 @@ -[ -{ - "modid": "storagetech", - "name": "Storage Tech", - "description": "Storage Tech Mod", - "version": "${version}", - "mcversion": "${mcversion}", - "url": "http://javapower.fr/", - "updateUrl": "", - "authorList": ["java_power"], - "credits": "", - "logoFile": "", - "screenshots": [], - "dependencies": [] -} -] diff --git a/resources/pack.mcmeta b/resources/pack.mcmeta index 4a4b532..d25b803 100644 --- a/resources/pack.mcmeta +++ b/resources/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "description": "Storage Tech Resource", - "pack_format": 3 + "description": "storagetech resources", + "pack_format": 5 } }