Skip to content

Commit

Permalink
2.7.3 Update
Browse files Browse the repository at this point in the history
- Completely rewritten Exchanger handler, using blockstates system instead of metadata (This is a change I must make, so it's easier porting the mod to 1.13 when the time comes)

- Fixed the bug with not being able to place certain blocks properly (again), closes #54

- Ranges for all Exchangers are no longer hardcoded, configurable via config up to 25x25

- Increased default range for LV Exchanger to 7x7 as to keep it consistant with other variants

- Increased max harvest level for Creative Exchanger to the maximum of integer (2147483647)

- Removed null display name error as it's an unreachable condition

- [1.12] Added error tooltip for Powered Exchangers if Redstone Flux is not installed
  • Loading branch information
JackyyTV committed Jul 5, 2018
1 parent dc5019b commit bfc013d
Show file tree
Hide file tree
Showing 44 changed files with 258 additions and 187 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Submit any bug reports / suggestions via [issue tracker](https://github.com/Jack
## Contact Me

- Twitter - [@JackyyTV](https://twitter.com/JackyyTV)
- Discord - Jacky#3044
- Discord - Jacky#1234
- Twitch - [Jackyy](https://www.twitch.tv/jackyy)
- Reddit - [Jacky1356400](https://www.reddit.com/message/compose/?to=Jacky1356400)

Expand Down
6 changes: 3 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
# This is required to provide enough memory for the Minecraft decompilation process.
org.gradle.jvmargs=-Xmx4G
mc_version=1.12.2
forge_version=1.12.2-14.23.3.2678
mod_version=2.7.2
mappings_version=snapshot_20180503
forge_version=1.12.2-14.23.4.2729
mod_version=2.7.3
mappings_version=snapshot_20180704
2 changes: 1 addition & 1 deletion src/main/java/jackyy/exchangers/Exchangers.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
@Mod(modid = Exchangers.MODID, version = Exchangers.VERSION, name = Exchangers.MODNAME, dependencies = Exchangers.DEPENDS, certificateFingerprint = "@FINGERPRINT@", acceptedMinecraftVersions = Exchangers.MCVERSION, useMetadata = true)
public class Exchangers {

public static final String VERSION = "1.12.2-2.7.2";
public static final String VERSION = "1.12.2-2.7.3";
public static final String MCVERSION = "[1.12,1.13)";
public static final String MODID = "exchangers";
public static final String MODNAME = "Exchangers";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTUtil;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
Expand Down Expand Up @@ -132,11 +133,10 @@ public void renderWorldLastEvent(RenderWorldLastEvent event) {
IBlockState state = world.getBlockState(mouseOver.getBlockPos());
Block block = state.getBlock();
if (block.getMaterial(state) != Material.AIR) {
int meta = block.getMetaFromState(state);
ItemStack stack = player.getHeldItemMainhand();
float partialTicks = event.getPartialTicks();
if (!stack.isEmpty() && stack.getItem() instanceof ItemExchangerBase && stack.getTagCompound() != null && mouseOver.sideHit != null) {
Set<BlockPos> coordinates = ExchangerHandler.findSuitableBlocks(stack, player.getEntityWorld(), mouseOver.sideHit, mouseOver.getBlockPos(), block, meta);
Set<BlockPos> coordinates = ExchangerHandler.findSuitableBlocks(stack, player.getEntityWorld(), mouseOver.sideHit, mouseOver.getBlockPos(), block, block.getMetaFromState(state));
double offsetX = player.prevPosX + (player.posX - player.prevPosX) * (double) partialTicks;
double offsetY = player.prevPosY + (player.posY - player.prevPosY) * (double) partialTicks;
double offsetZ = player.prevPosZ + (player.posZ - player.prevPosZ) * (double) partialTicks;
Expand All @@ -153,10 +153,10 @@ public void renderWorldLastEvent(RenderWorldLastEvent event) {

for (BlockPos coordinate : coordinates) {
String exId = ExchangerHandler.getTagCompound(stack).getString("block");
IBlockState exState = NBTUtil.readBlockState(ExchangerHandler.getTagCompound(stack).getCompoundTag("blockstate"));
Block exBlock = Block.getBlockFromName(exId);
int exMeta = ExchangerHandler.getTagCompound(stack).getInteger("meta");
float blockHardness = block.getBlockHardness(state, world, coordinate);
if (world.isAirBlock(coordinate) || (exBlock == block && exMeta == meta)) {
if (world.isAirBlock(coordinate) || (exBlock == block && exState == state)) {
continue;
}
double renderX = coordinate.getX() - offsetX;
Expand Down
202 changes: 70 additions & 132 deletions src/main/java/jackyy/exchangers/handler/ExchangerHandler.java

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package jackyy.exchangers.handler.network;

import io.netty.buffer.ByteBuf;
import jackyy.exchangers.handler.ExchangerHandler;
import jackyy.exchangers.item.ItemExchangerBase;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
Expand All @@ -23,8 +24,7 @@ public IMessage onMessage(PacketToggleForceDropItemsMode message, MessageContext
EntityPlayerMP playerMP = context.getServerHandler().player;
ItemStack heldItem = playerMP.getHeldItemMainhand();
if (!heldItem.isEmpty() && heldItem.getItem() instanceof ItemExchangerBase) {
ItemExchangerBase exchanger = (ItemExchangerBase) (heldItem.getItem());
exchanger.toggleForceDropItems(playerMP, heldItem);
ExchangerHandler.toggleForceDropItems(playerMP, heldItem);
}
return null;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package jackyy.exchangers.handler.network;

import io.netty.buffer.ByteBuf;
import jackyy.exchangers.handler.ExchangerHandler;
import jackyy.exchangers.item.ItemExchangerBase;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
Expand All @@ -23,8 +24,7 @@ public IMessage onMessage(PacketToggleMode message, MessageContext context) {
EntityPlayerMP playerMP = context.getServerHandler().player;
ItemStack heldItem = playerMP.getHeldItemMainhand();
if (!heldItem.isEmpty() && heldItem.getItem() instanceof ItemExchangerBase) {
ItemExchangerBase exchanger = (ItemExchangerBase) (heldItem.getItem());
exchanger.switchMode(playerMP, heldItem);
ExchangerHandler.switchMode(playerMP, heldItem);
}
return null;
}
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/jackyy/exchangers/helper/NBTHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
public class NBTHelper {

public static NBTTagCompound getTag(ItemStack stack) {
if(!stack.hasTagCompound())
if (!stack.hasTagCompound())
stack.setTagCompound(new NBTTagCompound());
return stack.getTagCompound();
}
Expand All @@ -25,7 +25,7 @@ public static int getInt(ItemStack stack, String key) {

public static int receiveEnergy(ItemStack container, int energy, int maxEnergy, boolean simulate) {
int stored = getEnergyStored(container);
int accepted = Math.min(energy, maxEnergy-stored);
int accepted = Math.min(energy, maxEnergy - stored);
if (!simulate) {
stored += accepted;
setInt(container, "Energy", stored);
Expand Down
69 changes: 64 additions & 5 deletions src/main/java/jackyy/exchangers/item/ItemExchangerBase.java
Original file line number Diff line number Diff line change
@@ -1,21 +1,35 @@
package jackyy.exchangers.item;

import jackyy.exchangers.Exchangers;
import jackyy.exchangers.client.Keys;
import jackyy.exchangers.handler.ExchangerHandler;
import jackyy.exchangers.helper.StringHelper;
import jackyy.exchangers.registry.ModConfig;
import jackyy.exchangers.util.IExchanger;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Enchantments;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTUtil;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

import java.util.List;

public class ItemExchangerBase extends ExchangerHandler {
public class ItemExchangerBase extends Item implements IExchanger {

public ItemExchangerBase() {
setMaxStackSize(1);
Expand All @@ -32,15 +46,60 @@ public boolean isPowered() {
return false;
}

@Override
public void addInformation(ItemStack stack, World world, List<String> tooltip, ITooltipFlag flag) {
super.addInformation(stack, world, tooltip, flag);
@Override
public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
if (player.isSneaking()) {
ExchangerHandler.selectBlock(player.getHeldItemMainhand(), player, world, pos);
} else {
ExchangerHandler.placeBlock(player.getHeldItemMainhand(), player, world, pos, side);
}
}
return EnumActionResult.SUCCESS;
}

@Override
public void addInformation(ItemStack stack, World world, List<String> tooltip, ITooltipFlag flag) {
super.addInformation(stack, world, tooltip, flag);
if (!StringHelper.isShiftKeyDown()) {
tooltip.add(StringHelper.getShiftText());
}

ExchangerHandler.setDefaultTagCompound(stack);

NBTTagCompound compound = stack.getTagCompound();
String id = compound.getString("block");
IBlockState state = NBTUtil.readBlockState(compound.getCompoundTag("blockstate"));

if (StringHelper.isShiftKeyDown()) {
if (id.equals("minecraft:air")) {
tooltip.add(StringHelper.localize("tooltip.no_selected_block"));
} else {
Block block = Block.getBlockFromName(id);
tooltip.add(StringHelper.localize("tooltip.selected_block") + " " + ExchangerHandler.getBlockName(block, state.getBlock().getMetaFromState(state)));
}
tooltip.add(StringHelper.localize("tooltip.current_range") + " " + ExchangerHandler.modeSwitchList[compound.getInteger("mode")]);
tooltip.add(StringHelper.localize("tooltip.max_range") + " " + ExchangerHandler.modeSwitchList[getMaxRange()]);
tooltip.add(StringHelper.localize("tooltip.max_harvest_level") + " " + StringHelper.formatHarvestLevel(getHarvestLevel()));
if (ModConfig.misc.doExchangersSilkTouch) {
tooltip.add(StringHelper.localize("tooltip.silk_touch.on"));
} else {
tooltip.add(StringHelper.localize("tooltip.silk_touch.off"));
}
if (compound.getBoolean("forceDropItems")) {
tooltip.add(StringHelper.localize("tooltip.force_drop_items.on") + " " + TextFormatting.GRAY + "(" + TextFormatting.GREEN + Keys.FORCE_DROP_ITEMS_KEY.getDisplayName() + TextFormatting.GRAY + ")");
} else {
tooltip.add(StringHelper.localize("tooltip.force_drop_items.off") + " " + TextFormatting.GRAY + "(" + TextFormatting.GREEN + Keys.FORCE_DROP_ITEMS_KEY.getDisplayName() + TextFormatting.GRAY + ")");
}
tooltip.add(StringHelper.localize("tooltip.shift1"));
tooltip.add(StringHelper.localize("tooltip.shift2"));
tooltip.add(StringHelper.localize("tooltip.shift3") + " " + "(" + TextFormatting.GREEN + Keys.MODE_KEY.getDisplayName() + TextFormatting.GRAY + ")");
tooltip.add(StringHelper.getTierText(getTier()));
if (!isPowered()) {
tooltip.add(StringHelper.formatNumber(stack.getMaxDamage() - stack.getItemDamage()) + " / " + StringHelper.formatNumber(stack.getMaxDamage()) + " " + StringHelper.localize("tooltip.durability"));
}
}
}
}

@Override @SideOnly(Side.CLIENT)
public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> list) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,9 @@ public double getDurabilityForDisplay(ItemStack stack) {
@Override
public void addInformation(ItemStack stack, World world, List<String> tooltip, ITooltipFlag flag) {
super.addInformation(stack, world, tooltip, flag);
if (!Loader.isModLoaded("redstoneflux")) {
tooltip.add(StringHelper.localize("tooltip.redstone_flux_warning"));
}
if (StringHelper.isShiftKeyDown()) {
tooltip.add(StringHelper.formatNumber(getEnergyStored(stack)) + " / " + StringHelper.formatNumber(getMaxEnergyStored(stack)) + " RF");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public int getHarvestLevel() {

@Override
public int getMaxRange() {
return MODE_3X3;
return ModConfig.enderIOTweaks.conductiveMaxRange;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public int getHarvestLevel() {

@Override
public int getMaxRange() {
return MODE_13X13;
return ModConfig.enderIOTweaks.darkSteelMaxRange;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public int getHarvestLevel() {

@Override
public int getMaxRange() {
return MODE_9X9;
return ModConfig.enderIOTweaks.electricalSteelMaxRange;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public int getHarvestLevel() {

@Override
public int getMaxRange() {
return MODE_11X11;
return ModConfig.enderIOTweaks.energeticMaxRange;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public int getHarvestLevel() {

@Override
public int getMaxRange() {
return MODE_5X5;
return ModConfig.enderIOTweaks.pulsatingMaxRange;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public int getHarvestLevel() {

@Override
public int getMaxRange() {
return MODE_15X15;
return ModConfig.enderIOTweaks.vibrantMaxRange;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public int getHarvestLevel() {

@Override
public int getMaxRange() {
return MODE_15X15;
return ModConfig.immersiveEngineeringTweaks.hvMaxRange;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public int getHarvestLevel() {

@Override
public int getMaxRange() {
return MODE_5X5;
return ModConfig.immersiveEngineeringTweaks.lvMaxRange;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public int getHarvestLevel() {

@Override
public int getMaxRange() {
return MODE_11X11;
return ModConfig.immersiveEngineeringTweaks.mvMaxRange;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public int getHarvestLevel() {

@Override
public int getMaxRange() {
return MODE_11X11;
return ModConfig.mekanismTweaks.advancedMaxRange;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public int getHarvestLevel() {

@Override
public int getMaxRange() {
return MODE_7X7;
return ModConfig.mekanismTweaks.basicMaxRange;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public int getHarvestLevel() {

@Override
public int getMaxRange() {
return MODE_13X13;
return ModConfig.mekanismTweaks.eliteMaxRange;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public int getHarvestLevel() {

@Override
public int getMaxRange() {
return MODE_15X15;
return ModConfig.mekanismTweaks.ultimateMaxRange;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public int getTier() {

@Override
public int getHarvestLevel() {
return 9001;
return Integer.MAX_VALUE;
}

@Override
Expand All @@ -40,7 +40,7 @@ public boolean isCreative() {

@Override
public int getMaxRange() {
return MODE_25X25;
return 12;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public void addInformation(ItemStack stack, World world, List<String> tooltip, I
@Override
public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
if (player != null) {
player.getHeldItemMainhand().setCount(0);
player.getHeldItem(hand).setCount(0);
player.attackEntityFrom(new EntityDamageSource("tuberous_exchanger", player), 100000.0F);
player.world.createExplosion(player, player.posX, player.posY, player.posZ, 1.0F, false);
return EnumActionResult.SUCCESS;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public int getHarvestLevel() {

@Override
public int getMaxRange() {
return MODE_7X7;
return ModConfig.thermalExpansionTweaks.hardenedMaxRange;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public int getHarvestLevel() {

@Override
public int getMaxRange() {
return MODE_3X3;
return ModConfig.thermalExpansionTweaks.leadstoneMaxRange;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public int getHarvestLevel() {

@Override
public int getMaxRange() {
return MODE_11X11;
return ModConfig.thermalExpansionTweaks.reinforcedMaxRange;
}

@Override
Expand Down
Loading

0 comments on commit bfc013d

Please sign in to comment.