Randomizer bag finished (including recipe, placing blocks). Changed default keybinds to ADD and SUBTRACT. QuickReplace now places under replaceable blocks (tall grass). Mirror now happens before array.
This commit is contained in:
@@ -41,11 +41,6 @@ public class Array {
|
|||||||
pos = pos.add(offset);
|
pos = pos.add(offset);
|
||||||
if (event.getWorld().isBlockLoaded(pos, true)) {
|
if (event.getWorld().isBlockLoaded(pos, true)) {
|
||||||
event.getWorld().setBlockState(pos, event.getPlacedBlock());
|
event.getWorld().setBlockState(pos, event.getPlacedBlock());
|
||||||
|
|
||||||
//Mirror synergy
|
|
||||||
BlockSnapshot blockSnapshot = new BlockSnapshot(event.getWorld(), pos, event.getPlacedBlock());
|
|
||||||
BlockEvent.PlaceEvent placeEvent = new BlockEvent.PlaceEvent(blockSnapshot, event.getPlacedBlock(), event.getPlayer(), EnumHand.MAIN_HAND);
|
|
||||||
Mirror.onBlockPlaced(placeEvent);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -66,17 +61,7 @@ public class Array {
|
|||||||
pos = pos.add(offset);
|
pos = pos.add(offset);
|
||||||
if (event.getWorld().isBlockLoaded(pos, false)) {
|
if (event.getWorld().isBlockLoaded(pos, false)) {
|
||||||
event.getWorld().setBlockToAir(pos);
|
event.getWorld().setBlockToAir(pos);
|
||||||
|
|
||||||
//Mirror synergy
|
|
||||||
BlockEvent.BreakEvent breakEvent = new BlockEvent.BreakEvent(event.getWorld(), pos, event.getState(), event.getPlayer());
|
|
||||||
Mirror.onBlockBroken(breakEvent);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// @SubscribeEvent
|
|
||||||
// @SideOnly(Side.CLIENT)
|
|
||||||
// public static void onRender(RenderWorldLastEvent event) {
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import net.minecraftforge.fml.common.network.NetworkRegistry;
|
|||||||
import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper;
|
import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import nl.requios.effortlessbuilding.capability.*;
|
import nl.requios.effortlessbuilding.capability.*;
|
||||||
import nl.requios.effortlessbuilding.inventory.RandomizerGuiHandler;
|
import nl.requios.effortlessbuilding.gui.RandomizerBagGuiHandler;
|
||||||
import nl.requios.effortlessbuilding.item.ItemRandomizerBag;
|
import nl.requios.effortlessbuilding.item.ItemRandomizerBag;
|
||||||
import nl.requios.effortlessbuilding.network.BuildSettingsMessage;
|
import nl.requios.effortlessbuilding.network.BuildSettingsMessage;
|
||||||
import nl.requios.effortlessbuilding.network.QuickReplaceMessage;
|
import nl.requios.effortlessbuilding.network.QuickReplaceMessage;
|
||||||
@@ -75,7 +75,7 @@ public class EffortlessBuilding
|
|||||||
// Register network handlers
|
// Register network handlers
|
||||||
public void init(FMLInitializationEvent event)
|
public void init(FMLInitializationEvent event)
|
||||||
{
|
{
|
||||||
NetworkRegistry.INSTANCE.registerGuiHandler(EffortlessBuilding.instance, new RandomizerGuiHandler());
|
NetworkRegistry.INSTANCE.registerGuiHandler(EffortlessBuilding.instance, new RandomizerBagGuiHandler());
|
||||||
proxy.init(event);
|
proxy.init(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import net.minecraft.entity.Entity;
|
|||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemBlock;
|
import net.minecraft.item.ItemBlock;
|
||||||
|
import net.minecraft.item.crafting.IRecipe;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraftforge.event.AttachCapabilitiesEvent;
|
import net.minecraftforge.event.AttachCapabilitiesEvent;
|
||||||
import net.minecraftforge.event.RegistryEvent;
|
import net.minecraftforge.event.RegistryEvent;
|
||||||
@@ -45,15 +46,15 @@ public class EventHandler
|
|||||||
public static void onBlockPlaced(BlockEvent.PlaceEvent event) {
|
public static void onBlockPlaced(BlockEvent.PlaceEvent event) {
|
||||||
QuickReplace.onBlockPlaced(event);
|
QuickReplace.onBlockPlaced(event);
|
||||||
if (event.isCanceled()) return;
|
if (event.isCanceled()) return;
|
||||||
Array.onBlockPlaced(event);
|
|
||||||
Mirror.onBlockPlaced(event);
|
Mirror.onBlockPlaced(event);
|
||||||
|
Array.onBlockPlaced(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void onBlockBroken(BlockEvent.BreakEvent event) {
|
public static void onBlockBroken(BlockEvent.BreakEvent event) {
|
||||||
Array.onBlockBroken(event);
|
|
||||||
Mirror.onBlockBroken(event);
|
Mirror.onBlockBroken(event);
|
||||||
|
Array.onBlockBroken(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,11 +9,14 @@ import net.minecraft.client.entity.EntityPlayerSP;
|
|||||||
import net.minecraft.client.renderer.BufferBuilder;
|
import net.minecraft.client.renderer.BufferBuilder;
|
||||||
import net.minecraft.client.renderer.Tessellator;
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.client.event.RenderWorldLastEvent;
|
import net.minecraftforge.client.event.RenderWorldLastEvent;
|
||||||
|
import net.minecraftforge.common.util.BlockSnapshot;
|
||||||
import net.minecraftforge.event.world.BlockEvent;
|
import net.minecraftforge.event.world.BlockEvent;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||||
@@ -77,19 +80,19 @@ public class Mirror {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (m.mirrorX) {
|
if (m.mirrorX) {
|
||||||
placeMirrorX(event.getWorld(), m, oldBlockPos, event.getPlacedBlock());
|
placeMirrorX(event.getWorld(), event.getPlayer(), m, oldBlockPos, event.getPlacedBlock());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m.mirrorY) {
|
if (m.mirrorY) {
|
||||||
placeMirrorY(event.getWorld(), m, oldBlockPos, event.getPlacedBlock());
|
placeMirrorY(event.getWorld(), event.getPlayer(), m, oldBlockPos, event.getPlacedBlock());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m.mirrorZ) {
|
if (m.mirrorZ) {
|
||||||
placeMirrorZ(event.getWorld(), m, oldBlockPos, event.getPlacedBlock());
|
placeMirrorZ(event.getWorld(), event.getPlayer(), m, oldBlockPos, event.getPlacedBlock());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void placeMirrorX(World world, MirrorSettings m, BlockPos oldBlockPos, IBlockState oldBlockState) {
|
private static void placeMirrorX(World world, EntityPlayer player, MirrorSettings m, BlockPos oldBlockPos, IBlockState oldBlockState) {
|
||||||
//find mirror position
|
//find mirror position
|
||||||
double x = m.position.x + (m.position.x - oldBlockPos.getX() - 0.5);
|
double x = m.position.x + (m.position.x - oldBlockPos.getX() - 0.5);
|
||||||
BlockPos newBlockPos = new BlockPos(x, oldBlockPos.getY(), oldBlockPos.getZ());
|
BlockPos newBlockPos = new BlockPos(x, oldBlockPos.getY(), oldBlockPos.getZ());
|
||||||
@@ -98,13 +101,13 @@ public class Mirror {
|
|||||||
if (world.isBlockLoaded(newBlockPos, true)) {
|
if (world.isBlockLoaded(newBlockPos, true)) {
|
||||||
newBlockState = oldBlockState.withMirror(net.minecraft.util.Mirror.FRONT_BACK);
|
newBlockState = oldBlockState.withMirror(net.minecraft.util.Mirror.FRONT_BACK);
|
||||||
|
|
||||||
world.setBlockState(newBlockPos, newBlockState);
|
placeBlock(world, player, newBlockPos, newBlockState);
|
||||||
}
|
}
|
||||||
if (m.mirrorY) placeMirrorY(world, m, newBlockPos, newBlockState);
|
if (m.mirrorY) placeMirrorY(world, player, m, newBlockPos, newBlockState);
|
||||||
if (m.mirrorZ) placeMirrorZ(world, m, newBlockPos, newBlockState);
|
if (m.mirrorZ) placeMirrorZ(world, player, m, newBlockPos, newBlockState);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void placeMirrorY(World world, MirrorSettings m, BlockPos oldBlockPos, IBlockState oldBlockState) {
|
private static void placeMirrorY(World world, EntityPlayer player, MirrorSettings m, BlockPos oldBlockPos, IBlockState oldBlockState) {
|
||||||
//find mirror position
|
//find mirror position
|
||||||
double y = m.position.y + (m.position.y - oldBlockPos.getY() - 0.5);
|
double y = m.position.y + (m.position.y - oldBlockPos.getY() - 0.5);
|
||||||
BlockPos newBlockPos = new BlockPos(oldBlockPos.getX(), y, oldBlockPos.getZ());
|
BlockPos newBlockPos = new BlockPos(oldBlockPos.getX(), y, oldBlockPos.getZ());
|
||||||
@@ -113,12 +116,12 @@ public class Mirror {
|
|||||||
if (world.isBlockLoaded(newBlockPos, true)) {
|
if (world.isBlockLoaded(newBlockPos, true)) {
|
||||||
newBlockState = getVerticalMirror(oldBlockState);
|
newBlockState = getVerticalMirror(oldBlockState);
|
||||||
|
|
||||||
world.setBlockState(newBlockPos, newBlockState);
|
placeBlock(world, player, newBlockPos, newBlockState);
|
||||||
}
|
}
|
||||||
if (m.mirrorZ) placeMirrorZ(world, m, newBlockPos, newBlockState);
|
if (m.mirrorZ) placeMirrorZ(world, player, m, newBlockPos, newBlockState);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void placeMirrorZ(World world, MirrorSettings m, BlockPos oldBlockPos, IBlockState oldBlockState) {
|
private static void placeMirrorZ(World world, EntityPlayer player, MirrorSettings m, BlockPos oldBlockPos, IBlockState oldBlockState) {
|
||||||
//find mirror position
|
//find mirror position
|
||||||
double z = m.position.z + (m.position.z - oldBlockPos.getZ() - 0.5);
|
double z = m.position.z + (m.position.z - oldBlockPos.getZ() - 0.5);
|
||||||
BlockPos newBlockPos = new BlockPos(oldBlockPos.getX(), oldBlockPos.getY(), z);
|
BlockPos newBlockPos = new BlockPos(oldBlockPos.getX(), oldBlockPos.getY(), z);
|
||||||
@@ -127,10 +130,19 @@ public class Mirror {
|
|||||||
if (world.isBlockLoaded(newBlockPos, true)) {
|
if (world.isBlockLoaded(newBlockPos, true)) {
|
||||||
newBlockState = oldBlockState.withMirror(net.minecraft.util.Mirror.LEFT_RIGHT);
|
newBlockState = oldBlockState.withMirror(net.minecraft.util.Mirror.LEFT_RIGHT);
|
||||||
|
|
||||||
world.setBlockState(newBlockPos, newBlockState);
|
placeBlock(world, player, newBlockPos, newBlockState);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void placeBlock(World world, EntityPlayer player, BlockPos newBlockPos, IBlockState newBlockState){
|
||||||
|
world.setBlockState(newBlockPos, newBlockState);
|
||||||
|
|
||||||
|
//Array synergy
|
||||||
|
BlockSnapshot blockSnapshot = new BlockSnapshot(world, newBlockPos, newBlockState);
|
||||||
|
BlockEvent.PlaceEvent placeEvent = new BlockEvent.PlaceEvent(blockSnapshot, newBlockState, player, EnumHand.MAIN_HAND);
|
||||||
|
Array.onBlockPlaced(placeEvent);
|
||||||
|
}
|
||||||
|
|
||||||
private static IBlockState getVerticalMirror(IBlockState blockState) {
|
private static IBlockState getVerticalMirror(IBlockState blockState) {
|
||||||
//Stairs
|
//Stairs
|
||||||
if (blockState.getBlock() instanceof BlockStairs) {
|
if (blockState.getBlock() instanceof BlockStairs) {
|
||||||
@@ -199,7 +211,7 @@ public class Mirror {
|
|||||||
BlockPos newBlockPos = new BlockPos(x, oldBlockPos.getY(), oldBlockPos.getZ());
|
BlockPos newBlockPos = new BlockPos(x, oldBlockPos.getY(), oldBlockPos.getZ());
|
||||||
//break block
|
//break block
|
||||||
if (event.getWorld().isBlockLoaded(newBlockPos, true)) {
|
if (event.getWorld().isBlockLoaded(newBlockPos, true)) {
|
||||||
event.getWorld().setBlockToAir(newBlockPos);
|
breakBlock(event, newBlockPos);
|
||||||
}
|
}
|
||||||
if (m.mirrorY) breakMirrorY(event, m, newBlockPos);
|
if (m.mirrorY) breakMirrorY(event, m, newBlockPos);
|
||||||
if (m.mirrorZ) breakMirrorZ(event, m, newBlockPos);
|
if (m.mirrorZ) breakMirrorZ(event, m, newBlockPos);
|
||||||
@@ -211,7 +223,7 @@ public class Mirror {
|
|||||||
BlockPos newBlockPos = new BlockPos(oldBlockPos.getX(), y, oldBlockPos.getZ());
|
BlockPos newBlockPos = new BlockPos(oldBlockPos.getX(), y, oldBlockPos.getZ());
|
||||||
//place block
|
//place block
|
||||||
if (event.getWorld().isBlockLoaded(newBlockPos, true)) {
|
if (event.getWorld().isBlockLoaded(newBlockPos, true)) {
|
||||||
event.getWorld().setBlockToAir(newBlockPos);
|
breakBlock(event, newBlockPos);
|
||||||
}
|
}
|
||||||
if (m.mirrorZ) breakMirrorZ(event, m, newBlockPos);
|
if (m.mirrorZ) breakMirrorZ(event, m, newBlockPos);
|
||||||
}
|
}
|
||||||
@@ -222,10 +234,18 @@ public class Mirror {
|
|||||||
BlockPos newBlockPos = new BlockPos(oldBlockPos.getX(), oldBlockPos.getY(), z);
|
BlockPos newBlockPos = new BlockPos(oldBlockPos.getX(), oldBlockPos.getY(), z);
|
||||||
//place block
|
//place block
|
||||||
if (event.getWorld().isBlockLoaded(newBlockPos, true)) {
|
if (event.getWorld().isBlockLoaded(newBlockPos, true)) {
|
||||||
event.getWorld().setBlockToAir(newBlockPos);
|
breakBlock(event, newBlockPos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void breakBlock(BlockEvent.BreakEvent event, BlockPos newBlockPos){
|
||||||
|
event.getWorld().setBlockToAir(newBlockPos);
|
||||||
|
|
||||||
|
//Array synergy
|
||||||
|
BlockEvent.BreakEvent breakEvent = new BlockEvent.BreakEvent(event.getWorld(), newBlockPos, event.getState(), event.getPlayer());
|
||||||
|
Array.onBlockBroken(breakEvent);
|
||||||
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public static void onRender(RenderWorldLastEvent event) {
|
public static void onRender(RenderWorldLastEvent event) {
|
||||||
|
|||||||
@@ -48,7 +48,12 @@ public class QuickReplace {
|
|||||||
if (!message.isBlockHit() || message.getBlockPos() == null) return;
|
if (!message.isBlockHit() || message.getBlockPos() == null) return;
|
||||||
|
|
||||||
BlockPos placedAgainstBlockPos = message.getBlockPos();
|
BlockPos placedAgainstBlockPos = message.getBlockPos();
|
||||||
//placedAgainstBlockPos = placedAgainstBlockPos.down();
|
|
||||||
|
//Get under tall grass and other replaceable blocks
|
||||||
|
if (player.world.getBlockState(placedAgainstBlockPos).getBlock().isReplaceable(player.world, placedAgainstBlockPos)) {
|
||||||
|
placedAgainstBlockPos = placedAgainstBlockPos.down();
|
||||||
|
}
|
||||||
|
|
||||||
IBlockState blockState = blockStates.get(player.getUniqueID());
|
IBlockState blockState = blockStates.get(player.getUniqueID());
|
||||||
player.world.setBlockState(placedAgainstBlockPos, blockState);
|
player.world.setBlockState(placedAgainstBlockPos, blockState);
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package nl.requios.effortlessbuilding.inventory;
|
package nl.requios.effortlessbuilding.capability;
|
||||||
|
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
@@ -7,12 +7,13 @@ import net.minecraftforge.common.capabilities.ICapabilitySerializable;
|
|||||||
import net.minecraftforge.items.CapabilityItemHandler;
|
import net.minecraftforge.items.CapabilityItemHandler;
|
||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
import net.minecraftforge.items.ItemStackHandler;
|
import net.minecraftforge.items.ItemStackHandler;
|
||||||
|
import nl.requios.effortlessbuilding.item.ItemRandomizerBag;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class RandomizerBagCapabilityProvider implements ICapabilitySerializable<NBTTagCompound> {
|
public class ItemHandlerCapabilityProvider implements ICapabilitySerializable<NBTTagCompound> {
|
||||||
IItemHandler itemHandler = new ItemStackHandler(5);
|
IItemHandler itemHandler = new ItemStackHandler(ItemRandomizerBag.INV_SIZE);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasCapability(@Nonnull Capability<?> capability, @Nullable EnumFacing facing) {
|
public boolean hasCapability(@Nonnull Capability<?> capability, @Nullable EnumFacing facing) {
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package nl.requios.effortlessbuilding.inventory;
|
package nl.requios.effortlessbuilding.gui;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
@@ -10,30 +10,34 @@ import net.minecraft.item.ItemStack;
|
|||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
import net.minecraftforge.items.SlotItemHandler;
|
import net.minecraftforge.items.SlotItemHandler;
|
||||||
|
import nl.requios.effortlessbuilding.item.ItemRandomizerBag;
|
||||||
|
|
||||||
public class RandomizerBagContainer extends Container {
|
public class RandomizerBagContainer extends Container {
|
||||||
|
|
||||||
private final IItemHandler bagInventory;
|
private final IItemHandler bagInventory;
|
||||||
private final int sizeInventory;
|
private final int sizeInventory;
|
||||||
|
|
||||||
|
private static final int INV_START = ItemRandomizerBag.INV_SIZE, INV_END = INV_START + 26,
|
||||||
|
HOTBAR_START = INV_END + 1, HOTBAR_END = HOTBAR_START + 8;
|
||||||
|
|
||||||
public RandomizerBagContainer(InventoryPlayer parInventoryPlayer, IItemHandler parIInventory) {
|
public RandomizerBagContainer(InventoryPlayer parInventoryPlayer, IItemHandler parIInventory) {
|
||||||
bagInventory = parIInventory;
|
bagInventory = parIInventory;
|
||||||
sizeInventory = bagInventory.getSlots();
|
sizeInventory = bagInventory.getSlots();
|
||||||
for (int i = 0; i < sizeInventory; ++i) {
|
for (int i = 0; i < sizeInventory; ++i) {
|
||||||
this.addSlotToContainer(new SlotItemHandler(bagInventory, i, 80 + (18 * (i / 4)), 8 + (18 * (i % 4))));
|
this.addSlotToContainer(new SlotItemHandler(bagInventory, i, 44 + (18 * i), 20));
|
||||||
}
|
}
|
||||||
|
|
||||||
// add player inventory slots
|
// add player inventory slots
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < 3; ++i) {
|
for (i = 0; i < 3; ++i) {
|
||||||
for (int j = 0; j < 9; ++j) {
|
for (int j = 0; j < 9; ++j) {
|
||||||
addSlotToContainer(new Slot(parInventoryPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
|
addSlotToContainer(new Slot(parInventoryPlayer, j + i * 9 + 9, 8 + j * 18, 51 + i * 18));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// add hotbar slots
|
// add hotbar slots
|
||||||
for (i = 0; i < 9; ++i) {
|
for (i = 0; i < 9; ++i) {
|
||||||
addSlotToContainer(new Slot(parInventoryPlayer, i, 8 + i * 18, 142));
|
addSlotToContainer(new Slot(parInventoryPlayer, i, 8 + i * 18, 109));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,58 +47,58 @@ public class RandomizerBagContainer extends Container {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack transferStackInSlot(EntityPlayer playerIn,
|
public ItemStack transferStackInSlot(EntityPlayer playerIn, int slotIndex) {
|
||||||
int slotIndex) {
|
ItemStack itemstack = null;
|
||||||
ItemStack itemStack1 = null;
|
Slot slot = this.inventorySlots.get(slotIndex);
|
||||||
Slot slot = inventorySlots.get(slotIndex);
|
|
||||||
|
|
||||||
if (slot != null && slot.getHasStack()) {
|
if (slot != null && slot.getHasStack()) {
|
||||||
ItemStack itemStack2 = slot.getStack();
|
ItemStack itemstack1 = slot.getStack();
|
||||||
itemStack1 = itemStack2.copy();
|
itemstack = itemstack1.copy();
|
||||||
|
|
||||||
if (slotIndex == 0) {
|
// If item is in our custom inventory
|
||||||
if (!mergeItemStack(itemStack2, sizeInventory,
|
if (slotIndex < INV_START) {
|
||||||
sizeInventory + 36, true)) {
|
// try to place in player inventory / action bar
|
||||||
|
if (!this.mergeItemStack(itemstack1, INV_START, HOTBAR_END + 1, true)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
slot.onSlotChange(itemStack2, itemStack1);
|
slot.onSlotChange(itemstack1, itemstack);
|
||||||
} else if (slotIndex != 1) {
|
}
|
||||||
if (slotIndex >= sizeInventory
|
// Item is in inventory / hotbar, try to place in custom inventory or armor slots
|
||||||
&& slotIndex < sizeInventory + 27) // player inventory slots
|
else {
|
||||||
{
|
/**
|
||||||
if (!mergeItemStack(itemStack2, sizeInventory + 27,
|
* Implementation number 1: Shift-click into your custom inventory
|
||||||
sizeInventory + 36, false)) {
|
*/
|
||||||
|
if (slotIndex >= INV_START) {
|
||||||
|
// place in custom inventory
|
||||||
|
if (!this.mergeItemStack(itemstack1, 0, INV_START, false)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
} else if (slotIndex >= sizeInventory + 27
|
|
||||||
&& slotIndex < sizeInventory + 36
|
|
||||||
&& !mergeItemStack(itemStack2, sizeInventory + 1,
|
|
||||||
sizeInventory + 27, false)) // hotbar slots
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
} else if (!mergeItemStack(itemStack2, sizeInventory,
|
|
||||||
sizeInventory + 36, false)) {
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itemStack2.getCount() == 0) {
|
}
|
||||||
slot.putStack(null);
|
|
||||||
|
if (itemstack1.getCount() == 0) {
|
||||||
|
slot.putStack(ItemStack.EMPTY);
|
||||||
} else {
|
} else {
|
||||||
slot.onSlotChanged();
|
slot.onSlotChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itemStack2.getCount() == itemStack1.getCount()) {
|
if (itemstack1.getCount() == itemstack.getCount()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
slot.onTake(playerIn, itemStack2);
|
slot.onTake(playerIn, itemstack1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return itemStack1;
|
return itemstack;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* You should override this method to prevent the player from moving the stack that
|
||||||
|
* opened the inventory, otherwise if the player moves it, the inventory will not
|
||||||
|
* be able to save properly
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public ItemStack slotClick(int slot, int dragType, ClickType clickTypeIn, EntityPlayer player) {
|
public ItemStack slotClick(int slot, int dragType, ClickType clickTypeIn, EntityPlayer player) {
|
||||||
// this will prevent the player from interacting with the item that opened the inventory:
|
// this will prevent the player from interacting with the item that opened the inventory:
|
||||||
@@ -1,9 +1,8 @@
|
|||||||
package nl.requios.effortlessbuilding.inventory;
|
package nl.requios.effortlessbuilding.gui;
|
||||||
|
|
||||||
import net.minecraft.client.gui.inventory.GuiContainer;
|
import net.minecraft.client.gui.inventory.GuiContainer;
|
||||||
import net.minecraft.client.renderer.GlStateManager;
|
import net.minecraft.client.renderer.GlStateManager;
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.IInventory;
|
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
@@ -12,35 +11,37 @@ import nl.requios.effortlessbuilding.EffortlessBuilding;
|
|||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public class RandomizerBagGuiContainer extends GuiContainer {
|
public class RandomizerBagGuiContainer extends GuiContainer {
|
||||||
private static final ResourceLocation grinderGuiTextures =
|
private static final ResourceLocation guiTextures =
|
||||||
new ResourceLocation(EffortlessBuilding.MODID
|
new ResourceLocation(EffortlessBuilding.MODID + ":textures/gui/container/randomizerbag.png");
|
||||||
+ ":textures/gui/container/randomizerbag.png");
|
|
||||||
private final InventoryPlayer inventoryPlayer;
|
private final InventoryPlayer inventoryPlayer;
|
||||||
private final IItemHandler inventoryBag;
|
private final IItemHandler inventoryBag;
|
||||||
|
|
||||||
public RandomizerBagGuiContainer(InventoryPlayer parInventoryPlayer,
|
public RandomizerBagGuiContainer(InventoryPlayer inventoryPlayer, IItemHandler inventoryBag) {
|
||||||
IItemHandler parInventoryBag) {
|
super(new RandomizerBagContainer(inventoryPlayer, inventoryBag));
|
||||||
super(new RandomizerBagContainer(parInventoryPlayer,
|
this.inventoryPlayer = inventoryPlayer;
|
||||||
parInventoryBag));
|
this.inventoryBag = inventoryBag;
|
||||||
inventoryPlayer = parInventoryPlayer;
|
|
||||||
inventoryBag = parInventoryBag;
|
ySize = 134;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
|
||||||
|
drawDefaultBackground();
|
||||||
|
super.drawScreen(mouseX, mouseY, partialTicks);
|
||||||
|
this.renderHoveredToolTip(mouseX, mouseY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
|
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
|
||||||
String s = "Randomizer bag";
|
String s = "Randomizer Bag";
|
||||||
fontRenderer.drawString(s, xSize / 2 - fontRenderer.getStringWidth(s) / 2, 6, 4210752);
|
fontRenderer.drawString(s, 8, 6, 0x404040);
|
||||||
fontRenderer.drawString(inventoryPlayer.getDisplayName().getUnformattedText(), 8, ySize - 96 + 2, 4210752);
|
fontRenderer.drawString(inventoryPlayer.getDisplayName().getUnformattedText(), 8, ySize - 96 + 2, 0x404040);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Args : renderPartialTicks, mouseX, mouseY
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerBackgroundLayer(float partialTicks,
|
protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) {
|
||||||
int mouseX, int mouseY) {
|
|
||||||
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
|
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||||
mc.getTextureManager().bindTexture(grinderGuiTextures);
|
mc.getTextureManager().bindTexture(guiTextures);
|
||||||
int marginHorizontal = (width - xSize) / 2;
|
int marginHorizontal = (width - xSize) / 2;
|
||||||
int marginVertical = (height - ySize) / 2;
|
int marginVertical = (height - ySize) / 2;
|
||||||
drawTexturedModalRect(marginHorizontal, marginVertical, 0, 0, xSize, ySize);
|
drawTexturedModalRect(marginHorizontal, marginVertical, 0, 0, xSize, ySize);
|
||||||
@@ -1,24 +1,22 @@
|
|||||||
package nl.requios.effortlessbuilding.inventory;
|
package nl.requios.effortlessbuilding.gui;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.fml.common.network.IGuiHandler;
|
import net.minecraftforge.fml.common.network.IGuiHandler;
|
||||||
import net.minecraftforge.items.CapabilityItemHandler;
|
import net.minecraftforge.items.CapabilityItemHandler;
|
||||||
import net.minecraftforge.items.IItemHandler;
|
|
||||||
import net.minecraftforge.items.ItemStackHandler;
|
|
||||||
import nl.requios.effortlessbuilding.EffortlessBuilding;
|
import nl.requios.effortlessbuilding.EffortlessBuilding;
|
||||||
import nl.requios.effortlessbuilding.inventory.RandomizerBagContainer;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class RandomizerGuiHandler implements IGuiHandler {
|
public class RandomizerBagGuiHandler implements IGuiHandler {
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||||
if (ID == EffortlessBuilding.RANDOMIZER_BAG_GUI) {
|
if (ID == EffortlessBuilding.RANDOMIZER_BAG_GUI) {
|
||||||
// Use the player's held item to create the inventory
|
// Use the player's held item to create the container
|
||||||
return new RandomizerBagContainer(player.inventory, player.getHeldItem(EnumHand.MAIN_HAND).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null));
|
return new RandomizerBagContainer(player.inventory,
|
||||||
|
player.getHeldItem(EnumHand.MAIN_HAND).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null));
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -27,9 +25,9 @@ public class RandomizerGuiHandler implements IGuiHandler {
|
|||||||
@Override
|
@Override
|
||||||
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||||
if (ID == EffortlessBuilding.RANDOMIZER_BAG_GUI) {
|
if (ID == EffortlessBuilding.RANDOMIZER_BAG_GUI) {
|
||||||
// We have to cast the new container as our custom class
|
// Use the player's held item to create the client-side gui container
|
||||||
// and pass in currently held item for the inventory
|
return new RandomizerBagGuiContainer(player.inventory,
|
||||||
return new RandomizerBagGuiContainer(player.inventory, player.getHeldItem(EnumHand.MAIN_HAND).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null));
|
player.getHeldItem(EnumHand.MAIN_HAND).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null));
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -1,23 +1,34 @@
|
|||||||
package nl.requios.effortlessbuilding.item;
|
package nl.requios.effortlessbuilding.item;
|
||||||
|
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.SoundType;
|
||||||
|
import net.minecraft.block.state.IBlockState;
|
||||||
|
import net.minecraft.client.util.ITooltipFlag;
|
||||||
import net.minecraft.creativetab.CreativeTabs;
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemBlock;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.ActionResult;
|
import net.minecraft.util.*;
|
||||||
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.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.capabilities.ICapabilityProvider;
|
import net.minecraftforge.common.capabilities.ICapabilityProvider;
|
||||||
|
import net.minecraftforge.items.CapabilityItemHandler;
|
||||||
|
import net.minecraftforge.items.IItemHandler;
|
||||||
import nl.requios.effortlessbuilding.EffortlessBuilding;
|
import nl.requios.effortlessbuilding.EffortlessBuilding;
|
||||||
import nl.requios.effortlessbuilding.inventory.RandomizerBagCapabilityProvider;
|
import nl.requios.effortlessbuilding.capability.ItemHandlerCapabilityProvider;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
public class ItemRandomizerBag extends Item {
|
public class ItemRandomizerBag extends Item {
|
||||||
|
public static final int INV_SIZE = 5;
|
||||||
|
|
||||||
|
private Random rand;
|
||||||
|
|
||||||
public ItemRandomizerBag() {
|
public ItemRandomizerBag() {
|
||||||
this.setRegistryName(EffortlessBuilding.MODID, "randomizer_bag");
|
this.setRegistryName(EffortlessBuilding.MODID, "randomizer_bag");
|
||||||
@@ -25,33 +36,87 @@ public class ItemRandomizerBag extends Item {
|
|||||||
|
|
||||||
this.maxStackSize = 1;
|
this.maxStackSize = 1;
|
||||||
this.setCreativeTab(CreativeTabs.DECORATIONS);
|
this.setCreativeTab(CreativeTabs.DECORATIONS);
|
||||||
|
rand = new Random(1337);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EnumActionResult onItemUse(EntityPlayer player, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
|
public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
|
||||||
|
|
||||||
if (worldIn.isRemote) return EnumActionResult.PASS;
|
|
||||||
EffortlessBuilding.log(player, "onItemUse");
|
|
||||||
|
|
||||||
if (player.isSneaking()) {
|
if (player.isSneaking()) {
|
||||||
|
if (world.isRemote) return EnumActionResult.SUCCESS;
|
||||||
//Open inventory
|
//Open inventory
|
||||||
player.openGui(EffortlessBuilding.instance, EffortlessBuilding.RANDOMIZER_BAG_GUI, worldIn, 0, 0, 0);
|
player.openGui(EffortlessBuilding.instance, EffortlessBuilding.RANDOMIZER_BAG_GUI, world, 0, 0, 0);
|
||||||
} else {
|
} else {
|
||||||
//Place block
|
//Place block
|
||||||
|
return placeRandomBlockFromBag(player, world, pos, hand, facing, hitX, hitY, hitZ);
|
||||||
}
|
}
|
||||||
return EnumActionResult.PASS;
|
return EnumActionResult.SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
private EnumActionResult placeRandomBlockFromBag(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ){
|
||||||
|
//Get bag inventory
|
||||||
|
ItemStack bag = player.getHeldItem(hand);
|
||||||
|
if (!bag.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null)) return EnumActionResult.FAIL;
|
||||||
|
IItemHandler bagInventory = bag.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
|
||||||
|
|
||||||
|
//Find how many stacks are non-empty, and save them in a list
|
||||||
|
int nonempty = 0;
|
||||||
|
List<ItemStack> nonEmptyStacks = new ArrayList<>(5);
|
||||||
|
List<Integer> originalSlots = new ArrayList<>(5);
|
||||||
|
for (int i = 0; i < bagInventory.getSlots(); i++) {
|
||||||
|
ItemStack stack = bagInventory.getStackInSlot(i);
|
||||||
|
if (!stack.isEmpty()) {
|
||||||
|
nonempty++;
|
||||||
|
nonEmptyStacks.add(stack);
|
||||||
|
originalSlots.add(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nonEmptyStacks.size() != originalSlots.size()) throw new Error("NonEmptyStacks and OriginalSlots not same size");
|
||||||
|
|
||||||
|
if (nonempty == 0) return EnumActionResult.FAIL;
|
||||||
|
|
||||||
|
//Pick random slot
|
||||||
|
int randomSlot = rand.nextInt(nonempty);
|
||||||
|
|
||||||
|
ItemStack toPlace = nonEmptyStacks.get(randomSlot);
|
||||||
|
if (toPlace.isEmpty()) return EnumActionResult.FAIL;
|
||||||
|
|
||||||
|
if (toPlace.getItem() instanceof ItemBlock) {
|
||||||
|
IBlockState existingBlockState = world.getBlockState(pos);
|
||||||
|
Block existingBlock = existingBlockState.getBlock();
|
||||||
|
|
||||||
|
if (!existingBlock.isReplaceable(world, pos))
|
||||||
|
{
|
||||||
|
pos = pos.offset(facing);
|
||||||
|
}
|
||||||
|
|
||||||
|
Block block = Block.getBlockFromItem(toPlace.getItem());
|
||||||
|
if (!toPlace.isEmpty() && player.canPlayerEdit(pos, facing, toPlace) && world.mayPlace(block, pos, false, facing, (Entity)null)) {
|
||||||
|
IBlockState blockState = block.getStateForPlacement(world, pos, facing, hitX, hitY, hitZ, toPlace.getMetadata(), player, hand);
|
||||||
|
if (world.setBlockState(pos, blockState)){
|
||||||
|
SoundType soundType = block.getSoundType(blockState, world, pos, player);
|
||||||
|
world.playSound(player, pos, soundType.getPlaceSound(), SoundCategory.BLOCKS, (soundType.getVolume() + 1.0F) / 2.0F, soundType.getPitch() * 0.8F);
|
||||||
|
|
||||||
|
if (!player.isCreative())
|
||||||
|
bagInventory.extractItem(originalSlots.get(randomSlot), 1, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
//((ItemBlock) toPlace.getItem()).placeBlockAt(toPlace, player, world, pos, facing, hitX, hitY, hitZ, blockState);
|
||||||
|
//return ((ItemBlock) toPlace.getItem()).onItemUse(player, world, pos, hand, facing, hitX, hitY, hitZ);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return EnumActionResult.SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) {
|
public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, EnumHand hand) {
|
||||||
if (worldIn.isRemote) return new ActionResult<>(EnumActionResult.PASS, playerIn.getHeldItem(handIn));
|
if (world.isRemote) return new ActionResult<>(EnumActionResult.PASS, player.getHeldItem(hand));
|
||||||
EffortlessBuilding.log(playerIn, "onItemRightClick");
|
|
||||||
|
|
||||||
//Open inventory
|
//Open inventory
|
||||||
playerIn.openGui(EffortlessBuilding.instance, EffortlessBuilding.RANDOMIZER_BAG_GUI, worldIn, 0, 0, 0);
|
player.openGui(EffortlessBuilding.instance, EffortlessBuilding.RANDOMIZER_BAG_GUI, world, 0, 0, 0);
|
||||||
|
|
||||||
return new ActionResult<>(EnumActionResult.PASS, playerIn.getHeldItem(handIn));
|
return new ActionResult<>(EnumActionResult.PASS, player.getHeldItem(hand));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -62,6 +127,12 @@ public class ItemRandomizerBag extends Item {
|
|||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable NBTTagCompound nbt) {
|
public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable NBTTagCompound nbt) {
|
||||||
return new RandomizerBagCapabilityProvider();
|
return new ItemHandlerCapabilityProvider();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addInformation(ItemStack stack, @Nullable World world, List<String> tooltip, ITooltipFlag flag) {
|
||||||
|
tooltip.add("Sneak + rightclick to open inventory");
|
||||||
|
tooltip.add("Rightclick to place a random block");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,8 +42,8 @@ public class ClientProxy implements IProxy {
|
|||||||
keyBindings = new KeyBinding[2];
|
keyBindings = new KeyBinding[2];
|
||||||
|
|
||||||
// instantiate the key bindings
|
// instantiate the key bindings
|
||||||
keyBindings[0] = new KeyBinding("key.hud.desc", Keyboard.KEY_NUMPAD0, "key.effortlessbuilding.category");
|
keyBindings[0] = new KeyBinding("key.hud.desc", Keyboard.KEY_ADD, "key.effortlessbuilding.category");
|
||||||
keyBindings[1] = new KeyBinding("key.replace.desc", Keyboard.KEY_NUMPAD1, "key.effortlessbuilding.category");
|
keyBindings[1] = new KeyBinding("key.replace.desc", Keyboard.KEY_SUBTRACT, "key.effortlessbuilding.category");
|
||||||
|
|
||||||
// register all the key bindings
|
// register all the key bindings
|
||||||
for (int i = 0; i < keyBindings.length; ++i) {
|
for (int i = 0; i < keyBindings.length; ++i) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"parent": "item/generated",
|
"parent": "item/generated",
|
||||||
"textures": {
|
"textures": {
|
||||||
"layer0": "items/fireball"
|
"layer0": "effortlessbuilding:items/randomizerbag"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"pattern": [
|
||||||
|
" # ",
|
||||||
|
"#O#",
|
||||||
|
" # "
|
||||||
|
],
|
||||||
|
"key": {
|
||||||
|
"#": {
|
||||||
|
"item": "minecraft:leather"
|
||||||
|
},
|
||||||
|
"O": {
|
||||||
|
"item": "minecraft:planks",
|
||||||
|
"data": 32767
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"item": "effortlessbuilding:randomizer_bag"
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 358 B |
Binary file not shown.
|
After Width: | Height: | Size: 358 B |
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
Reference in New Issue
Block a user