mirror of
https://github.com/GTNewHorizons/ForestryMC.git
synced 2026-10-27 14:53:53 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4b310d407f | ||
|
|
f2e85073d3 | ||
|
|
0bd9a7978a | ||
|
|
e47fc90433 | ||
|
|
452064ef1d | ||
|
|
59c8c36520 | ||
|
|
ea1c4edae4 | ||
|
|
4c46626cdb | ||
|
|
d6fa8d8b74 | ||
|
|
704861b666 | ||
|
|
db25dcce48 | ||
|
|
4b364a93db | ||
|
|
a217884480 | ||
|
|
90f7c36a1e | ||
|
|
974e44f5cd | ||
|
|
bbb374cd5e |
No files matched your search
@@ -1,29 +0,0 @@
|
||||
How to submit a bug report to Forestry
|
||||
====================================
|
||||
Please make sure the bug has not already been reported by [searching the issues](https://github.com/ForestryMC/ForestryMC/issues?q=is%3Aissue).
|
||||
|
||||
If you can, see if the bug still happens with the latest unstable build.
|
||||
[The latest unstable builds are available here](http://jenkins.ic2.player.to/job/Forestry_Dev/)
|
||||
|
||||
For crashes, you must post a link to the full crash report.
|
||||
[gist.github.com](gist.github.com) or [pastebin.com](www.pastebin.com) are good places to upload them.
|
||||
Full crash reports are located in [the minecraft data folder](http://hopper.minecraft.net/help/finding-minecraft-data-folder/), in "crash-reports".
|
||||
|
||||
Thank you for reporting bugs!
|
||||
|
||||
How to contribute to Forestry
|
||||
====================================
|
||||
|
||||
### Contributor License Agreement
|
||||
|
||||
Before pull requests can be accepted, the contributor needs to sign a contributor license agreement. (Essentially giving a license for using his code and/or media and for re-licensing it, for details read the agreement linked below.)
|
||||
|
||||
### How do I sign?
|
||||
|
||||
To keep the hassle for everyone involved to a minimum, Forestry uses CLAHub to manage the agreements. To get started, <a href="https://www.clahub.com/agreements/ForestryMC/ForestryMC">sign the Contributor License Agreement</a>.
|
||||
|
||||
### Why is this needed?
|
||||
|
||||
Without CLAs it at some point becomes essentially impossible to change the license of a project which accepts contributions from third parties. Without an explicit agreement every contributor would still own the copyright to his code. So as long as it (or parts of it) remain in the code base, he would have to agree to every license change. If enough time has passed, there may be dozens, perhaps even hundreds of contributors involved and it will be very hard to track down each and every one of them and get them to agree on a new license.
|
||||
|
||||
This would make it impossible to change the license to a more permissive one at a later date, so the code would be locked into CC BY-NC-ND 3.0 until it passes into the public domain about a hundred years from now. This situation is to be avoided and that’s why you are being bothered with this CLA.
|
||||
+2
-1
@@ -4,9 +4,10 @@ dependencies {
|
||||
api("com.github.GTNewHorizons:GTNHLib:0.9.54:dev")
|
||||
api('curse.maven:cofh-lib-220333:2388748')
|
||||
compileOnlyApi('com.github.GTNewHorizons:Angelica:2.1.19:api')
|
||||
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.8.93-GTNH:dev')
|
||||
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.8.107-GTNH:dev')
|
||||
compileOnly('com.github.GTNewHorizons:inventory-tweaks:1.7.1:api')
|
||||
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.57:api')
|
||||
compileOnly('net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev')
|
||||
compileOnly('curse.maven:craftguide-75557:2459320')
|
||||
devOnlyNonPublishable('net.xonich.mc:NoHotbarNeeded:0.0.3:dev')
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
// Add any additional repositiroes for your dependencies here
|
||||
|
||||
repositories {
|
||||
mavenLocal()
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package forestry.api.apiculture;
|
||||
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public interface IArmorApiaristMulti extends IArmorApiarist {
|
||||
|
||||
/**
|
||||
* Called to determine how many pieces an armor "counts for". For instance, if this returns 4, the single piece will
|
||||
* act as full protection.
|
||||
*
|
||||
* @param entity Entity being attacked
|
||||
* @param armor Armor item
|
||||
* @param cause Optional cause of attack, such as a bee effect identifier
|
||||
* @return Amount of effective protected slots
|
||||
*/
|
||||
default int getProtectionCount(EntityLivingBase entity, ItemStack armor, String cause) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -15,26 +15,20 @@ import net.minecraft.item.ItemStack;
|
||||
|
||||
import forestry.api.apiculture.IArmorApiarist;
|
||||
import forestry.api.apiculture.IArmorApiaristHelper;
|
||||
import forestry.api.apiculture.IArmorApiaristMulti;
|
||||
|
||||
public class ArmorApiaristHelper implements IArmorApiaristHelper {
|
||||
|
||||
@Override
|
||||
public boolean isArmorApiarist(ItemStack stack, EntityLivingBase entity, String cause, boolean doProtect) {
|
||||
if (stack == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Item item = stack.getItem();
|
||||
if (!(item instanceof IArmorApiarist)) {
|
||||
return false;
|
||||
}
|
||||
if (stack == null || !(stack.getItem() instanceof IArmorApiarist armor)) return false;
|
||||
|
||||
IArmorApiarist armorApiarist = (IArmorApiarist) item;
|
||||
try {
|
||||
return armorApiarist.protectEntity(entity, stack, cause, doProtect);
|
||||
return armor.protectEntity(entity, stack, cause, doProtect);
|
||||
} catch (Throwable ignored) { // protectEntity is new to the API and may not be implemented by the armor
|
||||
if (entity instanceof EntityPlayer) {
|
||||
return armorApiarist.protectPlayer((EntityPlayer) entity, stack, cause, doProtect);
|
||||
return armor.protectPlayer((EntityPlayer) entity, stack, cause, doProtect);
|
||||
} else {
|
||||
return true; // fallback on assuming IArmorApiarist will protect the entity
|
||||
}
|
||||
@@ -48,11 +42,13 @@ public class ArmorApiaristHelper implements IArmorApiaristHelper {
|
||||
for (int i = 1; i <= 4; i++) {
|
||||
ItemStack armorItem = entity.getEquipmentInSlot(i);
|
||||
if (isArmorApiarist(armorItem, entity, cause, doProtect)) {
|
||||
count++;
|
||||
Item item = armorItem.getItem();
|
||||
if (item instanceof IArmorApiaristMulti am) count += am.getProtectionCount(entity, armorItem, cause);
|
||||
else count++;
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
return Math.min(count, 4);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -15,6 +15,7 @@ import forestry.api.core.Tabs;
|
||||
import forestry.apiculture.gui.GuiBeealyzer;
|
||||
import forestry.apiculture.inventory.ItemInventoryBeealyzer;
|
||||
import forestry.core.gui.ContainerAlyzer;
|
||||
import forestry.core.inventory.ItemLocation;
|
||||
import forestry.core.items.ItemWithGui;
|
||||
|
||||
public class ItemBeealyzer extends ItemWithGui {
|
||||
@@ -24,13 +25,13 @@ public class ItemBeealyzer extends ItemWithGui {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
ItemInventoryBeealyzer inventory = new ItemInventoryBeealyzer(player, heldItem);
|
||||
return new GuiBeealyzer(player, inventory);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
ItemInventoryBeealyzer inventory = new ItemInventoryBeealyzer(player, heldItem);
|
||||
return new ContainerAlyzer(inventory, player);
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ import forestry.apiculture.gui.ContainerHabitatLocator;
|
||||
import forestry.apiculture.gui.GuiHabitatLocator;
|
||||
import forestry.apiculture.inventory.ItemInventoryHabitatLocator;
|
||||
import forestry.apiculture.render.TextureHabitatLocator;
|
||||
import forestry.core.inventory.ItemLocation;
|
||||
import forestry.core.items.ItemWithGui;
|
||||
import forestry.core.utils.StringUtil;
|
||||
|
||||
@@ -81,12 +82,12 @@ public class ItemHabitatLocator extends ItemWithGui {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
return new GuiHabitatLocator(player, new ItemInventoryHabitatLocator(player, heldItem));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
return new ContainerHabitatLocator(player, new ItemInventoryHabitatLocator(player, heldItem));
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,7 @@ import forestry.api.core.Tabs;
|
||||
import forestry.apiculture.gui.ContainerImprinter;
|
||||
import forestry.apiculture.gui.GuiImprinter;
|
||||
import forestry.apiculture.inventory.ItemInventoryImprinter;
|
||||
import forestry.core.inventory.ItemLocation;
|
||||
import forestry.core.items.ItemWithGui;
|
||||
|
||||
public class ItemImprinter extends ItemWithGui {
|
||||
@@ -24,12 +25,12 @@ public class ItemImprinter extends ItemWithGui {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
return new GuiImprinter(player.inventory, new ItemInventoryImprinter(player, heldItem));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
return new ContainerImprinter(player.inventory, new ItemInventoryImprinter(player, heldItem));
|
||||
}
|
||||
}
|
||||
@@ -111,6 +111,14 @@ public class AlvearyController extends RectangularMultiblockControllerBase
|
||||
this.readFromNBT(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void detachBlock(IMultiblockComponent part, boolean chunkUnloading) {
|
||||
if (!chunkUnloading) {
|
||||
inventory.dumpInventoryIntoWorld(this.worldObj, part.getCoordinates());
|
||||
}
|
||||
super.detachBlock(part, chunkUnloading);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onBlockAdded(IMultiblockComponent newPart) {
|
||||
if (newPart instanceof IAlvearyComponent) {
|
||||
@@ -159,8 +167,6 @@ public class AlvearyController extends RectangularMultiblockControllerBase
|
||||
activeComponents.remove(oldPart);
|
||||
}
|
||||
}
|
||||
|
||||
inventory.dumpInventoryIntoWorld(this.worldObj, oldPart.getCoordinates());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -16,8 +16,8 @@ import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.particle.EffectRenderer;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
@@ -72,7 +72,7 @@ public class BlockSlab extends net.minecraft.block.BlockSlab implements IWoodTyp
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public IIcon getIcon(int side, int meta) {
|
||||
return IconProviderWood.getPlankIcon(EnumWoodType.LARCH);
|
||||
return IconProviderWood.getPlankIcon(EnumWoodType.VALUES[meta]);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -84,7 +84,8 @@ public class BlockSlab extends net.minecraft.block.BlockSlab implements IWoodTyp
|
||||
|
||||
@Override
|
||||
protected ItemStack createStackedBlock(int meta) {
|
||||
return new ItemStack(Blocks.wooden_slab, 2, meta & 7);
|
||||
Item item = Item.getItemFromBlock(this);
|
||||
return item != null ? new ItemStack(item, 2, 0) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -107,6 +108,18 @@ public class BlockSlab extends net.minecraft.block.BlockSlab implements IWoodTyp
|
||||
return new TileWood();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack) {
|
||||
// Special case for double slabs placed by building mods (e.g., MatterManipulator)
|
||||
if (stack == null) return;
|
||||
int damage = stack.getItemDamage();
|
||||
if (damage < 0 || damage >= EnumWoodType.VALUES.length) return;
|
||||
TileWood tile = TileWood.getWoodTile(world, x, y, z);
|
||||
if (tile != null) {
|
||||
tile.setWoodType(EnumWoodType.VALUES[damage]);
|
||||
}
|
||||
}
|
||||
|
||||
/* PROPERTIES */
|
||||
@Override
|
||||
public final ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) {
|
||||
|
||||
@@ -15,6 +15,7 @@ import forestry.api.core.Tabs;
|
||||
import forestry.arboriculture.gui.GuiTreealyzer;
|
||||
import forestry.arboriculture.inventory.ItemInventoryTreealyzer;
|
||||
import forestry.core.gui.ContainerAlyzer;
|
||||
import forestry.core.inventory.ItemLocation;
|
||||
import forestry.core.items.ItemWithGui;
|
||||
|
||||
public class ItemTreealyzer extends ItemWithGui {
|
||||
@@ -24,12 +25,12 @@ public class ItemTreealyzer extends ItemWithGui {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
return new GuiTreealyzer(player, new ItemInventoryTreealyzer(player, heldItem));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
return new ContainerAlyzer(new ItemInventoryTreealyzer(player, heldItem), player);
|
||||
}
|
||||
}
|
||||
@@ -202,7 +202,8 @@ public abstract class Genome implements IGenome {
|
||||
private static IChromosome[] getChromosomes(NBTTagCompound genomeNBT, ISpeciesRoot speciesRoot) {
|
||||
|
||||
NBTTagList chromosomesNBT = genomeNBT.getTagList("Chromosomes", 10);
|
||||
IChromosome[] chromosomes = new IChromosome[speciesRoot.getDefaultTemplate().length];
|
||||
IAllele[] defaultTemplate = speciesRoot.getDefaultTemplate();
|
||||
IChromosome[] chromosomes = new IChromosome[defaultTemplate.length];
|
||||
|
||||
for (int i = 0; i < chromosomesNBT.tagCount(); i++) {
|
||||
NBTTagCompound chromosomeNBT = chromosomesNBT.getCompoundTagAt(i);
|
||||
@@ -213,7 +214,7 @@ public abstract class Genome implements IGenome {
|
||||
chromosomes[chromosomeOrdinal] = chromosome;
|
||||
|
||||
if (Config.clearInvalidChromosomes) {
|
||||
IAllele template = speciesRoot.getDefaultTemplate()[chromosomeOrdinal];
|
||||
IAllele template = defaultTemplate[chromosomeOrdinal];
|
||||
Class<? extends IAllele> chromosomeClass = speciesRoot.getKaryotype()[chromosomeOrdinal]
|
||||
.getAlleleClass();
|
||||
if (chromosome.overrideInvalidAlleles(template, chromosomeClass)) {
|
||||
|
||||
@@ -32,6 +32,10 @@ public class MutationConditionRequiresResource implements IMutationCondition {
|
||||
blockRequired = new ItemStack(block, 1, meta);
|
||||
}
|
||||
|
||||
public ItemStack getBlockRequired() {
|
||||
return blockRequired.copy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getChance(World world, int x, int y, int z, IAllele allele0, IAllele allele1, IGenome genome0,
|
||||
IGenome genome1, IClimateProvider climate) {
|
||||
|
||||
+4
@@ -39,6 +39,10 @@ public class MutationConditionRequiresResourceOreDict implements IMutationCondit
|
||||
}
|
||||
}
|
||||
|
||||
public int getOreDictId() {
|
||||
return oreDictId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getChance(World world, int x, int y, int z, IAllele allele0, IAllele allele1, IGenome genome0,
|
||||
IGenome genome1, IClimateProvider climate) {
|
||||
|
||||
@@ -36,8 +36,7 @@ public abstract class ContainerForestry extends Container {
|
||||
// Player inventory
|
||||
for (int row = 0; row < 3; row++) {
|
||||
for (int column = 0; column < 9; column++) {
|
||||
addSlotToContainer(
|
||||
new Slot(playerInventory, column + row * 9 + 9, xInv + column * 18, yInv + row * 18));
|
||||
addNormalSlot(playerInventory, column + row * 9 + 9, xInv + column * 18, yInv + row * 18);
|
||||
}
|
||||
}
|
||||
// Player hotbar
|
||||
@@ -46,6 +45,10 @@ public abstract class ContainerForestry extends Container {
|
||||
}
|
||||
}
|
||||
|
||||
protected void addNormalSlot(InventoryPlayer playerInventory, int slot, int x, int y) {
|
||||
addSlotToContainer(new Slot(playerInventory, slot, x, y));
|
||||
}
|
||||
|
||||
protected void addHotbarSlot(InventoryPlayer playerInventory, int slot, int x, int y) {
|
||||
addSlotToContainer(new Slot(playerInventory, slot, x, y));
|
||||
}
|
||||
|
||||
@@ -26,6 +26,17 @@ public abstract class ContainerItemInventory<I extends ItemInventory> extends Co
|
||||
addPlayerInventory(playerInventory, xInv, yInv);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addNormalSlot(InventoryPlayer playerInventory, int slot, int x, int y) {
|
||||
ItemStack stackInSlot = playerInventory.getStackInSlot(slot);
|
||||
|
||||
if (inventory.isParentItemInventory(stackInSlot)) {
|
||||
addSlotToContainer(new SlotLocked(playerInventory, slot, x, y));
|
||||
} else {
|
||||
addSlotToContainer(new Slot(playerInventory, slot, x, y));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addHotbarSlot(InventoryPlayer playerInventory, int slot, int x, int y) {
|
||||
ItemStack stackInSlot = playerInventory.getStackInSlot(slot);
|
||||
|
||||
@@ -8,6 +8,10 @@
|
||||
******************************************************************************/
|
||||
package forestry.core.gui;
|
||||
|
||||
import static forestry.core.inventory.ItemLocation.Type.PLAYER_INVENTORY;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
@@ -18,6 +22,7 @@ import net.minecraft.world.World;
|
||||
|
||||
import cpw.mods.fml.common.network.IGuiHandler;
|
||||
import forestry.api.core.ForestryAPI;
|
||||
import forestry.core.inventory.ItemLocation;
|
||||
|
||||
public class GuiHandler implements IGuiHandler {
|
||||
|
||||
@@ -39,6 +44,20 @@ public class GuiHandler implements IGuiHandler {
|
||||
entityplayer.openGui(ForestryAPI.instance, guiData, entityplayer.worldObj, 0, 0, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens gui for item placed in player's inventory.
|
||||
*
|
||||
* @param entityPlayer Player.
|
||||
* @param guiHandler GUI handler for item.
|
||||
* @param data Data for item.
|
||||
* @param invSlotIdx Index or slot in player inventory should be in range [0, 40).
|
||||
*/
|
||||
public static void openGui(EntityPlayer entityPlayer, IGuiHandlerItem guiHandler, short data, int invSlotIdx) {
|
||||
assert invSlotIdx >= 0 && invSlotIdx < 40 : "Incorrect inventory index is used: " + invSlotIdx;
|
||||
int guiData = encodeGuiData(guiHandler, data, invSlotIdx);
|
||||
entityPlayer.openGui(ForestryAPI.instance, guiData, entityPlayer.worldObj, 0, 0, 0);
|
||||
}
|
||||
|
||||
public static void openGui(EntityPlayer entityplayer, IGuiHandlerTile guiHandler) {
|
||||
openGui(entityplayer, guiHandler, (short) 0);
|
||||
}
|
||||
@@ -56,8 +75,32 @@ public class GuiHandler implements IGuiHandler {
|
||||
}
|
||||
|
||||
private static int encodeGuiData(IGuiHandlerForestry guiHandler, short data) {
|
||||
return encodeGuiData(guiHandler, data, -1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Encodes data required for GUI handler to function properly. Because of minecraft implementation we are limited to
|
||||
* 32 bits.
|
||||
*
|
||||
* @param guiHandler GUI handler.
|
||||
* @param data High bits which were encoded by GUI handler.
|
||||
* @param invSlotIdx Slot index in the player's inventory should be in range [0,40).
|
||||
* @return Encoded data.
|
||||
*/
|
||||
private static int encodeGuiData(IGuiHandlerForestry guiHandler, short data, int invSlotIdx) {
|
||||
// inventory slot idx will be encoded in third byte
|
||||
// player inventory has 40 slots which means that we need 6 bits to encode all values.
|
||||
// first 2 bits are reserved for type currently values 0(heldItem) and 1(item inventory) have meaning,
|
||||
// 2 and 3 are reserved for possible extension.
|
||||
if (invSlotIdx < -1 || invSlotIdx >= 40) {
|
||||
throw new IllegalArgumentException("Inventory slot index should be in range [-1, 40)");
|
||||
}
|
||||
|
||||
int invData = invSlotIdx == -1 ? 0 : (0x40 | invSlotIdx);
|
||||
|
||||
GuiId guiId = GuiIdRegistry.getGuiIdForGuiHandler(guiHandler);
|
||||
return data << 16 | guiId.getId();
|
||||
|
||||
return data << 16 | invData << 8 | guiId.getId();
|
||||
}
|
||||
|
||||
private static GuiId decodeGuiID(int guiData) {
|
||||
@@ -69,8 +112,24 @@ public class GuiHandler implements IGuiHandler {
|
||||
return (short) (guiId >> 16);
|
||||
}
|
||||
|
||||
private static int decodeInvSlotIdx(int guiData) {
|
||||
boolean invEncoded = (0x00_00_40_00 & guiData) != 0;
|
||||
|
||||
return invEncoded ? (guiData & 0x00_00_3F_00) >> 8 : -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getClientGuiElement(int guiData, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return getGuiElement(false, guiData, player, world, x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getServerGuiElement(int guiData, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return getGuiElement(true, guiData, player, world, x, y, z);
|
||||
}
|
||||
|
||||
private @Nullable Object getGuiElement(boolean isServerSide, int guiData, EntityPlayer player, World world, int x,
|
||||
int y, int z) {
|
||||
GuiId guiId = decodeGuiID(guiData);
|
||||
if (guiId == null) {
|
||||
return null;
|
||||
@@ -79,11 +138,25 @@ public class GuiHandler implements IGuiHandler {
|
||||
|
||||
switch (guiId.getGuiType()) {
|
||||
case Item: {
|
||||
ItemStack heldItem = player.getCurrentEquippedItem();
|
||||
int slotIdx = decodeInvSlotIdx(guiData);
|
||||
ItemStack heldItem;
|
||||
ItemLocation loc;
|
||||
if (slotIdx == -1) {
|
||||
heldItem = player.getCurrentEquippedItem();
|
||||
loc = ItemLocation.HELD_BY_PLAYER;
|
||||
} else {
|
||||
heldItem = player.inventory.getStackInSlot(slotIdx);
|
||||
loc = new ItemLocation(PLAYER_INVENTORY, slotIdx);
|
||||
}
|
||||
|
||||
if (heldItem != null) {
|
||||
Item item = heldItem.getItem();
|
||||
if (guiId.getGuiHandlerClass().isInstance(item)) {
|
||||
return ((IGuiHandlerItem) item).getGui(player, heldItem, data);
|
||||
if (isServerSide) {
|
||||
return ((IGuiHandlerItem) item).getContainer(player, heldItem, data, loc);
|
||||
}
|
||||
|
||||
return ((IGuiHandlerItem) item).getGui(player, heldItem, data, loc);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -91,6 +164,9 @@ public class GuiHandler implements IGuiHandler {
|
||||
case Tile: {
|
||||
TileEntity tileEntity = world.getTileEntity(x, y, z);
|
||||
if (guiId.getGuiHandlerClass().isInstance(tileEntity)) {
|
||||
if (isServerSide) {
|
||||
return ((IGuiHandlerTile) tileEntity).getContainer(player, data);
|
||||
}
|
||||
return ((IGuiHandlerTile) tileEntity).getGui(player, data);
|
||||
}
|
||||
break;
|
||||
@@ -98,6 +174,9 @@ public class GuiHandler implements IGuiHandler {
|
||||
case Entity: {
|
||||
Entity entity = world.getEntityByID(x);
|
||||
if (guiId.getGuiHandlerClass().isInstance(entity)) {
|
||||
if (isServerSide) {
|
||||
return ((IGuiHandlerEntity) entity).getContainer(player, data);
|
||||
}
|
||||
return ((IGuiHandlerEntity) entity).getGui(player, data);
|
||||
}
|
||||
break;
|
||||
@@ -105,41 +184,4 @@ public class GuiHandler implements IGuiHandler {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getServerGuiElement(int guiData, EntityPlayer player, World world, int x, int y, int z) {
|
||||
GuiId guiId = decodeGuiID(guiData);
|
||||
if (guiId == null) {
|
||||
return null;
|
||||
}
|
||||
short data = decodeGuiData(guiData);
|
||||
|
||||
switch (guiId.getGuiType()) {
|
||||
case Item: {
|
||||
ItemStack heldItem = player.getCurrentEquippedItem();
|
||||
if (heldItem != null) {
|
||||
Item item = heldItem.getItem();
|
||||
if (guiId.getGuiHandlerClass().isInstance(item)) {
|
||||
return ((IGuiHandlerItem) item).getContainer(player, heldItem, data);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case Tile: {
|
||||
TileEntity tileEntity = world.getTileEntity(x, y, z);
|
||||
if (guiId.getGuiHandlerClass().isInstance(tileEntity)) {
|
||||
return ((IGuiHandlerTile) tileEntity).getContainer(player, data);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case Entity: {
|
||||
Entity entity = world.getEntityByID(x);
|
||||
if (guiId.getGuiHandlerClass().isInstance(entity)) {
|
||||
return ((IGuiHandlerEntity) entity).getContainer(player, data);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -119,6 +119,13 @@ public class GuiIdRegistry {
|
||||
classMap.put(tileGuiHandlerClass, guiId);
|
||||
idMap.put(guiId.getId(), guiId);
|
||||
}
|
||||
|
||||
if (idMap.size() > 256) {
|
||||
// see {@link GuiHandler.encodeGuiData(forestry.core.gui.IGuiHandlerForestry, short, int)}
|
||||
throw new IllegalStateException(
|
||||
"Current implementation can't have more than different 256 GUI handlers "
|
||||
+ "because its id is coded by 8 bits");
|
||||
}
|
||||
}
|
||||
|
||||
public static GuiId getGuiIdForGuiHandler(IGuiHandlerForestry guiHandler) {
|
||||
|
||||
@@ -11,9 +11,11 @@ package forestry.core.gui;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import forestry.core.inventory.ItemLocation;
|
||||
|
||||
public interface IGuiHandlerItem extends IGuiHandlerForestry {
|
||||
|
||||
Object getGui(EntityPlayer player, ItemStack heldItem, int data);
|
||||
Object getGui(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc);
|
||||
|
||||
Object getContainer(EntityPlayer player, ItemStack heldItem, int data);
|
||||
Object getContainer(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc);
|
||||
}
|
||||
@@ -28,11 +28,17 @@ public abstract class ItemInventory implements IInventory, IFilterSlotDelegate {
|
||||
private final EntityPlayer player;
|
||||
private final ItemStack parent;
|
||||
private final ItemStack[] inventoryStacks;
|
||||
private final ItemLocation location;
|
||||
|
||||
public ItemInventory(EntityPlayer player, int size, ItemStack parent) {
|
||||
this(player, size, parent, ItemLocation.UNKNOWN);
|
||||
}
|
||||
|
||||
public ItemInventory(EntityPlayer player, int size, ItemStack parent, ItemLocation loc) {
|
||||
this.player = player;
|
||||
this.parent = parent;
|
||||
this.inventoryStacks = new ItemStack[size];
|
||||
this.location = loc;
|
||||
|
||||
setUID(); // Set a uid to identify the itemstack on SMP
|
||||
|
||||
@@ -79,20 +85,31 @@ public abstract class ItemInventory implements IInventory, IFilterSlotDelegate {
|
||||
}
|
||||
|
||||
public boolean isParentItemEquipped() {
|
||||
return isSameItemInventory(player.getCurrentEquippedItem(), parent);
|
||||
return switch (location.type()) {
|
||||
case HELD_BY_PLAYER, UNKNOWN -> isSameItemInventory(player.getCurrentEquippedItem(), parent);
|
||||
case PLAYER_INVENTORY -> isSameItemInventory(player.inventory.getStackInSlot(location.slotIdx()), parent);
|
||||
};
|
||||
}
|
||||
|
||||
public EntityPlayer getPlayer() {
|
||||
return player;
|
||||
}
|
||||
|
||||
public ItemLocation getLocation() {
|
||||
return location;
|
||||
}
|
||||
|
||||
public boolean isParentItemInventory(ItemStack itemStack) {
|
||||
ItemStack parent = getParent();
|
||||
return isSameItemInventory(parent, itemStack);
|
||||
}
|
||||
|
||||
protected ItemStack getParent() {
|
||||
ItemStack equipped = player.getCurrentEquippedItem();
|
||||
ItemStack equipped = switch (location.type()) {
|
||||
case HELD_BY_PLAYER, UNKNOWN -> player.getCurrentEquippedItem();
|
||||
case PLAYER_INVENTORY -> player.inventory.getStackInSlot(location.slotIdx());
|
||||
};
|
||||
|
||||
if (isSameItemInventory(equipped, parent)) {
|
||||
return equipped;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package forestry.core.inventory;
|
||||
|
||||
/**
|
||||
* Location of items in inventory.
|
||||
*/
|
||||
public class ItemLocation {
|
||||
|
||||
public enum Type {
|
||||
UNKNOWN,
|
||||
HELD_BY_PLAYER,
|
||||
PLAYER_INVENTORY
|
||||
}
|
||||
|
||||
public static final ItemLocation UNKNOWN = new ItemLocation(Type.UNKNOWN, -1);
|
||||
public static final ItemLocation HELD_BY_PLAYER = new ItemLocation(Type.HELD_BY_PLAYER, -1);
|
||||
|
||||
private final Type type;
|
||||
private final int slotIdx;
|
||||
|
||||
public ItemLocation(Type type, int slotIdx) {
|
||||
this.type = type;
|
||||
this.slotIdx = slotIdx;
|
||||
}
|
||||
|
||||
public Type type() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public int slotIdx() {
|
||||
return slotIdx;
|
||||
}
|
||||
}
|
||||
@@ -15,16 +15,17 @@ import forestry.core.circuits.ContainerSolderingIron;
|
||||
import forestry.core.circuits.GuiSolderingIron;
|
||||
import forestry.core.circuits.ISolderingIron;
|
||||
import forestry.core.inventory.ItemInventorySolderingIron;
|
||||
import forestry.core.inventory.ItemLocation;
|
||||
|
||||
public class ItemSolderingIron extends ItemWithGui implements ISolderingIron {
|
||||
|
||||
@Override
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
return new GuiSolderingIron(player, new ItemInventorySolderingIron(player, heldItem));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
return new ContainerSolderingIron(player, new ItemInventorySolderingIron(player, heldItem));
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,7 @@ public abstract class ItemWithGui extends ItemForestry implements IGuiHandlerIte
|
||||
}
|
||||
|
||||
protected void openGui(EntityPlayer entityplayer) {
|
||||
GuiHandler.openGui(entityplayer, this);
|
||||
GuiHandler.openGui(entityplayer, this, (short) 0, entityplayer.inventory.currentItem);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -28,7 +28,7 @@ public enum PacketIdServer implements IPacketId {
|
||||
BEE_LOGIC_ACTIVE_ENTITY_REQUEST,
|
||||
|
||||
// Factory
|
||||
WORKTABLE_NEI_SELECT,
|
||||
NEI_SELECT,
|
||||
|
||||
// Mail
|
||||
LETTER_INFO_REQUEST,
|
||||
|
||||
@@ -23,7 +23,7 @@ import codechicken.nei.api.IOverlayHandler;
|
||||
import codechicken.nei.api.IStackPositioner;
|
||||
import codechicken.nei.recipe.IRecipeHandler;
|
||||
import forestry.core.proxy.Proxies;
|
||||
import forestry.factory.network.packets.PacketWorktableNEISelect;
|
||||
import forestry.factory.network.packets.PacketNEISelect;
|
||||
|
||||
/**
|
||||
* @author bdew
|
||||
@@ -40,9 +40,25 @@ public class CustomOverlayHandler implements IOverlayHandler {
|
||||
this.forceShift = forceShift;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean requireShiftForOverlayRecipe() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void overlayRecipe(GuiContainer cont, IRecipeHandler recipe, int recipeIndex, boolean shift) {
|
||||
List<PositionedStack> ingr = recipe.getIngredientStacks(recipeIndex);
|
||||
int offsetX = 25;
|
||||
int offsetY = 6;
|
||||
int gridSpacing = 18;
|
||||
List<PositionedStack> ingr;
|
||||
if (recipe instanceof IGridRecipeHandler gridHandler) {
|
||||
offsetX = gridHandler.getGridStartX();
|
||||
offsetY = gridHandler.getGridStartY();
|
||||
gridSpacing = gridHandler.getGridSpacing();
|
||||
ingr = gridHandler.getGridStacks(recipeIndex);
|
||||
} else {
|
||||
ingr = recipe.getIngredientStacks(recipeIndex);
|
||||
}
|
||||
|
||||
if (shift || forceShift) {
|
||||
NBTTagList stacksnbt = new NBTTagList();
|
||||
@@ -50,8 +66,8 @@ public class CustomOverlayHandler implements IOverlayHandler {
|
||||
for (PositionedStack pstack : ingr) {
|
||||
if (pstack != null) {
|
||||
// This is back-asswards but i don't see a better way :(
|
||||
int x = (pstack.relx - 25) / 18;
|
||||
int y = (pstack.rely - 6) / 18;
|
||||
int x = (pstack.relx - offsetX) / gridSpacing;
|
||||
int y = (pstack.rely - offsetY) / gridSpacing;
|
||||
|
||||
ItemStack stack = pstack.item;
|
||||
NBTTagCompound stacknbt = stack.writeToNBT(new NBTTagCompound());
|
||||
@@ -68,7 +84,7 @@ public class CustomOverlayHandler implements IOverlayHandler {
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setTag("stacks", stacksnbt);
|
||||
|
||||
Proxies.net.sendToServer(new PacketWorktableNEISelect(data));
|
||||
Proxies.net.sendToServer(new PacketNEISelect(data));
|
||||
} else {
|
||||
IStackPositioner positioner = new OffsetPositioner(xOffs, yOffs);
|
||||
LayoutManager.overlayRenderer = new DefaultOverlayRenderer(ingr, positioner);
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package forestry.core.recipes.nei;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import codechicken.nei.PositionedStack;
|
||||
|
||||
public interface IGridRecipeHandler {
|
||||
|
||||
int getGridStartX();
|
||||
|
||||
int getGridStartY();
|
||||
|
||||
int getGridSpacing();
|
||||
|
||||
List<PositionedStack> getGridStacks(int recipeIndex);
|
||||
|
||||
}
|
||||
@@ -19,6 +19,8 @@ import forestry.api.arboriculture.TreeManager;
|
||||
import forestry.api.lepidopterology.ButterflyManager;
|
||||
import forestry.api.lepidopterology.EnumFlutterType;
|
||||
import forestry.core.utils.Log;
|
||||
import forestry.factory.gui.GuiCarpenter;
|
||||
import forestry.factory.gui.GuiFabricator;
|
||||
import forestry.factory.gui.GuiWorktable;
|
||||
import forestry.factory.recipes.nei.NEIHandlerBottler;
|
||||
import forestry.factory.recipes.nei.NEIHandlerCarpenter;
|
||||
@@ -46,6 +48,8 @@ public class NEIIntegrationConfig implements IConfigureNEI {
|
||||
|
||||
CustomOverlayHandler handler = new CustomOverlayHandler(-14, 14, true);
|
||||
API.registerGuiOverlayHandler(GuiWorktable.class, handler, "crafting");
|
||||
API.registerGuiOverlayHandler(GuiCarpenter.class, handler, "forestry.carpenter");
|
||||
API.registerGuiOverlayHandler(GuiFabricator.class, handler, "forestry.fabricator");
|
||||
|
||||
API.addSubset(
|
||||
"Forestry.Bees.Princesses",
|
||||
|
||||
@@ -23,18 +23,19 @@ import net.minecraft.nbt.NBTTagList;
|
||||
*/
|
||||
public class SetRecipeCommandHandler {
|
||||
|
||||
private final Class<? extends Container> containerClass;
|
||||
private final Class<? extends Container>[] containerClasses;
|
||||
private final Class<? extends Slot> slotClass;
|
||||
|
||||
public SetRecipeCommandHandler(Class<? extends Container> containerClass, Class<? extends Slot> slotClass) {
|
||||
this.containerClass = containerClass;
|
||||
public SetRecipeCommandHandler(Class<? extends Container>[] containerClasses, Class<? extends Slot> slotClass) {
|
||||
this.containerClasses = containerClasses;
|
||||
this.slotClass = slotClass;
|
||||
}
|
||||
|
||||
public void handle(NBTTagCompound data, EntityPlayerMP player) {
|
||||
NBTTagList stacks = data.getTagList("stacks", 10);
|
||||
Container cont = player.openContainer;
|
||||
if (!containerClass.isInstance(cont)) {
|
||||
|
||||
if (!isContainerClassCorrect(cont)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -43,17 +44,20 @@ public class SetRecipeCommandHandler {
|
||||
NBTTagCompound itemdata = stacks.getCompoundTagAt(i);
|
||||
stmap.put(itemdata.getInteger("slot"), ItemStack.loadItemStackFromNBT(itemdata));
|
||||
}
|
||||
for (Object slotobj : cont.inventorySlots) {
|
||||
if (!slotClass.isInstance(slotobj)) {
|
||||
for (Slot slot : cont.inventorySlots) {
|
||||
if (!slotClass.isInstance(slot)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Slot slot = (Slot) slotobj;
|
||||
if (stmap.containsKey(slot.getSlotIndex())) {
|
||||
slot.putStack(stmap.get(slot.getSlotIndex()));
|
||||
} else {
|
||||
slot.putStack(null);
|
||||
}
|
||||
slot.putStack(stmap.getOrDefault(slot.getSlotIndex(), null));
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isContainerClassCorrect(Container cont) {
|
||||
for (Class<? extends Container> containerClass : containerClasses) {
|
||||
if (containerClass.isInstance(cont)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -9,15 +9,15 @@
|
||||
package forestry.factory.network;
|
||||
|
||||
import forestry.core.network.PacketRegistry;
|
||||
import forestry.factory.network.packets.PacketNEISelect;
|
||||
import forestry.factory.network.packets.PacketWorktableMemoryUpdate;
|
||||
import forestry.factory.network.packets.PacketWorktableNEISelect;
|
||||
import forestry.factory.network.packets.PacketWorktableRecipeUpdate;
|
||||
|
||||
public class PacketRegistryFactory extends PacketRegistry {
|
||||
|
||||
@Override
|
||||
public void registerPackets() {
|
||||
registerServerPacket(new PacketWorktableNEISelect());
|
||||
registerServerPacket(new PacketNEISelect());
|
||||
|
||||
registerClientPacket(new PacketWorktableMemoryUpdate());
|
||||
registerClientPacket(new PacketWorktableRecipeUpdate());
|
||||
|
||||
+9
-7
@@ -19,27 +19,29 @@ import forestry.core.network.IForestryPacketServer;
|
||||
import forestry.core.network.PacketIdServer;
|
||||
import forestry.core.network.packets.PacketNBT;
|
||||
import forestry.core.recipes.nei.SetRecipeCommandHandler;
|
||||
import forestry.factory.gui.ContainerCarpenter;
|
||||
import forestry.factory.gui.ContainerFabricator;
|
||||
import forestry.factory.gui.ContainerWorktable;
|
||||
|
||||
public class PacketWorktableNEISelect extends PacketNBT implements IForestryPacketServer {
|
||||
public class PacketNEISelect extends PacketNBT implements IForestryPacketServer {
|
||||
|
||||
private static final SetRecipeCommandHandler worktableNEISelectHandler = new SetRecipeCommandHandler(
|
||||
ContainerWorktable.class,
|
||||
private static final SetRecipeCommandHandler neiSelectHandler = new SetRecipeCommandHandler(
|
||||
new Class[] { ContainerWorktable.class, ContainerCarpenter.class, ContainerFabricator.class },
|
||||
SlotCraftMatrix.class);
|
||||
|
||||
public PacketWorktableNEISelect() {}
|
||||
public PacketNEISelect() {}
|
||||
|
||||
public PacketWorktableNEISelect(NBTTagCompound nbttagcompound) {
|
||||
public PacketNEISelect(NBTTagCompound nbttagcompound) {
|
||||
super(nbttagcompound);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPacketData(DataInputStreamForestry data, EntityPlayerMP player) throws IOException {
|
||||
worktableNEISelectHandler.handle(getTagCompound(), player);
|
||||
neiSelectHandler.handle(getTagCompound(), player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PacketIdServer getPacketId() {
|
||||
return PacketIdServer.WORKTABLE_NEI_SELECT;
|
||||
return PacketIdServer.NEI_SELECT;
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,7 @@ package forestry.factory.recipes.nei;
|
||||
import java.awt.Point;
|
||||
import java.awt.Rectangle;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.gui.inventory.GuiContainer;
|
||||
@@ -24,13 +25,14 @@ import codechicken.nei.api.API;
|
||||
import forestry.api.recipes.ICarpenterRecipe;
|
||||
import forestry.api.recipes.IDescriptiveRecipe;
|
||||
import forestry.api.recipes.RecipeManagers;
|
||||
import forestry.core.recipes.nei.IGridRecipeHandler;
|
||||
import forestry.core.recipes.nei.NEIUtils;
|
||||
import forestry.core.recipes.nei.PositionedFluidTank;
|
||||
import forestry.core.recipes.nei.RecipeHandlerBase;
|
||||
import forestry.core.utils.StringUtil;
|
||||
import forestry.factory.gui.GuiCarpenter;
|
||||
|
||||
public class NEIHandlerCarpenter extends RecipeHandlerBase {
|
||||
public class NEIHandlerCarpenter extends RecipeHandlerBase implements IGridRecipeHandler {
|
||||
|
||||
private static Class<? extends GuiContainer> guiClass;
|
||||
|
||||
@@ -40,11 +42,35 @@ public class NEIHandlerCarpenter extends RecipeHandlerBase {
|
||||
API.setGuiOffset(guiClass, 5, 14);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getGridStartX() {
|
||||
return 5;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getGridStartY() {
|
||||
return 6;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getGridSpacing() {
|
||||
return 18;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PositionedStack> getGridStacks(int recipeIndex) {
|
||||
if (arecipes.get(recipeIndex) instanceof CachedCarpenterRecipe recipe) {
|
||||
return recipe.inputs.subList(0, recipe.ingredientCount);
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
public class CachedCarpenterRecipe extends CachedBaseRecipe {
|
||||
|
||||
public List<PositionedStack> inputs = new ArrayList<>();
|
||||
public PositionedFluidTank tank;
|
||||
public PositionedStack output;
|
||||
public int ingredientCount;
|
||||
|
||||
public CachedCarpenterRecipe(ICarpenterRecipe recipe, boolean genPerms) {
|
||||
IDescriptiveRecipe irecipe = recipe.getCraftingGridRecipe();
|
||||
@@ -78,6 +104,7 @@ public class NEIHandlerCarpenter extends RecipeHandlerBase {
|
||||
}
|
||||
|
||||
public void setIngredients(int width, int height, Object[] items) {
|
||||
ingredientCount = 0;
|
||||
for (int x = 0; x < width; x++) {
|
||||
for (int y = 0; y < height; y++) {
|
||||
Object item = items[y * width + x];
|
||||
@@ -89,9 +116,14 @@ public class NEIHandlerCarpenter extends RecipeHandlerBase {
|
||||
continue;
|
||||
}
|
||||
|
||||
PositionedStack stack = new PositionedStack(item, 5 + x * 18, 6 + y * 18, false);
|
||||
PositionedStack stack = new PositionedStack(
|
||||
item,
|
||||
getGridStartX() + x * getGridSpacing(),
|
||||
getGridStartY() + y * getGridSpacing(),
|
||||
false);
|
||||
stack.setMaxSize(1);
|
||||
this.inputs.add(stack);
|
||||
ingredientCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ package forestry.factory.recipes.nei;
|
||||
import java.awt.Point;
|
||||
import java.awt.Rectangle;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -27,6 +28,7 @@ import codechicken.nei.recipe.GuiRecipe;
|
||||
import forestry.api.recipes.IFabricatorRecipe;
|
||||
import forestry.api.recipes.IFabricatorSmeltingRecipe;
|
||||
import forestry.api.recipes.RecipeManagers;
|
||||
import forestry.core.recipes.nei.IGridRecipeHandler;
|
||||
import forestry.core.recipes.nei.NEIUtils;
|
||||
import forestry.core.recipes.nei.PositionedFluidTank;
|
||||
import forestry.core.recipes.nei.RecipeHandlerBase;
|
||||
@@ -34,7 +36,30 @@ import forestry.core.utils.StringUtil;
|
||||
import forestry.factory.gui.GuiFabricator;
|
||||
import forestry.factory.recipes.FabricatorSmeltingRecipeManager;
|
||||
|
||||
public class NEIHandlerFabricator extends RecipeHandlerBase {
|
||||
public class NEIHandlerFabricator extends RecipeHandlerBase implements IGridRecipeHandler {
|
||||
|
||||
@Override
|
||||
public int getGridStartX() {
|
||||
return 62;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getGridStartY() {
|
||||
return 6;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getGridSpacing() {
|
||||
return 18;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PositionedStack> getGridStacks(int recipeIndex) {
|
||||
if (arecipes.get(recipeIndex) instanceof CachedFabricatorRecipe recipe) {
|
||||
return recipe.inputs.subList(0, recipe.ingredientCount);
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
public class CachedFabricatorRecipe extends CachedBaseRecipe {
|
||||
|
||||
@@ -42,6 +67,7 @@ public class NEIHandlerFabricator extends RecipeHandlerBase {
|
||||
public PositionedFluidTank tank;
|
||||
public List<PositionedStack> inputs = new ArrayList<>();
|
||||
public PositionedStack output;
|
||||
public int ingredientCount;
|
||||
|
||||
public CachedFabricatorRecipe(IFabricatorRecipe recipe, boolean genPerms) {
|
||||
if (recipe.getLiquid() != null) {
|
||||
@@ -78,6 +104,7 @@ public class NEIHandlerFabricator extends RecipeHandlerBase {
|
||||
}
|
||||
|
||||
public void setIngredients(int width, int height, Object[] items) {
|
||||
ingredientCount = 0;
|
||||
for (int x = 0; x < width; x++) {
|
||||
for (int y = 0; y < height; y++) {
|
||||
Object item = items[y * width + x];
|
||||
@@ -89,9 +116,14 @@ public class NEIHandlerFabricator extends RecipeHandlerBase {
|
||||
continue;
|
||||
}
|
||||
|
||||
PositionedStack stack = new PositionedStack(item, 62 + x * 18, 6 + y * 18, false);
|
||||
PositionedStack stack = new PositionedStack(
|
||||
item,
|
||||
getGridStartX() + x * getGridSpacing(),
|
||||
getGridStartY() + y * getGridSpacing(),
|
||||
false);
|
||||
stack.setMaxSize(1);
|
||||
this.inputs.add(stack);
|
||||
ingredientCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ package forestry.food.items;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import forestry.core.inventory.ItemLocation;
|
||||
import forestry.core.items.ItemWithGui;
|
||||
import forestry.food.gui.ContainerInfuser;
|
||||
import forestry.food.gui.GuiInfuser;
|
||||
@@ -19,12 +20,12 @@ import forestry.food.inventory.ItemInventoryInfuser;
|
||||
public class ItemInfuser extends ItemWithGui {
|
||||
|
||||
@Override
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
return new GuiInfuser(player.inventory, new ItemInventoryInfuser(player, heldItem));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
return new ContainerInfuser(player.inventory, new ItemInventoryInfuser(player, heldItem));
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ import net.minecraft.item.ItemStack;
|
||||
|
||||
import forestry.api.core.Tabs;
|
||||
import forestry.core.gui.ContainerAlyzer;
|
||||
import forestry.core.inventory.ItemLocation;
|
||||
import forestry.core.items.ItemWithGui;
|
||||
import forestry.lepidopterology.gui.GuiFlutterlyzer;
|
||||
import forestry.lepidopterology.inventory.ItemInventoryFlutterlyzer;
|
||||
@@ -24,12 +25,12 @@ public class ItemFlutterlyzer extends ItemWithGui {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
return new GuiFlutterlyzer(player, new ItemInventoryFlutterlyzer(player, heldItem));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
return new ContainerAlyzer(new ItemInventoryFlutterlyzer(player, heldItem), player);
|
||||
}
|
||||
}
|
||||
@@ -25,16 +25,22 @@ import forestry.plugins.PluginMail;
|
||||
public class LetterProperties {
|
||||
|
||||
private enum State {
|
||||
|
||||
FRESH,
|
||||
STAMPED,
|
||||
OPENED,
|
||||
EMPTIED
|
||||
EMPTIED;
|
||||
|
||||
public static final State[] VALUES = values();
|
||||
}
|
||||
|
||||
private enum Size {
|
||||
|
||||
EMPTY,
|
||||
SMALL,
|
||||
BIG
|
||||
BIG;
|
||||
|
||||
public static final Size[] VALUES = values();
|
||||
}
|
||||
|
||||
public static ItemStack createStampedLetterStack(ILetter letter) {
|
||||
@@ -98,8 +104,8 @@ public class LetterProperties {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static void getSubItems(Item item, CreativeTabs tab, @SuppressWarnings("rawtypes") List list) {
|
||||
for (State state : State.values()) {
|
||||
for (Size size : Size.values()) {
|
||||
for (State state : State.VALUES) {
|
||||
for (Size size : Size.VALUES) {
|
||||
int meta = encodeMeta(state, size);
|
||||
ItemStack letter = new ItemStack(item, 1, meta);
|
||||
list.add(letter);
|
||||
@@ -117,7 +123,7 @@ public class LetterProperties {
|
||||
|
||||
private static State getState(int meta) {
|
||||
int ordinal = meta & 0x0f;
|
||||
State[] values = State.values();
|
||||
State[] values = State.VALUES;
|
||||
if (ordinal >= values.length) {
|
||||
ordinal = 0;
|
||||
}
|
||||
@@ -126,7 +132,7 @@ public class LetterProperties {
|
||||
|
||||
private static Size getSize(int meta) {
|
||||
int ordinal = meta >> 4;
|
||||
Size[] values = Size.values();
|
||||
Size[] values = Size.VALUES;
|
||||
if (ordinal >= values.length) {
|
||||
ordinal = 0;
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ package forestry.mail.items;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import forestry.core.inventory.ItemLocation;
|
||||
import forestry.core.items.ItemWithGui;
|
||||
import forestry.mail.gui.ContainerCatalogue;
|
||||
import forestry.mail.gui.GuiCatalogue;
|
||||
@@ -18,12 +19,12 @@ import forestry.mail.gui.GuiCatalogue;
|
||||
public class ItemCatalogue extends ItemWithGui {
|
||||
|
||||
@Override
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
return new GuiCatalogue(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
return new ContainerCatalogue(player);
|
||||
}
|
||||
}
|
||||
@@ -23,6 +23,7 @@ import net.minecraft.world.World;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import forestry.api.mail.ILetter;
|
||||
import forestry.core.inventory.ItemLocation;
|
||||
import forestry.core.items.ItemWithGui;
|
||||
import forestry.core.utils.StringUtil;
|
||||
import forestry.mail.Letter;
|
||||
@@ -87,12 +88,12 @@ public class ItemLetter extends ItemWithGui {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
return new GuiLetter(player, new ItemInventoryLetter(player, heldItem));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
return new ContainerLetter(player, new ItemInventoryLetter(player, heldItem));
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ import net.minecraft.item.ItemStack;
|
||||
|
||||
import forestry.core.gui.ContainerItemInventory;
|
||||
import forestry.core.gui.slots.SlotFilteredInventory;
|
||||
import forestry.core.inventory.ItemLocation;
|
||||
import forestry.storage.inventory.ItemInventoryBackpack;
|
||||
|
||||
public class ContainerBackpack extends ContainerItemInventory<ItemInventoryBackpack> {
|
||||
@@ -39,9 +40,9 @@ public class ContainerBackpack extends ContainerItemInventory<ItemInventoryBackp
|
||||
}
|
||||
}
|
||||
|
||||
public ContainerBackpack(EntityPlayer player, Size size, ItemStack parent) {
|
||||
public ContainerBackpack(EntityPlayer player, Size size, ItemStack parent, ItemLocation loc) {
|
||||
super(
|
||||
new ItemInventoryBackpack(player, size.getSize(), parent),
|
||||
new ItemInventoryBackpack(player, size.getSize(), parent, loc),
|
||||
player.inventory,
|
||||
8,
|
||||
11 + size.startY + size.rows * 18);
|
||||
|
||||
@@ -6,6 +6,7 @@ import net.minecraft.item.ItemStack;
|
||||
|
||||
import forestry.api.storage.IBackpackDefinition;
|
||||
import forestry.core.inventory.ItemInventory;
|
||||
import forestry.core.inventory.ItemLocation;
|
||||
import forestry.storage.items.ItemBackpack;
|
||||
|
||||
public class ItemInventoryBackpack extends ItemInventory {
|
||||
@@ -13,7 +14,11 @@ public class ItemInventoryBackpack extends ItemInventory {
|
||||
private final IBackpackDefinition backpackDefinition;
|
||||
|
||||
public ItemInventoryBackpack(EntityPlayer player, int size, ItemStack parent) {
|
||||
super(player, size, parent);
|
||||
this(player, size, parent, ItemLocation.UNKNOWN);
|
||||
}
|
||||
|
||||
public ItemInventoryBackpack(EntityPlayer player, int size, ItemStack parent, ItemLocation location) {
|
||||
super(player, size, parent, location);
|
||||
|
||||
if (parent == null) {
|
||||
throw new IllegalArgumentException("Parent cannot be null.");
|
||||
|
||||
@@ -13,6 +13,7 @@ import net.minecraft.item.ItemStack;
|
||||
|
||||
import forestry.core.gui.GuiHandler;
|
||||
import forestry.core.gui.IPagedInventory;
|
||||
import forestry.core.inventory.ItemLocation;
|
||||
import forestry.storage.items.ItemBackpackNaturalist;
|
||||
|
||||
public class ItemInventoryBackpackPaged extends ItemInventoryBackpack implements IPagedInventory {
|
||||
@@ -20,13 +21,18 @@ public class ItemInventoryBackpackPaged extends ItemInventoryBackpack implements
|
||||
private final ItemBackpackNaturalist backpackNaturalist;
|
||||
|
||||
public ItemInventoryBackpackPaged(EntityPlayer player, int size, ItemStack itemstack,
|
||||
ItemBackpackNaturalist backpackNaturalist) {
|
||||
super(player, size, itemstack);
|
||||
ItemBackpackNaturalist backpackNaturalist, ItemLocation loc) {
|
||||
super(player, size, itemstack, loc);
|
||||
this.backpackNaturalist = backpackNaturalist;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void flipPage(EntityPlayer player, short page) {
|
||||
GuiHandler.openGui(player, backpackNaturalist, page);
|
||||
ItemLocation loc = getLocation();
|
||||
if (loc.type() == ItemLocation.Type.PLAYER_INVENTORY) {
|
||||
GuiHandler.openGui(player, backpackNaturalist, page, loc.slotIdx());
|
||||
} else {
|
||||
GuiHandler.openGui(player, backpackNaturalist, page);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ import java.util.Locale;
|
||||
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
@@ -20,7 +21,9 @@ import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.xonich.mc.nohotbarneeded.api.ActivatableFromInventoryServerSide;
|
||||
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import cpw.mods.fml.common.eventhandler.Event;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
@@ -31,6 +34,7 @@ import forestry.core.config.Config;
|
||||
import forestry.core.config.Constants;
|
||||
import forestry.core.gui.GuiHandler;
|
||||
import forestry.core.inventory.ItemInventory;
|
||||
import forestry.core.inventory.ItemLocation;
|
||||
import forestry.core.inventory.wrappers.IInvSlot;
|
||||
import forestry.core.inventory.wrappers.InventoryIterator;
|
||||
import forestry.core.items.ItemWithGui;
|
||||
@@ -44,7 +48,10 @@ import forestry.storage.gui.GuiBackpack;
|
||||
import forestry.storage.gui.GuiBackpackT2;
|
||||
import forestry.storage.inventory.ItemInventoryBackpack;
|
||||
|
||||
public class ItemBackpack extends ItemWithGui {
|
||||
@Optional.Interface(
|
||||
iface = "net.xonich.mc.nohotbarneeded.api.ActivatableFromInventoryServerSide",
|
||||
modid = "nohotbarneeded")
|
||||
public class ItemBackpack extends ItemWithGui implements ActivatableFromInventoryServerSide {
|
||||
|
||||
private final IBackpackDefinition definition;
|
||||
private final EnumBackpackType type;
|
||||
@@ -65,7 +72,7 @@ public class ItemBackpack extends ItemWithGui {
|
||||
|
||||
@Override
|
||||
protected void openGui(EntityPlayer entityplayer) {
|
||||
GuiHandler.openGui(entityplayer, this, (short) type.ordinal());
|
||||
GuiHandler.openGui(entityplayer, this, (short) type.ordinal(), entityplayer.inventory.currentItem);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -318,32 +325,32 @@ public class ItemBackpack extends ItemWithGui {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
if (data > EnumBackpackType.values().length) {
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
if (data >= EnumBackpackType.values().length) {
|
||||
return null;
|
||||
}
|
||||
EnumBackpackType type = EnumBackpackType.values()[data];
|
||||
switch (type) {
|
||||
case T1:
|
||||
return new GuiBackpack(new ContainerBackpack(player, ContainerBackpack.Size.DEFAULT, heldItem));
|
||||
return new GuiBackpack(new ContainerBackpack(player, ContainerBackpack.Size.DEFAULT, heldItem, loc));
|
||||
case T2:
|
||||
return new GuiBackpackT2(new ContainerBackpack(player, ContainerBackpack.Size.T2, heldItem));
|
||||
return new GuiBackpackT2(new ContainerBackpack(player, ContainerBackpack.Size.T2, heldItem, loc));
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data) {
|
||||
if (data > EnumBackpackType.values().length) {
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data, ItemLocation loc) {
|
||||
if (data >= EnumBackpackType.values().length) {
|
||||
return null;
|
||||
}
|
||||
EnumBackpackType type = EnumBackpackType.values()[data];
|
||||
switch (type) {
|
||||
case T1:
|
||||
return new ContainerBackpack(player, ContainerBackpack.Size.DEFAULT, heldItem);
|
||||
return new ContainerBackpack(player, ContainerBackpack.Size.DEFAULT, heldItem, loc);
|
||||
case T2:
|
||||
return new ContainerBackpack(player, ContainerBackpack.Size.T2, heldItem);
|
||||
return new ContainerBackpack(player, ContainerBackpack.Size.T2, heldItem, loc);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
@@ -361,4 +368,10 @@ public class ItemBackpack extends ItemWithGui {
|
||||
public boolean showDurabilityBar(final ItemStack stack) {
|
||||
return Config.showBackpackDurability && ItemInventory.getOccupiedSlotCount(stack) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Optional.Method(modid = "nohotbarneeded")
|
||||
public void activateFromInventory(EntityPlayerMP player, int slotIdx) {
|
||||
GuiHandler.openGui(player, this, (short) type.ordinal(), slotIdx);
|
||||
}
|
||||
}
|
||||
@@ -9,14 +9,17 @@
|
||||
package forestry.storage.items;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import forestry.api.genetics.ISpeciesRoot;
|
||||
import forestry.api.storage.EnumBackpackType;
|
||||
import forestry.api.storage.IBackpackDefinition;
|
||||
import forestry.core.config.Constants;
|
||||
import forestry.core.gui.GuiHandler;
|
||||
import forestry.core.gui.GuiNaturalistInventory;
|
||||
import forestry.core.inventory.ItemLocation;
|
||||
import forestry.storage.gui.ContainerNaturalistBackpack;
|
||||
import forestry.storage.inventory.ItemInventoryBackpackPaged;
|
||||
|
||||
@@ -31,27 +34,35 @@ public class ItemBackpackNaturalist extends ItemBackpack {
|
||||
|
||||
@Override
|
||||
protected void openGui(EntityPlayer entityplayer) {
|
||||
GuiHandler.openGui(entityplayer, this);
|
||||
GuiHandler.openGui(entityplayer, this, (short) 0, entityplayer.inventory.currentItem);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int page) {
|
||||
public Object getGui(EntityPlayer player, ItemStack heldItem, int page, ItemLocation loc) {
|
||||
ItemInventoryBackpackPaged inventory = new ItemInventoryBackpackPaged(
|
||||
player,
|
||||
Constants.SLOTS_BACKPACK_APIARIST,
|
||||
heldItem,
|
||||
this);
|
||||
this,
|
||||
loc);
|
||||
ContainerNaturalistBackpack container = new ContainerNaturalistBackpack(player, inventory, page);
|
||||
return new GuiNaturalistInventory(speciesRoot, player, container, inventory, page, 5);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int page) {
|
||||
public Object getContainer(EntityPlayer player, ItemStack heldItem, int page, ItemLocation loc) {
|
||||
ItemInventoryBackpackPaged inventory = new ItemInventoryBackpackPaged(
|
||||
player,
|
||||
Constants.SLOTS_BACKPACK_APIARIST,
|
||||
heldItem,
|
||||
this);
|
||||
this,
|
||||
loc);
|
||||
return new ContainerNaturalistBackpack(player, inventory, page);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Optional.Method(modid = "nohotbarneeded")
|
||||
public void activateFromInventory(EntityPlayerMP player, int slotIdx) {
|
||||
GuiHandler.openGui(player, this, /* page */(short) 0, slotIdx);
|
||||
}
|
||||
}
|
||||
@@ -708,9 +708,11 @@ tile.candle.dyed.stump=Unlit Dyed Candle
|
||||
tile.candle.lit=Lit Candle
|
||||
tile.candle.dyed.lit=Lit Dyed Candle
|
||||
tile.stump.0=Candle Stump
|
||||
tile.for.apiculture.0=Apiary
|
||||
tile.for.apiculture.1=Apiarist's Chest
|
||||
tile.for.apiculture.2=Bee House
|
||||
tile.for.apiculture.name=Apiary
|
||||
tile.for.apiculture.0.name=Apiary
|
||||
tile.for.apicultureChest.name=Apiarist's Chest
|
||||
tile.for.apicultureChest.0.name=Apiarist's Chest
|
||||
tile.for.apiculture.2.name=Bee House
|
||||
item.for.beeQueenGE.name=Unknown Queen
|
||||
|
||||
####################
|
||||
@@ -759,7 +761,7 @@ tile.log=Wood
|
||||
tile.planks=Wood Planks
|
||||
tile.slab=Wood Slab
|
||||
tile.fences=Fence
|
||||
tile.for.stairs=Stairs
|
||||
tile.for.stairs.name=Stairs
|
||||
wood.0=Larch
|
||||
wood.1=Teak
|
||||
wood.2=Acacia
|
||||
@@ -784,7 +786,8 @@ wood.20=Pine
|
||||
wood.21=Plum
|
||||
wood.22=Maple
|
||||
wood.23=Citrus
|
||||
tile.for.arboriculture.0=Arborist's Chest
|
||||
tile.for.arboriculture.name=Arborist's Chest
|
||||
tile.for.arboriculture.0.name=Arborist's Chest
|
||||
|
||||
####################
|
||||
# FARMING
|
||||
@@ -857,7 +860,8 @@ item.butterfly=Butterfly
|
||||
item.moth=Moth
|
||||
item.flutterlyzer=Flutterlyzer
|
||||
storage.backpack.lepidopterist=Lepidopterist's Backpack
|
||||
tile.for.lepidopterology.0=Lepidopterist's Chest
|
||||
tile.for.lepidopterology.name=Lepidopterist's Chest
|
||||
tile.for.lepidopterology.0.name=Lepidopterist's Chest
|
||||
|
||||
####################
|
||||
# MAIL
|
||||
|
||||
@@ -685,9 +685,11 @@ tile.alveary.6=Estabilizador de Enjambre
|
||||
tile.alveary.7=Tamiz para Enjambre
|
||||
tile.candle.0=Vela
|
||||
tile.stump.0=Tocуn de Vela
|
||||
tile.for.apiculture.0=Apiario
|
||||
tile.for.apiculture.1=Cofre de Apicultor
|
||||
tile.for.apiculture.2=Casa de Abejas
|
||||
tile.for.apiculture.name=Apiario
|
||||
tile.for.apiculture.0.name=Apiario
|
||||
tile.for.apicultureChest.name=Cofre de Apicultor
|
||||
tile.for.apicultureChest.0.name=Cofre de Apicultor
|
||||
tile.for.apiculture.2.name=Casa de Abejas
|
||||
item.for.beeQueenGE.name=Unknown Queen
|
||||
|
||||
####################
|
||||
@@ -736,7 +738,7 @@ tile.log=Madera
|
||||
tile.planks=Tablones de Madera
|
||||
tile.slab=Losa de Madera
|
||||
tile.fences=Cerca
|
||||
tile.for.stairs=Escaleras
|
||||
tile.for.stairs.name=Escaleras
|
||||
wood.0=Alerce
|
||||
wood.1=Teca
|
||||
wood.2=Acacia
|
||||
@@ -761,7 +763,8 @@ wood.20=Pino
|
||||
wood.21=Ciruela
|
||||
wood.22=Arce
|
||||
wood.23=Citrus
|
||||
tile.for.arboriculture.0=Cofre de Arborista
|
||||
tile.for.arboriculture.name=Cofre de Arborista
|
||||
tile.for.arboriculture.0.name=Cofre de Arborista
|
||||
|
||||
####################
|
||||
# FARMING
|
||||
@@ -834,7 +837,8 @@ item.butterfly=Mariposa
|
||||
item.moth=Polilla
|
||||
item.flutterlyzer=Mariposanalizador
|
||||
storage.backpack.lepidopterist=Mochila de Lepidopterуlogo
|
||||
tile.for.lepidopterology.0=Cofre de Lepidopterуlogo
|
||||
tile.for.lepidopterology.name=Cofre de Lepidopterуlogo
|
||||
tile.for.lepidopterology.0.name=Cofre de Lepidopterуlogo
|
||||
|
||||
####################
|
||||
# MAIL
|
||||
|
||||
@@ -692,9 +692,11 @@ tile.alveary.6=Estabilizador de Enjambre
|
||||
tile.alveary.7=Tamiz para Enjambre
|
||||
tile.candle.0=Vela
|
||||
tile.stump.0=Tocуn de Vela
|
||||
tile.for.apiculture.0=Apiario
|
||||
tile.for.apiculture.1=Cofre de Apicultor
|
||||
tile.for.apiculture.2=Casa de Abejas
|
||||
tile.for.apiculture.name=Apiario
|
||||
tile.for.apiculture.0.name=Apiario
|
||||
tile.for.apicultureChest.name=Cofre de Apicultor
|
||||
tile.for.apicultureChest.0.name=Cofre de Apicultor
|
||||
tile.for.apiculture.2.name=Casa de Abejas
|
||||
item.for.beeQueenGE.name=Unknown Queen
|
||||
|
||||
####################
|
||||
@@ -743,7 +745,7 @@ tile.log=Madera
|
||||
tile.planks=Tablones de Madera
|
||||
tile.slab=Losa de Madera
|
||||
tile.fences=Cerca
|
||||
tile.for.stairs=Escaleras
|
||||
tile.for.stairs.name=Escaleras
|
||||
wood.0=Alerce
|
||||
wood.1=Teca
|
||||
wood.2=Acacia
|
||||
@@ -768,7 +770,8 @@ wood.20=Pino
|
||||
wood.21=Ciruela
|
||||
wood.22=Arce
|
||||
wood.23=Citrus
|
||||
tile.for.arboriculture.0=Cofre de Arborista
|
||||
tile.for.arboriculture.name=Cofre de Arborista
|
||||
tile.for.arboriculture.0.name=Cofre de Arborista
|
||||
|
||||
####################
|
||||
# FARMING
|
||||
@@ -841,7 +844,8 @@ item.butterfly=Mariposa
|
||||
item.moth=Polilla
|
||||
item.flutterlyzer=Mariposanalizador
|
||||
storage.backpack.lepidopterist=Mochila de Lepidopterуlogo
|
||||
tile.for.lepidopterology.0=Cofre de Lepidopterуlogo
|
||||
tile.for.lepidopterology.name=Cofre de Lepidopterуlogo
|
||||
tile.for.lepidopterology.0.name=Cofre de Lepidopterуlogo
|
||||
|
||||
####################
|
||||
# MAIL
|
||||
|
||||
@@ -685,9 +685,11 @@ tile.alveary.6=Estabilizador de Enjambre
|
||||
tile.alveary.7=Tamiz para Enjambre
|
||||
tile.candle.0=Vela
|
||||
tile.stump.0=Tocуn de Vela
|
||||
tile.for.apiculture.0=Apiario
|
||||
tile.for.apiculture.1=Cofre de Apicultor
|
||||
tile.for.apiculture.2=Casa de Abejas
|
||||
tile.for.apiculture.name=Apiario
|
||||
tile.for.apiculture.0.name=Apiario
|
||||
tile.for.apicultureChest.name=Cofre de Apicultor
|
||||
tile.for.apicultureChest.0.name=Cofre de Apicultor
|
||||
tile.for.apiculture.2.name=Casa de Abejas
|
||||
item.for.beeQueenGE.name=Unknown Queen
|
||||
|
||||
####################
|
||||
@@ -736,7 +738,7 @@ tile.log=Madera
|
||||
tile.planks=Tablones de Madera
|
||||
tile.slab=Losa de Madera
|
||||
tile.fences=Cerca
|
||||
tile.for.stairs=Escaleras
|
||||
tile.for.stairs.name=Escaleras
|
||||
wood.0=Alerce
|
||||
wood.1=Teca
|
||||
wood.2=Acacia
|
||||
@@ -761,7 +763,8 @@ wood.20=Pino
|
||||
wood.21=Ciruela
|
||||
wood.22=Arce
|
||||
wood.23=Citrus
|
||||
tile.for.arboriculture.0=Cofre de Arborista
|
||||
tile.for.arboriculture.name=Cofre de Arborista
|
||||
tile.for.arboriculture.0.name=Cofre de Arborista
|
||||
|
||||
####################
|
||||
# FARMING
|
||||
@@ -834,7 +837,8 @@ item.butterfly=Mariposa
|
||||
item.moth=Polilla
|
||||
item.flutterlyzer=Mariposanalizador
|
||||
storage.backpack.lepidopterist=Mochila de Lepidopterуlogo
|
||||
tile.for.lepidopterology.0=Cofre de Lepidopterуlogo
|
||||
tile.for.lepidopterology.name=Cofre de Lepidopterуlogo
|
||||
tile.for.lepidopterology.0.name=Cofre de Lepidopterуlogo
|
||||
|
||||
####################
|
||||
# MAIL
|
||||
|
||||
@@ -685,9 +685,11 @@ tile.alveary.6=Estabilizador de Enjambre
|
||||
tile.alveary.7=Tamiz para Enjambre
|
||||
tile.candle.0=Vela
|
||||
tile.stump.0=Tocуn de Vela
|
||||
tile.for.apiculture.0=Apiario
|
||||
tile.for.apiculture.1=Cofre de Apicultor
|
||||
tile.for.apiculture.2=Casa de Abejas
|
||||
tile.for.apiculture.name=Apiario
|
||||
tile.for.apiculture.0.name=Apiario
|
||||
tile.for.apicultureChest.name=Cofre de Apicultor
|
||||
tile.for.apicultureChest.0.name=Cofre de Apicultor
|
||||
tile.for.apiculture.2.name=Casa de Abejas
|
||||
item.for.beeQueenGE.name=Unknown Queen
|
||||
|
||||
####################
|
||||
@@ -736,7 +738,7 @@ tile.log=Madera
|
||||
tile.planks=Tablones de Madera
|
||||
tile.slab=Losa de Madera
|
||||
tile.fences=Cerca
|
||||
tile.for.stairs=Escaleras
|
||||
tile.for.stairs.name=Escaleras
|
||||
wood.0=Alerce
|
||||
wood.1=Teca
|
||||
wood.2=Acacia
|
||||
@@ -761,7 +763,8 @@ wood.20=Pino
|
||||
wood.21=Ciruela
|
||||
wood.22=Arce
|
||||
wood.23=Citrus
|
||||
tile.for.arboriculture.0=Cofre de Arborista
|
||||
tile.for.arboriculture.name=Cofre de Arborista
|
||||
tile.for.arboriculture.0.name=Cofre de Arborista
|
||||
|
||||
####################
|
||||
# FARMING
|
||||
@@ -834,7 +837,8 @@ item.butterfly=Mariposa
|
||||
item.moth=Polilla
|
||||
item.flutterlyzer=Mariposanalizador
|
||||
storage.backpack.lepidopterist=Mochila de Lepidopterуlogo
|
||||
tile.for.lepidopterology.0=Cofre de Lepidopterуlogo
|
||||
tile.for.lepidopterology.name=Cofre de Lepidopterуlogo
|
||||
tile.for.lepidopterology.0.name=Cofre de Lepidopterуlogo
|
||||
|
||||
####################
|
||||
# MAIL
|
||||
|
||||
@@ -685,9 +685,11 @@ tile.alveary.6=Estabilizador de Enjambre
|
||||
tile.alveary.7=Tamiz para Enjambre
|
||||
tile.candle.0=Vela
|
||||
tile.stump.0=Tocуn de Vela
|
||||
tile.for.apiculture.0=Apiario
|
||||
tile.for.apiculture.1=Cofre de Apicultor
|
||||
tile.for.apiculture.2=Casa de Abejas
|
||||
tile.for.apiculture.name=Apiario
|
||||
tile.for.apiculture.0.name=Apiario
|
||||
tile.for.apicultureChest.name=Cofre de Apicultor
|
||||
tile.for.apicultureChest.0.name=Cofre de Apicultor
|
||||
tile.for.apiculture.2.name=Casa de Abejas
|
||||
item.for.beeQueenGE.name=Unknown Queen
|
||||
|
||||
####################
|
||||
@@ -736,7 +738,7 @@ tile.log=Madera
|
||||
tile.planks=Tablones de Madera
|
||||
tile.slab=Losa de Madera
|
||||
tile.fences=Cerca
|
||||
tile.for.stairs=Escaleras
|
||||
tile.for.stairs.name=Escaleras
|
||||
wood.0=Alerce
|
||||
wood.1=Teca
|
||||
wood.2=Acacia
|
||||
@@ -761,7 +763,8 @@ wood.20=Pino
|
||||
wood.21=Ciruela
|
||||
wood.22=Arce
|
||||
wood.23=Citrus
|
||||
tile.for.arboriculture.0=Cofre de Arborista
|
||||
tile.for.arboriculture.name=Cofre de Arborista
|
||||
tile.for.arboriculture.0.name=Cofre de Arborista
|
||||
|
||||
####################
|
||||
# FARMING
|
||||
@@ -834,7 +837,8 @@ item.butterfly=Mariposa
|
||||
item.moth=Polilla
|
||||
item.flutterlyzer=Mariposanalizador
|
||||
storage.backpack.lepidopterist=Mochila de Lepidopterуlogo
|
||||
tile.for.lepidopterology.0=Cofre de Lepidopterуlogo
|
||||
tile.for.lepidopterology.name=Cofre de Lepidopterуlogo
|
||||
tile.for.lepidopterology.0.name=Cofre de Lepidopterуlogo
|
||||
|
||||
####################
|
||||
# MAIL
|
||||
|
||||
@@ -699,9 +699,11 @@ tile.candle.dyed.stump=Unlit Dyed Candle
|
||||
tile.candle.lit=Lit Candle
|
||||
tile.candle.dyed.lit=Lit Dyed Candle
|
||||
tile.stump.0=Candle Stump
|
||||
tile.for.apiculture.0=Apiary
|
||||
tile.for.apiculture.1=Apiarist's Chest
|
||||
tile.for.apiculture.2=Bee House
|
||||
tile.for.apiculture.name=Apiary
|
||||
tile.for.apiculture.0.name=Apiary
|
||||
tile.for.apicultureChest.name=Apiarist's Chest
|
||||
tile.for.apicultureChest.0.name=Apiarist's Chest
|
||||
tile.for.apiculture.2.name=Bee House
|
||||
item.for.beeQueenGE.name=Unknown Queen
|
||||
|
||||
####################
|
||||
@@ -750,7 +752,7 @@ tile.log=Wood
|
||||
tile.planks=Wood Planks
|
||||
tile.slab=Wood Slab
|
||||
tile.fences=Fence
|
||||
tile.for.stairs=Stairs
|
||||
tile.for.stairs.name=Stairs
|
||||
wood.0=Larch
|
||||
wood.1=Teak
|
||||
wood.2=Acacia
|
||||
@@ -775,7 +777,8 @@ wood.20=Pine
|
||||
wood.21=Plum
|
||||
wood.22=Maple
|
||||
wood.23=Citrus
|
||||
tile.for.arboriculture.0=Arborist's Chest
|
||||
tile.for.arboriculture.name=Arborist's Chest
|
||||
tile.for.arboriculture.0.name=Arborist's Chest
|
||||
|
||||
####################
|
||||
# FARMING
|
||||
@@ -848,7 +851,8 @@ item.butterfly=Butterfly
|
||||
item.moth=Moth
|
||||
item.flutterlyzer=Flutterlyzer
|
||||
storage.backpack.lepidopterist=Lepidopterist's Backpack
|
||||
tile.for.lepidopterology.0=Lepidopterist's Chest
|
||||
tile.for.lepidopterology.name=Lepidopterist's Chest
|
||||
tile.for.lepidopterology.0.name=Lepidopterist's Chest
|
||||
|
||||
####################
|
||||
# MAIL
|
||||
|
||||
@@ -614,9 +614,11 @@ tile.candle.dyed.stump=Unlit Dyed Candle
|
||||
tile.candle.lit=Lit Candle
|
||||
tile.candle.dyed.lit=Lit Dyed Candle
|
||||
tile.stump.0=Candle Stump
|
||||
tile.for.apiculture.0=Apiary
|
||||
tile.for.apiculture.1=Apiarist's Chest
|
||||
tile.for.apiculture.2=Bee House
|
||||
tile.for.apiculture.name=Apiary
|
||||
tile.for.apiculture.0.name=Apiary
|
||||
tile.for.apicultureChest.name=Apiarist's Chest
|
||||
tile.for.apicultureChest.0.name=Apiarist's Chest
|
||||
tile.for.apiculture.2.name=Bee House
|
||||
item.for.beeQueenGE.name=Unknown Queen
|
||||
|
||||
####################
|
||||
@@ -665,7 +667,7 @@ tile.log=Wood
|
||||
tile.planks=Wood Planks
|
||||
tile.slab=Wood Slab
|
||||
tile.fences=Fence
|
||||
tile.for.stairs=Stairs
|
||||
tile.for.stairs.name=Stairs
|
||||
wood.0=Larch
|
||||
wood.1=Teak
|
||||
wood.2=Acacia
|
||||
@@ -690,7 +692,8 @@ wood.20=Pine
|
||||
wood.21=Plum
|
||||
wood.22=Maple
|
||||
wood.23=Citrus
|
||||
tile.for.arboriculture.0=Arborist's Chest
|
||||
tile.for.arboriculture.name=Arborist's Chest
|
||||
tile.for.arboriculture.0.name=Arborist's Chest
|
||||
|
||||
####################
|
||||
# FARMING
|
||||
@@ -763,7 +766,8 @@ item.butterfly=Butterfly
|
||||
item.moth=Moth
|
||||
item.flutterlyzer=Flutterlyzer
|
||||
storage.backpack.lepidopterist=Lepidopterist's Backpack
|
||||
tile.for.lepidopterology.0=Lepidopterist's Chest
|
||||
tile.for.lepidopterology.name=Lepidopterist's Chest
|
||||
tile.for.lepidopterology.0.name=Lepidopterist's Chest
|
||||
|
||||
####################
|
||||
# MAIL
|
||||
|
||||
@@ -690,9 +690,11 @@ tile.candle.dyed.stump=Unlit Dyed Candle
|
||||
tile.candle.lit=Lit Candle
|
||||
tile.candle.dyed.lit=Lit Dyed Candle
|
||||
tile.stump.0=Candle Stump
|
||||
tile.for.apiculture.0=Apiary
|
||||
tile.for.apiculture.1=Apiarist's Chest
|
||||
tile.for.apiculture.2=Bee House
|
||||
tile.for.apiculture.name=Apiary
|
||||
tile.for.apiculture.0.name=Apiary
|
||||
tile.for.apicultureChest.name=Apiarist's Chest
|
||||
tile.for.apicultureChest.0.name=Apiarist's Chest
|
||||
tile.for.apiculture.2.name=Bee House
|
||||
item.for.beeQueenGE.name=Unknown Queen
|
||||
|
||||
####################
|
||||
@@ -741,7 +743,7 @@ tile.log=Wood
|
||||
tile.planks=Wood Planks
|
||||
tile.slab=Wood Slab
|
||||
tile.fences=Fence
|
||||
tile.for.stairs=Stairs
|
||||
tile.for.stairs.name=Stairs
|
||||
wood.0=Larch
|
||||
wood.1=Teak
|
||||
wood.2=Acacia
|
||||
@@ -766,7 +768,8 @@ wood.20=Pine
|
||||
wood.21=Plum
|
||||
wood.22=Maple
|
||||
wood.23=Citrus
|
||||
tile.for.arboriculture.0=Arborist's Chest
|
||||
tile.for.arboriculture.name=Arborist's Chest
|
||||
tile.for.arboriculture.0.name=Arborist's Chest
|
||||
|
||||
####################
|
||||
# FARMING
|
||||
@@ -839,7 +842,8 @@ item.butterfly=Butterfly
|
||||
item.moth=Moth
|
||||
item.flutterlyzer=Flutterlyzer
|
||||
storage.backpack.lepidopterist=Lepidopterist's Backpack
|
||||
tile.for.lepidopterology.0=Lepidopterist's Chest
|
||||
tile.for.lepidopterology.name=Lepidopterist's Chest
|
||||
tile.for.lepidopterology.0.name=Lepidopterist's Chest
|
||||
|
||||
####################
|
||||
# MAIL
|
||||
|
||||
@@ -489,10 +489,10 @@ tile.for.log1=Legna
|
||||
tile.for.log2=Legna
|
||||
tile.for.log3=Legna
|
||||
tile.for.log4=Legna
|
||||
tile.for.planks=Assi di legno
|
||||
tile.for.planks.name=Assi di legno
|
||||
tile.for.slabs1=Lastra di legno
|
||||
tile.for.slabs2=Lastra di legno
|
||||
tile.for.fences=Staccionata
|
||||
tile.for.fences.name=Staccionata
|
||||
tile.harvester.0=Taglialegna
|
||||
tile.harvester.1=Combinatore
|
||||
tile.harvester.2=Raccogli-albero della gomma
|
||||
@@ -741,7 +741,7 @@ tile.log=Wood
|
||||
tile.planks=Wood Planks
|
||||
tile.slab=Wood Slab
|
||||
tile.fences=Fence
|
||||
tile.for.stairs=Stairs
|
||||
tile.for.stairs.name=Stairs
|
||||
wood.0=Larch
|
||||
wood.1=Teak
|
||||
wood.2=Acacia
|
||||
@@ -766,7 +766,8 @@ wood.20=Pine
|
||||
wood.21=Plum
|
||||
wood.22=Maple
|
||||
wood.23=Citrus
|
||||
tile.for.arboriculture.0=Arborist's Chest
|
||||
tile.for.arboriculture.name=Arborist's Chest
|
||||
tile.for.arboriculture.0.name=Arborist's Chest
|
||||
|
||||
####################
|
||||
# FARMING
|
||||
@@ -836,7 +837,8 @@ item.butterfly=Butterfly
|
||||
item.moth=Moth
|
||||
item.flutterlyzer=Flutterlyzer
|
||||
storage.backpack.lepidopterist=Lepidopterist's Backpack
|
||||
tile.for.lepidopterology.0=Lepidopterist's Chest
|
||||
tile.for.lepidopterology.name=Lepidopterist's Chest
|
||||
tile.for.lepidopterology.0.name=Lepidopterist's Chest
|
||||
|
||||
####################
|
||||
# MAIL
|
||||
|
||||
@@ -501,10 +501,10 @@ tile.for.log1=原木
|
||||
tile.for.log2=原木
|
||||
tile.for.log3=原木
|
||||
tile.for.log4=原木
|
||||
tile.for.planks=木材
|
||||
tile.for.planks.name=木材
|
||||
tile.for.slabs1=木材ハーフブロック
|
||||
tile.for.slabs2=木材ハーフブロック
|
||||
tile.for.fences=フェンス
|
||||
tile.for.fences.name=フェンス
|
||||
tile.harvester.0=伐採機
|
||||
tile.harvester.1=収穫機
|
||||
tile.harvester.2=ゴムの木収穫機
|
||||
@@ -757,9 +757,11 @@ tile.candle.dyed.stump=Unlit Dyed Candle
|
||||
tile.candle.lit=Lit Candle
|
||||
tile.candle.dyed.lit=Lit Dyed Candle
|
||||
tile.stump.0=Candle Stump
|
||||
tile.for.apiculture.0=Apiary
|
||||
tile.for.apiculture.1=Apiarist's Chest
|
||||
tile.for.apiculture.2=Bee House
|
||||
tile.for.apiculture.name=養蜂箱
|
||||
tile.for.apiculture.0.name=養蜂箱
|
||||
tile.for.apicultureChest.name=養蜂家のチェスト
|
||||
tile.for.apicultureChest.0.name=養蜂家のチェスト
|
||||
tile.for.apiculture.2.name=ビーハウス
|
||||
item.for.beeQueenGE.name=Unknown Queen
|
||||
|
||||
####################
|
||||
@@ -808,7 +810,7 @@ tile.log=Wood
|
||||
tile.planks=Wood Planks
|
||||
tile.slab=Wood Slab
|
||||
tile.fences=Fence
|
||||
tile.for.stairs=Stairs
|
||||
tile.for.stairs.name=階段
|
||||
wood.0=Larch
|
||||
wood.1=Teak
|
||||
wood.2=Acacia
|
||||
@@ -833,7 +835,8 @@ wood.20=Pine
|
||||
wood.21=Plum
|
||||
wood.22=Maple
|
||||
wood.23=Citrus
|
||||
tile.for.arboriculture.0=Arborist's Chest
|
||||
tile.for.arboriculture.name=樹医のチェスト
|
||||
tile.for.arboriculture.0.name=樹医のチェスト
|
||||
|
||||
####################
|
||||
# FARMING
|
||||
@@ -906,7 +909,8 @@ item.butterfly=Butterfly
|
||||
item.moth=Moth
|
||||
item.flutterlyzer=Flutterlyzer
|
||||
storage.backpack.lepidopterist=Lepidopterist's Backpack
|
||||
tile.for.lepidopterology.0=Lepidopterist's Chest
|
||||
tile.for.lepidopterology.name=鱗翅類学者のチェスト
|
||||
tile.for.lepidopterology.0.name=鱗翅類学者のチェスト
|
||||
|
||||
####################
|
||||
# MAIL
|
||||
|
||||
@@ -709,9 +709,11 @@ tile.candle.dyed.stump=Unlit Dyed Candle
|
||||
tile.candle.lit=Lit Candle
|
||||
tile.candle.dyed.lit=Lit Dyed Candle
|
||||
tile.stump.0=Candle Stump
|
||||
tile.for.apiculture.0=Apiary
|
||||
tile.for.apiculture.1=Apiarist's Chest
|
||||
tile.for.apiculture.2=Bee House
|
||||
tile.for.apiculture.name=Apiary
|
||||
tile.for.apiculture.0.name=Apiary
|
||||
tile.for.apicultureChest.name=Apiarist's Chest
|
||||
tile.for.apicultureChest.0.name=Apiarist's Chest
|
||||
tile.for.apiculture.2.name=Bee House
|
||||
item.for.beeQueenGE.name=Unknown Queen
|
||||
|
||||
####################
|
||||
@@ -760,7 +762,7 @@ tile.log=Hout
|
||||
tile.planks=houten planken
|
||||
tile.slab=houten plaat
|
||||
tile.fences=houten hek
|
||||
tile.for.stairs=houten treden
|
||||
tile.for.stairs.name=houten treden
|
||||
wood.0=Lariks
|
||||
wood.1=Teak
|
||||
wood.2=Acacia
|
||||
@@ -857,7 +859,8 @@ item.butterfly=Butterfly
|
||||
item.moth=Moth
|
||||
item.flutterlyzer=Flutterlyzer
|
||||
storage.backpack.lepidopterist=Lepidopterist's Backpack
|
||||
tile.for.lepidopterology.0=Lepidopterist's Chest
|
||||
tile.for.lepidopterology.name=Lepidopterist's Chest
|
||||
tile.for.lepidopterology.0.name=Lepidopterist's Chest
|
||||
|
||||
####################
|
||||
# MAIL
|
||||
|
||||
@@ -710,9 +710,11 @@ tile.candle.dyed.stump=Unlit Dyed Candle
|
||||
tile.candle.lit=Lit Candle
|
||||
tile.candle.dyed.lit=Lit Dyed Candle
|
||||
tile.stump.0=Candle Stump
|
||||
tile.for.apiculture.0=Apiary
|
||||
tile.for.apiculture.1=Apiarist's Chest
|
||||
tile.for.apiculture.2=Bee House
|
||||
tile.for.apiculture.name=Apiary
|
||||
tile.for.apiculture.0.name=Apiary
|
||||
tile.for.apicultureChest.name=Apiarist's Chest
|
||||
tile.for.apicultureChest.0.name=Apiarist's Chest
|
||||
tile.for.apiculture.2.name=Bee House
|
||||
item.for.beeQueenGE.name=Unknown Queen
|
||||
|
||||
####################
|
||||
@@ -761,7 +763,7 @@ tile.log=Wood
|
||||
tile.planks=Wood Planks
|
||||
tile.slab=Wood Slab
|
||||
tile.fences=Fence
|
||||
tile.for.stairs=Stairs
|
||||
tile.for.stairs.name=Stairs
|
||||
wood.0=Larch
|
||||
wood.1=Teak
|
||||
wood.2=Acacia
|
||||
@@ -786,7 +788,8 @@ wood.20=Pine
|
||||
wood.21=Plum
|
||||
wood.22=Maple
|
||||
wood.23=Citrus
|
||||
tile.for.arboriculture.0=Arborist's Chest
|
||||
tile.for.arboriculture.name=Arborist's Chest
|
||||
tile.for.arboriculture.0.name=Arborist's Chest
|
||||
|
||||
####################
|
||||
# FARMING
|
||||
@@ -859,7 +862,8 @@ item.butterfly=Butterfly
|
||||
item.moth=Moth
|
||||
item.flutterlyzer=Flutterlyzer
|
||||
storage.backpack.lepidopterist=Lepidopterist's Backpack
|
||||
tile.for.lepidopterology.0=Lepidopterist's Chest
|
||||
tile.for.lepidopterology.name=Lepidopterist's Chest
|
||||
tile.for.lepidopterology.0.name=Lepidopterist's Chest
|
||||
|
||||
####################
|
||||
# MAIL
|
||||
|
||||
@@ -695,9 +695,11 @@ tile.alveary.6=Stabilizator Wielkiego Ula
|
||||
tile.alveary.7=Sito Wielkiego Ula
|
||||
tile.candle.0=świeca
|
||||
tile.stump.0=Postawa świecy
|
||||
tile.for.apiculture.0=Ul
|
||||
tile.for.apiculture.1=Skrzynia pszczelarza
|
||||
tile.for.apiculture.2=Dom pszczół
|
||||
tile.for.apiculture.name=Ul
|
||||
tile.for.apiculture.0.name=Ul
|
||||
tile.for.apicultureChest.name=Skrzynia pszczelarza
|
||||
tile.for.apicultureChest.0.name=Skrzynia pszczelarza
|
||||
tile.for.apiculture.2.name=Dom pszczół
|
||||
item.for.beeQueenGE.name=Unknown Queen
|
||||
|
||||
####################
|
||||
@@ -746,7 +748,7 @@ tile.log=Drewno
|
||||
tile.planks=Drewniane Deski
|
||||
tile.slab=Drewniana Półpłytka
|
||||
tile.fences=Płotek
|
||||
tile.for.stairs=Schody
|
||||
tile.for.stairs.name=Schody
|
||||
wood.0=Modrzew
|
||||
wood.1=Tek
|
||||
wood.2=Akacja
|
||||
@@ -771,7 +773,8 @@ wood.20=Sosna
|
||||
wood.21=Śliwka
|
||||
wood.22=Klon
|
||||
wood.23=Cytrus
|
||||
tile.for.arboriculture.0=Skrzynia Drzewiarza
|
||||
tile.for.arboriculture.name=Skrzynia Drzewiarza
|
||||
tile.for.arboriculture.0.name=Skrzynia Drzewiarza
|
||||
|
||||
####################
|
||||
# FARMING
|
||||
@@ -844,7 +847,8 @@ item.butterfly=Motyl
|
||||
item.moth=Ćma
|
||||
item.flutterlyzer=Motyloanalizer
|
||||
storage.backpack.lepidopterist=Plecak Entomolog'a
|
||||
tile.for.lepidopterology.0=Skrzynia Entomolog'a
|
||||
tile.for.lepidopterology.name=Skrzynia Entomolog'a
|
||||
tile.for.lepidopterology.0.name=Skrzynia Entomolog'a
|
||||
|
||||
####################
|
||||
# MAIL
|
||||
|
||||
@@ -679,9 +679,11 @@ tile.alveary.6=Estabilizador de Colmeia
|
||||
tile.alveary.7=Peneira para Colmeia
|
||||
tile.candle.0=Vela
|
||||
tile.stump.0=Cepo de Vela
|
||||
tile.for.apiculture.0=Apiбrio
|
||||
tile.for.apiculture.1=Baъ de Apicultor
|
||||
tile.for.apiculture.2=Ninho para Abelhas
|
||||
tile.for.apiculture.name=Apiбrio
|
||||
tile.for.apiculture.0.name=Apiбrio
|
||||
tile.for.apicultureChest.name=Baъ de Apicultor
|
||||
tile.for.apicultureChest.0.name=Baъ de Apicultor
|
||||
tile.for.apiculture.2.name=Ninho para Abelhas
|
||||
item.for.beeQueenGE.name=Unknown Queen
|
||||
|
||||
####################
|
||||
@@ -730,7 +732,7 @@ tile.log=Wood
|
||||
tile.planks=Tбbuas de Madeira
|
||||
tile.slab=Degrau de Madeira
|
||||
tile.fences=Cerca
|
||||
tile.for.stairs=Escadas
|
||||
tile.for.stairs.name=Escadas
|
||||
wood.0=Lariзo
|
||||
wood.1=Teca
|
||||
wood.2=Acбcia
|
||||
@@ -827,7 +829,8 @@ item.butterfly=Borboleta
|
||||
item.moth=Mariposa
|
||||
item.flutterlyzer=Borboletizador
|
||||
storage.backpack.lepidopterist=Mala de Lepidopterologista
|
||||
tile.for.lepidopterology.0=Baъ de Lepidopterologista
|
||||
tile.for.lepidopterology.name=Baъ de Lepidopterologista
|
||||
tile.for.lepidopterology.0.name=Baъ de Lepidopterologista
|
||||
|
||||
####################
|
||||
# MAIL
|
||||
|
||||
Reference in new issue
Block a user