mirror of
https://github.com/GTNewHorizons/StructureLib.git
synced 2026-10-25 20:32:24 +00:00
73 lines
3.0 KiB
Java
73 lines
3.0 KiB
Java
package com.gtnewhorizon.structurelib.item;
|
|
|
|
import static com.gtnewhorizon.structurelib.StructureLibAPI.MOD_ID;
|
|
import static net.minecraft.util.EnumChatFormatting.BLUE;
|
|
import static net.minecraft.util.StatCollector.translateToLocal;
|
|
|
|
import com.gtnewhorizon.structurelib.StructureLib;
|
|
import com.gtnewhorizon.structurelib.alignment.constructable.ConstructableUtility;
|
|
import java.util.List;
|
|
import net.minecraft.entity.Entity;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.item.Item;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.world.World;
|
|
|
|
public class ItemConstructableTrigger extends Item {
|
|
public ItemConstructableTrigger() {
|
|
setUnlocalizedName("structurelib.constructableTrigger");
|
|
setTextureName(MOD_ID + ":itemConstructableTrigger");
|
|
setCreativeTab(StructureLib.creativeTab);
|
|
}
|
|
|
|
@Override
|
|
public boolean onItemUseFirst(
|
|
ItemStack stack,
|
|
EntityPlayer player,
|
|
World world,
|
|
int x,
|
|
int y,
|
|
int z,
|
|
int side,
|
|
float hitX,
|
|
float hitY,
|
|
float hitZ) {
|
|
return ConstructableUtility.handle(stack, player, world, x, y, z, side);
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
@Override
|
|
public void addInformation(ItemStack aStack, EntityPlayer ep, List aList, boolean boo) {
|
|
aList.add(
|
|
translateToLocal("item.structurelib.constructableTrigger.desc.0")); // Triggers Constructable Interface
|
|
aList.add(BLUE
|
|
+ translateToLocal(
|
|
"item.structurelib.constructableTrigger.desc.1")); // Shows multiblock construction details,
|
|
aList.add(BLUE
|
|
+ translateToLocal(
|
|
"item.structurelib.constructableTrigger.desc.2")); // just Use on a multiblock controller.
|
|
aList.add(BLUE
|
|
+ translateToLocal(
|
|
"item.structurelib.constructableTrigger.desc.3")); // (Sneak Use in creative to build)
|
|
aList.add(BLUE
|
|
+ translateToLocal("item.structurelib.constructableTrigger.desc.4")); // Quantity affects tier/mode/type
|
|
}
|
|
|
|
@Override
|
|
public void onUpdate(
|
|
ItemStack p_77663_1_, World p_77663_2_, Entity p_77663_3_, int p_77663_4_, boolean p_77663_5_) {
|
|
// remove LastUse tags if it times out,
|
|
// so it can stack with other trigger item stacks
|
|
// don't remove it too soon though, to prevent chat spam
|
|
// this might be perceived as a hack, but ok this is simple enough to implement
|
|
if (p_77663_1_.hasTagCompound()
|
|
&& p_77663_1_.getTagCompound().getLong("LastUse") + ConstructableUtility.COOLDOWN * 2
|
|
< StructureLib.getOverworldTime()) {
|
|
NBTTagCompound tag = p_77663_1_.getTagCompound();
|
|
tag.removeTag("LastUse");
|
|
if (tag.hasNoTags()) p_77663_1_.setTagCompound(null);
|
|
}
|
|
}
|
|
}
|