From fb1663f106529cd827cb7564d86ccbda147e2923 Mon Sep 17 00:00:00 2001 From: canitzp Date: Wed, 9 Sep 2020 10:58:32 +0200 Subject: [PATCH] Reimplemented Atomic Deconstructor, Battery Box and Bio Reactor Blocks --- .../mod/blocks/BlockAtomicReconstructor.java | 186 ++++++++---------- .../mod/blocks/BlockBatteryBox.java | 65 +++--- .../mod/blocks/BlockBioReactor.java | 33 ++-- .../mod/blocks/BlockSlabs.java | 3 +- .../mod/blocks/IHudDisplay.java | 14 +- .../mod/blocks/base/BlockBase.java | 39 +--- .../mod/blocks/base/BlockBushBase.java | 31 +-- .../mod/blocks/base/BlockContainerBase.java | 25 +-- .../mod/blocks/base/BlockItemBase.java | 6 +- .../mod/blocks/base/BlockPlant.java | 91 ++++----- .../mod/blocks/base/IBaseBlock.java | 17 ++ .../mod/event/ClientEvents.java | 126 ++++++------ 12 files changed, 270 insertions(+), 366 deletions(-) create mode 100644 src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/IBaseBlock.java diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockAtomicReconstructor.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockAtomicReconstructor.java index a6e8b22a9..efdef7ef7 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockAtomicReconstructor.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockAtomicReconstructor.java @@ -10,33 +10,35 @@ import de.ellpeck.actuallyadditions.mod.util.AssetUtil; import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.StringUtil; import net.minecraft.block.Block; -import net.minecraft.block.BlockDirectional; +import net.minecraft.block.BlockState; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; -import net.minecraft.block.state.BlockStateContainer; -import net.minecraft.block.state.IBlockState; +import net.minecraft.client.MainWindow; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.util.ITooltipFlag; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Items; -import net.minecraft.item.EnumRarity; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.item.Rarity; +import net.minecraft.state.StateContainer; +import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.EnumHand; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; import net.minecraft.util.Mirror; import net.minecraft.util.Rotation; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.RayTraceResult; +import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextFormatting; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.IBlockReader; import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.ToolType; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; import java.util.List; @@ -51,16 +53,13 @@ public class BlockAtomicReconstructor extends BlockContainerBase implements IHud .harvestTool(ToolType.PICKAXE) .sound(SoundType.STONE)); } - + @Override - public boolean isOpaqueCube(IBlockState state) { - return false; - } - - @Override - public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing par6, float par7, float par8, float par9) { + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit){ ItemStack heldItem = player.getHeldItem(hand); - if (this.tryToggleRedstone(world, pos, player)) { return true; } + if (this.tryToggleRedstone(world, pos, player)) { + return ActionResultType.SUCCESS; + } if (!world.isRemote) { TileEntityAtomicReconstructor reconstructor = (TileEntityAtomicReconstructor) world.getTileEntity(pos); if (reconstructor != null) { @@ -73,7 +72,7 @@ public class BlockAtomicReconstructor extends BlockContainerBase implements IHud player.inventory.decrStackSize(player.inventory.currentItem, 1); } //Shush, don't tell anyone! - else if (ConfigIntValues.ELEVEN.getValue() == 11 && item == Items.RECORD_11) { + else if (ConfigIntValues.ELEVEN.getValue() == 11 && item == Items.MUSIC_DISC_11) { reconstructor.counter++; reconstructor.markDirty(); } @@ -86,121 +85,64 @@ public class BlockAtomicReconstructor extends BlockContainerBase implements IHud } } } - return true; + return ActionResultType.SUCCESS; } - + @Override - public TileEntity createNewTileEntity(World world, int i) { + public TileEntity createTileEntity(BlockState state, IBlockReader world){ return new TileEntityAtomicReconstructor(); } - + @Override - @SideOnly(Side.CLIENT) - public void displayHud(Minecraft minecraft, EntityPlayer player, ItemStack stack, RayTraceResult posHit, ScaledResolution resolution) { - TileEntity tile = minecraft.world.getTileEntity(posHit.getBlockPos()); + @OnlyIn(Dist.CLIENT) + public void displayHud(Minecraft minecraft, PlayerEntity player, ItemStack stack, BlockRayTraceResult posHit, MainWindow window) { + TileEntity tile = minecraft.world.getTileEntity(posHit.getPos()); if (tile instanceof TileEntityAtomicReconstructor) { ItemStack slot = ((TileEntityAtomicReconstructor) tile).inv.getStackInSlot(0); - String strg; + ITextComponent displayString; if (!StackUtil.isValid(slot)) { - strg = StringUtil.localize("info." + ActuallyAdditions.MODID + ".noLens"); + displayString = new TranslationTextComponent("info." + ActuallyAdditions.MODID + ".noLens"); } else { - strg = slot.getItem().getItemStackDisplayName(slot); + displayString = slot.getItem().getDisplayName(slot); - AssetUtil.renderStackToGui(slot, resolution.getScaledWidth() / 2 + 15, resolution.getScaledHeight() / 2 - 19, 1F); + AssetUtil.renderStackToGui(slot, window.getScaledWidth() / 2 + 15, window.getScaledHeight() / 2 - 19, 1F); } - minecraft.fontRenderer.drawStringWithShadow(TextFormatting.YELLOW + "" + TextFormatting.ITALIC + strg, resolution.getScaledWidth() / 2 + 35, resolution.getScaledHeight() / 2 - 15, StringUtil.DECIMAL_COLOR_WHITE); + minecraft.fontRenderer.drawStringWithShadow(TextFormatting.YELLOW + "" + TextFormatting.ITALIC + displayString.getFormattedText(), window.getScaledWidth() / 2 + 35, window.getScaledHeight() / 2 - 15, StringUtil.DECIMAL_COLOR_WHITE); } } @Override protected BlockItemBase getItemBlock() { - return new TheItemBlock(this); + return new BlockItem(); } - + @Override - public EnumRarity getRarity(ItemStack stack) { - return EnumRarity.EPIC; + public Rarity getRarity(){ + return Rarity.EPIC; } - + @Override - public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase player, ItemStack stack) { - int rotation = EnumFacing.getDirectionFromEntityLiving(pos, player).ordinal(); - world.setBlockState(pos, this.getStateFromMeta(rotation), 2); - - super.onBlockPlacedBy(world, pos, state, player, stack); + protected void fillStateContainer(StateContainer.Builder builder){ + builder.add(BlockStateProperties.FACING); } - + @Override - public IBlockState getStateFromMeta(int meta) { - return this.getDefaultState().withProperty(BlockDirectional.FACING, EnumFacing.byIndex(meta)); + public BlockState rotate(BlockState state, Rotation rot){ + return state.with(BlockStateProperties.FACING, rot.rotate(state.get(BlockStateProperties.FACING))); } - + @Override - public int getMetaFromState(IBlockState state) { - return state.getValue(BlockDirectional.FACING).getIndex(); + public BlockState mirror(BlockState state, Mirror mirrorIn){ + return this.rotate(state, mirrorIn.toRotation(state.get(BlockStateProperties.FACING))); } - + @Override - protected BlockStateContainer createBlockState() { - return new BlockStateContainer(this, BlockDirectional.FACING); - } - - @Override - public IBlockState withRotation(IBlockState state, Rotation rot) { - return state.withProperty(BlockDirectional.FACING, rot.rotate(state.getValue(BlockDirectional.FACING))); - } - - @Override - public IBlockState withMirror(IBlockState state, Mirror mirror) { - return this.withRotation(state, mirror.toRotation(state.getValue(BlockDirectional.FACING))); - } - - public static class TheItemBlock extends BlockItemBase { - - private long lastSysTime; - private int toPick1; - private int toPick2; - - public TheItemBlock(Block block) { - super(block); - this.setHasSubtypes(false); - this.setMaxDamage(0); - } - - @Override - public String getTranslationKey(ItemStack stack) { - return this.getTranslationKey(); - } - - @Override - public int getMetadata(int damage) { - return damage; - } - - @Override - public void addInformation(ItemStack stack, World world, List tooltip, ITooltipFlag advanced) { - long sysTime = System.currentTimeMillis(); - - if (this.lastSysTime + 3000 < sysTime) { - this.lastSysTime = sysTime; - if (world != null) { - this.toPick1 = world.rand.nextInt(NAME_FLAVOR_AMOUNTS_1) + 1; - this.toPick2 = world.rand.nextInt(NAME_FLAVOR_AMOUNTS_2) + 1; - } - } - - String base = "tile." + ActuallyAdditions.MODID + "." + ((BlockAtomicReconstructor) this.block).getBaseName() + ".info."; - tooltip.add(StringUtil.localize(base + "1." + this.toPick1) + " " + StringUtil.localize(base + "2." + this.toPick2)); - } - } - - @Override - public boolean hasComparatorInputOverride(IBlockState state) { + public boolean hasComparatorInputOverride(BlockState state){ return true; } - + @Override - public int getComparatorInputOverride(IBlockState blockState, World world, BlockPos pos) { + public int getComparatorInputOverride(BlockState blockState, World world, BlockPos pos) { TileEntity t = world.getTileEntity(pos); int i = 0; if (t instanceof TileEntityAtomicReconstructor) { @@ -208,4 +150,32 @@ public class BlockAtomicReconstructor extends BlockContainerBase implements IHud } return MathHelper.clamp(i / 20000, 0, 15); } + + public class BlockItem extends BlockItemBase { + private long lastSysTime; + private int toPick1; + + private int toPick2; + + public BlockItem() { + super(BlockAtomicReconstructor.this, new Properties()); + } + + @Override + public void addInformation(ItemStack stack, World world, List tooltip, ITooltipFlag flag){ + long sysTime = System.currentTimeMillis(); + + if (this.lastSysTime + 3000 < sysTime) { + this.lastSysTime = sysTime; + if (world != null) { + this.toPick1 = world.rand.nextInt(NAME_FLAVOR_AMOUNTS_1) + 1; + this.toPick2 = world.rand.nextInt(NAME_FLAVOR_AMOUNTS_2) + 1; + } + } + + String base = String.format("tile.%s.%s.info", ActuallyAdditions.MODID, BlockAtomicReconstructor.this.getRegistryName().getPath()); + tooltip.add(new TranslationTextComponent(String.format("%s1.%s", base, this.toPick1)).appendSibling(new TranslationTextComponent(String.format("%s2.%s", base, this.toPick2)))); + } + + } } \ No newline at end of file diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockBatteryBox.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockBatteryBox.java index cf4161953..d08528a25 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockBatteryBox.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockBatteryBox.java @@ -4,82 +4,75 @@ import de.ellpeck.actuallyadditions.mod.blocks.base.BlockContainerBase; import de.ellpeck.actuallyadditions.mod.items.ItemBattery; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBatteryBox; import de.ellpeck.actuallyadditions.mod.util.StackUtil; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; -import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumRarity; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; +import net.minecraft.item.Rarity; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.EnumHand; -import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockAccess; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; import net.minecraft.world.World; import net.minecraftforge.common.ToolType; -import javax.annotation.Nullable; - +// todo add rarity RARE public class BlockBatteryBox extends BlockContainerBase { + public static final VoxelShape SHAPE = Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 8.0D, 16.0D); + public BlockBatteryBox() { super(Properties.create(Material.ROCK) .hardnessAndResistance(1.5f, 10.0f) .harvestLevel(0) .harvestTool(ToolType.PICKAXE) .sound(SoundType.STONE)); - -// this.setHarvestLevel("pickaxe", 0); -// this.setHardness(1.5F); -// this.setResistance(10.0F); -// this.setSoundType(SoundType.STONE); } - + @Override - public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) { - return BlockSlabs.AABB_BOTTOM_HALF; + public Rarity getRarity(){ + return Rarity.RARE; } - + @Override - public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context){ + return SHAPE; + } + + @Override + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit){ TileEntity tile = world.getTileEntity(pos); if (tile instanceof TileEntityBatteryBox) { TileEntityBatteryBox box = (TileEntityBatteryBox) tile; ItemStack stack = player.getHeldItem(hand); - + if (StackUtil.isValid(stack)) { if (stack.getItem() instanceof ItemBattery && !StackUtil.isValid(box.inv.getStackInSlot(0))) { box.inv.setStackInSlot(0, stack.copy()); player.setHeldItem(hand, StackUtil.getEmpty()); - return true; + return ActionResultType.SUCCESS; } } else { ItemStack inSlot = box.inv.getStackInSlot(0); if (StackUtil.isValid(inSlot)) { player.setHeldItem(hand, inSlot.copy()); box.inv.setStackInSlot(0, StackUtil.getEmpty()); - return true; + return ActionResultType.SUCCESS; } } } - return false; + return super.onBlockActivated(state, world, pos, player, hand, hit); } - + @Override - public boolean isOpaqueCube(IBlockState state) { - return false; - } - - @Override - public EnumRarity getRarity(ItemStack stack) { - return EnumRarity.RARE; - } - - @Nullable - @Override - public TileEntity createNewTileEntity(IBlockReader worldIn) { + public TileEntity createTileEntity(BlockState state, IBlockReader world){ return new TileEntityBatteryBox(); } + } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockBioReactor.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockBioReactor.java index 142f9d745..7622898fe 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockBioReactor.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockBioReactor.java @@ -1,19 +1,18 @@ package de.ellpeck.actuallyadditions.mod.blocks; -import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.blocks.base.BlockContainerBase; -import de.ellpeck.actuallyadditions.mod.inventory.GuiHandler; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBioReactor; +import net.minecraft.block.BlockState; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; -import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumRarity; -import net.minecraft.item.ItemStack; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Rarity; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.EnumHand; +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.world.IBlockReader; import net.minecraft.world.World; import net.minecraftforge.common.ToolType; @@ -25,24 +24,24 @@ public class BlockBioReactor extends BlockContainerBase { .harvestTool(ToolType.PICKAXE) .sound(SoundType.STONE)); } - + @Override - public TileEntity createNewTileEntity(World worldIn, int meta) { + public TileEntity createTileEntity(BlockState state, IBlockReader world){ return new TileEntityBioReactor(); } - + @Override - public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing par6, float par7, float par8, float par9) { + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit){ if (!world.isRemote) { if (world.getTileEntity(pos) instanceof TileEntityBioReactor) { - player.openGui(ActuallyAdditions.INSTANCE, GuiHandler.GuiTypes.BIO_REACTOR.ordinal(), world, pos.getX(), pos.getY(), pos.getZ()); + // todo open gui: player.openGui(ActuallyAdditions.INSTANCE, GuiHandler.GuiTypes.BIO_REACTOR.ordinal(), world, pos.getX(), pos.getY(), pos.getZ()); } } - return true; + return ActionResultType.SUCCESS; } - + @Override - public EnumRarity getRarity(ItemStack stack) { - return EnumRarity.EPIC; + public Rarity getRarity() { + return Rarity.EPIC; } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockSlabs.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockSlabs.java index 92adee797..4c4f23995 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockSlabs.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockSlabs.java @@ -18,6 +18,7 @@ import net.minecraft.util.EnumHand; import net.minecraft.util.SoundCategory; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; @@ -25,7 +26,7 @@ import net.minecraftforge.fml.relauncher.SideOnly; public class BlockSlabs extends Block { - public static final AxisAlignedBB AABB_BOTTOM_HALF = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.5D, 1.0D); + public static final VoxelShape AABB_BOTTOM_HALF = Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 8.0D, 16.0D); private static final AxisAlignedBB AABB_TOP_HALF = new AxisAlignedBB(0.0D, 0.5D, 0.0D, 1.0D, 1.0D, 1.0D); private final BlockState fullBlockState; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/IHudDisplay.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/IHudDisplay.java index 03ba2af14..89ec162fe 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/IHudDisplay.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/IHudDisplay.java @@ -1,16 +1,16 @@ package de.ellpeck.actuallyadditions.mod.blocks; +import net.minecraft.client.MainWindow; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.ScaledResolution; -import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.util.math.RayTraceResult; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; public interface IHudDisplay { - @SideOnly(Side.CLIENT) - void displayHud(Minecraft minecraft, EntityPlayer player, ItemStack stack, RayTraceResult posHit, ScaledResolution resolution); + @OnlyIn(Dist.CLIENT) + void displayHud(Minecraft minecraft, PlayerEntity player, ItemStack stack, BlockRayTraceResult posHit, MainWindow window); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockBase.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockBase.java index 60fbb0df8..33b87c5dc 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockBase.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockBase.java @@ -1,42 +1,17 @@ package de.ellpeck.actuallyadditions.mod.blocks.base; import net.minecraft.block.Block; +import net.minecraft.item.Item; -public class BlockBase extends Block { - - private final String name; - - public BlockBase(Properties properties, String name) { +public class BlockBase extends Block implements IBaseBlock{ + + public BlockBase(Properties properties) { super(properties); - this.name = name; - - this.register(); } - @Deprecated - private void register() { - //ItemUtil.registerBlock(this, this.getItemBlock(), this.getBaseName(), this.shouldAddCreative()); - } - - protected String getBaseName() { - return this.name; - } - - protected BlockItemBase getItemBlock() { - return new BlockItemBase(this); - } - - public boolean shouldAddCreative() { - return true; - } - - /*@Override - public void registerRendering() { - ActuallyAdditions.PROXY.addRenderRegister(new ItemStack(this), this.getRegistryName(), "inventory"); + @Override + public BlockItemBase getItemBlock() { + return new BlockItemBase(this, new Item.Properties()); } - @Override - public Rarity getRarity(ItemStack stack) { - return EnumRarity.COMMON; - }*/ } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockBushBase.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockBushBase.java index 6cc57a1b7..bf18f9e0b 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockBushBase.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockBushBase.java @@ -2,32 +2,17 @@ package de.ellpeck.actuallyadditions.mod.blocks.base; import net.minecraft.block.BushBlock; import net.minecraft.block.SoundType; +import net.minecraft.item.Item; -public class BlockBushBase extends BushBlock { +public class BlockBushBase extends BushBlock implements IBaseBlock { + public BlockBushBase(Properties properties) { super(properties.sound(SoundType.PLANT)); -// this.register(); } - -// private void register() { -// ItemUtil.registerBlock(this, this.getItemBlock(), this.getBaseName(), this.shouldAddCreative()); -// } - -// protected ItemBlockBase getItemBlock() { -// return new ItemBlockBase(this); -// } - - public boolean shouldAddCreative() { - return true; + + @Override + public BlockItemBase getItemBlock(){ + return new BlockItemBase(this, new Item.Properties()); } - -// @Override -// public void registerRendering() { -// ActuallyAdditions.PROXY.addRenderRegister(new ItemStack(this), this.getRegistryName(), "inventory"); -// } - -// @Override -// public EnumRarity getRarity(ItemStack stack) { -// return EnumRarity.COMMON; -// } + } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockContainerBase.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockContainerBase.java index c4093b41f..325ec4a12 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockContainerBase.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockContainerBase.java @@ -29,36 +29,13 @@ import net.minecraftforge.fluids.capability.templates.FluidTank; import javax.annotation.Nullable; import java.util.Random; -public abstract class BlockContainerBase extends Block { +public abstract class BlockContainerBase extends BlockBase { public BlockContainerBase(Properties properties) { super(properties); -// this.register(); } -// private void register() { -// ItemUtil.registerBlock(this, this.getItemBlock(), this.getBaseName(), this.shouldAddCreative()); -// } - -// protected ItemBlockBase getItemBlock() { -// return new ItemBlockBase(this); -// } - - public boolean shouldAddCreative() { - return true; - } - -// @Override -// public void registerRendering() { -// ActuallyAdditions.PROXY.addRenderRegister(new ItemStack(this), this.getRegistryName(), "inventory"); -// } -// -// @Override -// public EnumRarity getRarity(ItemStack stack) { -// return EnumRarity.COMMON; -// } - private void dropInventory(World world, BlockPos position) { if (!world.isRemote) { TileEntity aTile = world.getTileEntity(position); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockItemBase.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockItemBase.java index fc4578f03..3d630ea66 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockItemBase.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockItemBase.java @@ -2,12 +2,12 @@ package de.ellpeck.actuallyadditions.mod.blocks.base; import net.minecraft.block.Block; import net.minecraft.item.BlockItem; +import net.minecraft.item.Item; public class BlockItemBase extends BlockItem { - public BlockItemBase(Block block) { - super(block, new Properties()); - this.setRegistryName(block.getRegistryName()); + public BlockItemBase(T block , Item.Properties properties) { + super(block, properties.rarity(block.getRarity())); } } \ No newline at end of file diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockPlant.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockPlant.java index c3d4ae4d0..14980a227 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockPlant.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockPlant.java @@ -30,9 +30,8 @@ import net.minecraftforge.items.ItemHandlerHelper; import java.util.List; -public class BlockPlant extends CropsBlock {// implements ItemBlockBase.ICustomRarity, IHasModel { +public class BlockPlant extends CropsBlock implements IBaseBlock { -// private final String name; private final int minDropAmount; private final int addDropAmount; public Item seedItem; @@ -42,59 +41,43 @@ public class BlockPlant extends CropsBlock {// implements ItemBlockBase.ICustomR // todo: find the correct properties for crops public BlockPlant(int minDropAmount, int addDropAmount) { super(Properties.create(Material.PLANTS)); -// this.name = name; + this.minDropAmount = minDropAmount; this.addDropAmount = addDropAmount; -// this.register(); } - + // todo: check what this is doing public void doStuff(Item seedItem, Item returnItem, int returnMeta) { this.seedItem = seedItem; this.returnItem = returnItem; this.returnMeta = returnMeta; } - -// private void register() { -// ItemUtil.registerBlock(this, this.getItemBlock(), this.getBaseName(), this.shouldAddCreative()); -// } - -// protected String getBaseName() { -// return this.name; -// } - -// protected ItemBlockBase getItemBlock() { -// return new ItemBlockBase(this); -// } - + + @Override + public BlockItemBase getItemBlock(){ + return new BlockItemBase(this, new Item.Properties()); + } + public boolean shouldAddCreative() { return false; } - -// @Override -// public void registerRendering() { -// ActuallyAdditions.PROXY.addRenderRegister(new ItemStack(this), this.getRegistryName(), "inventory"); -// } -// - - + @Override public PlantType getPlantType(IBlockReader world, BlockPos pos) { return PlantType.Crop; } -// -// @Override -// public int damageDropped(IBlockState state) { -// return this.getMetaFromState(state) >= 7 ? this.returnMeta : 0; -// } - - + + @Override + protected IItemProvider getSeedsItem() { + return this.seedItem; + } + @Override public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) { if (getAge(state) > 7) { if (!world.isRemote) { List drops = getDrops(state, (ServerWorld) world, pos, null); - + boolean deductedSeedSize = false; for (ItemStack drop : drops) { if (StackUtil.isValid(drop)) { @@ -107,36 +90,36 @@ public class BlockPlant extends CropsBlock {// implements ItemBlockBase.ICustomR } } } - + world.setBlockState(pos, state.with(AGE, 0)); } - + return ActionResultType.SUCCESS; } - + return super.onBlockActivated(state, world, pos, player, handIn, hit); } + + /* todo: this is likely handled by loot tables now + @Override + public int damageDropped(IBlockState state) { + return this.getMetaFromState(state) >= 7 ? this.returnMeta : 0; + } @Override - protected IItemProvider getSeedsItem() { - return this.seedItem; + public int quantityDropped(IBlockState state, int fortune, Random random) { + return this.getMetaFromState(state) >= 7 ? random.nextInt(this.addDropAmount) + this.minDropAmount : super.quantityDropped(state, fortune, random); } -// todo: this is likely handled by loot tables now + @Override + public Item getCrop() { + return this.returnItem; + } -// @Override -// public int quantityDropped(IBlockState state, int fortune, Random random) { -// return this.getMetaFromState(state) >= 7 ? random.nextInt(this.addDropAmount) + this.minDropAmount : super.quantityDropped(state, fortune, random); -// } - -// @Override -// public Item getCrop() { -// return this.returnItem; -// } - -// @Override -// public Item getItemDropped(IBlockState state, Random rand, int par3) { -// return this.getMetaFromState(state) >= 7 ? this.getCrop() : this.getSeed(); -// } + @Override + public Item getItemDropped(IBlockState state, Random rand, int par3) { + return this.getMetaFromState(state) >= 7 ? this.getCrop() : this.getSeed(); + } + */ } \ No newline at end of file diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/IBaseBlock.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/IBaseBlock.java new file mode 100644 index 000000000..7c32ef59c --- /dev/null +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/IBaseBlock.java @@ -0,0 +1,17 @@ +package de.ellpeck.actuallyadditions.mod.blocks.base; + +import net.minecraft.item.Rarity; + +public interface IBaseBlock { + + BlockItemBase getItemBlock(); + + default boolean shouldAddCreative() { + return true; + } + + default Rarity getRarity() { + return Rarity.COMMON; + } + +} diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/event/ClientEvents.java b/src/main/java/de/ellpeck/actuallyadditions/mod/event/ClientEvents.java index a7b947600..866f3a8a9 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/event/ClientEvents.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/event/ClientEvents.java @@ -2,6 +2,7 @@ package de.ellpeck.actuallyadditions.mod.event; import java.util.Locale; +import com.mojang.blaze3d.platform.GlStateManager; import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.blocks.IHudDisplay; import de.ellpeck.actuallyadditions.mod.config.ConfigValues; @@ -17,28 +18,26 @@ import de.ellpeck.actuallyadditions.mod.util.StringUtil; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemSword; -import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.item.SwordItem; +import net.minecraft.nbt.CompoundNBT; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.text.TextFormatting; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.TickEvent; import net.minecraftforge.event.entity.player.ItemTooltipEvent; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent; -import net.minecraftforge.fml.common.gameevent.TickEvent.Phase; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -import net.minecraftforge.oredict.OreDictionary; +import net.minecraftforge.eventbus.api.SubscribeEvent; -@SideOnly(Side.CLIENT) +@OnlyIn(Dist.CLIENT) public class ClientEvents { private static final String ADVANCED_INFO_TEXT_PRE = TextFormatting.DARK_GRAY + " "; @@ -51,9 +50,9 @@ public class ClientEvents { } @SubscribeEvent - public void onClientTick(ClientTickEvent event) { - if (event.phase == Phase.END) { - Minecraft mc = Minecraft.getMinecraft(); + public void onClientTick(TickEvent.ClientTickEvent event) { + if (event.phase == TickEvent.Phase.END) { + Minecraft mc = Minecraft.getInstance(); if (mc.world == null) { WorldData.clear(); @@ -77,7 +76,7 @@ public class ClientEvents { } } - if (ItemWingsOfTheBats.THE_BAT_BAT.equalsIgnoreCase(stack.getDisplayName()) && stack.getItem() instanceof ItemSword) { + if (ItemWingsOfTheBats.THE_BAT_BAT.equalsIgnoreCase(stack.getDisplayName()) && stack.getItem() instanceof SwordItem) { event.getToolTip().set(0, TextFormatting.GOLD + event.getToolTip().get(0)); event.getToolTip().add(1, TextFormatting.RED.toString() + TextFormatting.ITALIC + "That's a really bat pun"); } @@ -86,7 +85,7 @@ public class ClientEvents { //Advanced Item Info if (event.getFlags().isAdvanced() && StackUtil.isValid(event.getItemStack())) { if (ConfigBoolValues.CTRL_EXTRA_INFO.isEnabled()) { - if (GuiScreen.isCtrlKeyDown()) { + if (Screen.hasControlDown()) { event.getToolTip().add(TextFormatting.DARK_GRAY + "" + TextFormatting.ITALIC + StringUtil.localize("tooltip." + ActuallyAdditions.MODID + ".extraInfo.desc") + ":"); //OreDict Names @@ -125,10 +124,10 @@ public class ClientEvents { } //NBT - NBTTagCompound compound = event.getItemStack().getTagCompound(); + CompoundNBT compound = event.getItemStack().getTag(); if (compound != null && !compound.isEmpty()) { event.getToolTip().add(ADVANCED_INFO_HEADER_PRE + StringUtil.localize("tooltip." + ActuallyAdditions.MODID + ".nbt.desc") + ":"); - if (GuiScreen.isShiftKeyDown()) { + if (Screen.hasShiftDown()) { int limit = ConfigIntValues.CTRL_INFO_NBT_CHAR_LIMIT.getValue(); String compoundStrg = compound.toString(); int compoundStrgLength = compoundStrg.length(); @@ -159,58 +158,63 @@ public class ClientEvents { @SubscribeEvent public void onGameOverlay(RenderGameOverlayEvent.Post event) { - if (event.getType() == RenderGameOverlayEvent.ElementType.ALL && Minecraft.getMinecraft().currentScreen == null) { - Minecraft minecraft = Minecraft.getMinecraft(); - EntityPlayer player = minecraft.player; + if (event.getType() == RenderGameOverlayEvent.ElementType.ALL && Minecraft.getInstance().currentScreen == null) { + Minecraft minecraft = Minecraft.getInstance(); + PlayerEntity player = minecraft.player; RayTraceResult posHit = minecraft.objectMouseOver; FontRenderer font = minecraft.fontRenderer; ItemStack stack = player.getHeldItemMainhand(); - if (StackUtil.isValid(stack)) { - if (stack.getItem() instanceof IHudDisplay) { - ((IHudDisplay) stack.getItem()).displayHud(minecraft, player, stack, posHit, event.getResolution()); - } - } - - if (posHit != null && posHit.getBlockPos() != null) { - Block blockHit = minecraft.world.getBlockState(posHit.getBlockPos()).getBlock(); - TileEntity tileHit = minecraft.world.getTileEntity(posHit.getBlockPos()); - - if (blockHit instanceof IHudDisplay) { - ((IHudDisplay) blockHit).displayHud(minecraft, player, stack, posHit, event.getResolution()); - } - - if (tileHit instanceof TileEntityBase) { - TileEntityBase base = (TileEntityBase) tileHit; - if (base.isRedstoneToggle()) { - String strg = String.format("%s: %s", StringUtil.localize("info." + ActuallyAdditions.MODID + ".redstoneMode.name"), TextFormatting.DARK_RED + StringUtil.localize("info." + ActuallyAdditions.MODID + ".redstoneMode." + (base.isPulseMode ? "pulse" : "deactivation")) + TextFormatting.RESET); - font.drawStringWithShadow(strg, event.getResolution().getScaledWidth() / 2 + 5, event.getResolution().getScaledHeight() / 2 + 5, StringUtil.DECIMAL_COLOR_WHITE); - - String expl; - if (StackUtil.isValid(stack) && stack.getItem() == ConfigValues.itemRedstoneTorchConfigurator) { - expl = TextFormatting.GREEN + StringUtil.localize("info." + ActuallyAdditions.MODID + ".redstoneMode.validItem"); - } else { - expl = TextFormatting.GRAY.toString() + TextFormatting.ITALIC + StringUtil.localizeFormatted("info." + ActuallyAdditions.MODID + ".redstoneMode.invalidItem", StringUtil.localize(ConfigValues.itemRedstoneTorchConfigurator.getTranslationKey() + ".name")); - } - font.drawStringWithShadow(expl, event.getResolution().getScaledWidth() / 2 + 5, event.getResolution().getScaledHeight() / 2 + 15, StringUtil.DECIMAL_COLOR_WHITE); + if(posHit instanceof BlockRayTraceResult){ + BlockRayTraceResult blockRayTraceResult = ((BlockRayTraceResult) posHit); + if (StackUtil.isValid(stack)) { + if (stack.getItem() instanceof IHudDisplay) { + ((IHudDisplay) stack.getItem()).displayHud(minecraft, player, stack, blockRayTraceResult, event.getWindow()); } } - - if (tileHit instanceof IEnergyDisplay) { - IEnergyDisplay display = (IEnergyDisplay) tileHit; - if (!display.needsHoldShift() || player.isSneaking()) { - if (energyDisplay == null) { - energyDisplay = new EnergyDisplay(0, 0, null); + + if (blockRayTraceResult.getPos() != null) { + Block blockHit = minecraft.world.getBlockState(blockRayTraceResult.getPos()).getBlock(); + TileEntity tileHit = minecraft.world.getTileEntity(blockRayTraceResult.getPos()); + + if (blockHit instanceof IHudDisplay) { + ((IHudDisplay) blockHit).displayHud(minecraft, player, stack, blockRayTraceResult, event.getWindow()); + } + + if (tileHit instanceof TileEntityBase) { + TileEntityBase base = (TileEntityBase) tileHit; + if (base.isRedstoneToggle()) { + String strg = String.format("%s: %s", StringUtil.localize("info." + ActuallyAdditions.MODID + ".redstoneMode.name"), TextFormatting.DARK_RED + StringUtil.localize("info." + ActuallyAdditions.MODID + ".redstoneMode." + (base.isPulseMode ? "pulse" : "deactivation")) + TextFormatting.RESET); + font.drawStringWithShadow(strg, event.getWindow().getScaledWidth() / 2 + 5, event.getWindow().getScaledHeight() / 2 + 5, StringUtil.DECIMAL_COLOR_WHITE); + + String expl; + if (StackUtil.isValid(stack) && stack.getItem() == ConfigValues.itemRedstoneTorchConfigurator) { + expl = TextFormatting.GREEN + StringUtil.localize("info." + ActuallyAdditions.MODID + ".redstoneMode.validItem"); + } else { + expl = TextFormatting.GRAY.toString() + TextFormatting.ITALIC + StringUtil.localizeFormatted("info." + ActuallyAdditions.MODID + ".redstoneMode.invalidItem", StringUtil.localize(ConfigValues.itemRedstoneTorchConfigurator.getTranslationKey() + ".name")); + } + font.drawStringWithShadow(expl, event.getWindow().getScaledWidth() / 2 + 5, event.getWindow().getScaledHeight() / 2 + 15, StringUtil.DECIMAL_COLOR_WHITE); + } + } + + if (tileHit instanceof IEnergyDisplay) { + IEnergyDisplay display = (IEnergyDisplay) tileHit; + if (!display.needsHoldShift() || player.isSneaking()) { + if (energyDisplay == null) { + energyDisplay = new EnergyDisplay(0, 0, null); + } + energyDisplay.setData(2, event.getWindow().getScaledHeight() - 96, display.getEnergyStorage(), true, true); + + GlStateManager.pushMatrix(); + GlStateManager.color4f(1F, 1F, 1F, 1F); + energyDisplay.draw(); + GlStateManager.popMatrix(); } - energyDisplay.setData(2, event.getResolution().getScaledHeight() - 96, display.getEnergyStorage(), true, true); - - GlStateManager.pushMatrix(); - GlStateManager.color(1F, 1F, 1F, 1F); - energyDisplay.draw(); - GlStateManager.popMatrix(); } } } + + } }