Files
FindYourWay/src/main/java/net/yseven/findyourway/item/ItemCompassBase.java

105 lines
3.3 KiB
Java
Raw Normal View History

2018-10-15 14:45:56 -05:00
package net.yseven.findyourway.item;
import io.netty.buffer.ByteBuf;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
2018-10-15 14:45:56 -05:00
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand;
import net.minecraft.util.ResourceLocation;
2018-10-15 14:45:56 -05:00
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.yseven.findyourway.Client.AngleGetter;
import net.yseven.findyourway.setup.ClientProxy;
import net.yseven.findyourway.setup.ServerProxy;
2018-10-15 14:45:56 -05:00
import net.yseven.findyourway.FindYourWay;
import javax.annotation.Nonnull;
public class ItemCompassBase extends Item {
private String structureType;
2018-10-15 14:45:56 -05:00
private BlockPos structurePos;
private World structureWorld;
private final int ItemCompassID;
2018-10-15 14:45:56 -05:00
public ItemCompassBase(String name, String structureName) {
setUnlocalizedName(FindYourWay.modId + "." + name);
setRegistryName(name);
structureType = structureName;
setCreativeTab(CreativeTabs.TOOLS);
setMaxStackSize(1);
ServerProxy.compassList.add(this);
ItemCompassID = ServerProxy.compassList.indexOf(this);
2018-10-15 14:45:56 -05:00
}
public String toString() {
return getUnlocalizedName();
2018-10-15 14:45:56 -05:00
}
//getters
2018-10-15 14:45:56 -05:00
public String getStructureType() {
return structureType;
}
2018-10-15 14:45:56 -05:00
public BlockPos getStructurePos() {
return structurePos;
}
public World getStructureWorld() {
return structureWorld;
}
public int getCompassID() {
return ItemCompassID;
}
2018-10-15 14:45:56 -05:00
//setters
public void setStructureType(String type) {
structureType= type;
}
public void setStructurePos(BlockPos pos) {
structurePos = pos;
}
2018-10-15 14:45:56 -05:00
public void setStructureWorld(World world) {
structureWorld = world;
}
//netcode implementation
public void toBytes(ByteBuf buf) {
if(ServerProxy.compassList.contains(this)) {
buf.writeInt(ItemCompassID);
}
}
public static ItemCompassBase fromBytes(ByteBuf buf) {
int ID = buf.readInt();
for(int i = 0; i <= ServerProxy.compassList.size(); i++) {
if(ID == ServerProxy.compassList.get(i).getCompassID()) return ServerProxy.compassList.get(i);
}
return null;
2018-10-15 14:45:56 -05:00
}
//Client Code (mostly registration)
@SideOnly(Side.CLIENT)
@SubscribeEvent
2018-10-15 14:45:56 -05:00
public void registerItemModel() {
this.addPropertyOverride(new ResourceLocation("angle"), new AngleGetter());
ModelLoader.setCustomModelResourceLocation(this, 0, new ModelResourceLocation(FindYourWay.modId + ":" + this.getUnlocalizedName(), "inventory"));
2018-10-15 14:45:56 -05:00
}
@Override
public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, @Nonnull EnumHand hand) {
if (world.isRemote) {
ClientProxy.resetStructurePos(this);
}
return new ActionResult<>(EnumActionResult.SUCCESS, player.getHeldItem(hand));
}
}