webdisplays/src/main/java/net/montoyo/wd/item/ItemPeripheral.java
Nicolas BARBOTIN 3456a0e1cb * Updated MCEF API
* Fixed Screen missing wiki informations
2018-02-13 21:45:07 +01:00

77 lines
3.0 KiB
Java

/*
* Copyright (C) 2018 BARBOTIN Nicolas
*/
package net.montoyo.wd.item;
import com.mojang.realmsclient.gui.ChatFormatting;
import net.minecraft.block.Block;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemMultiTexture;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3i;
import net.minecraft.world.World;
import net.montoyo.wd.WebDisplays;
import net.montoyo.wd.block.BlockKeyboardRight;
import net.montoyo.wd.core.DefaultPeripheral;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.List;
public class ItemPeripheral extends ItemMultiTexture implements WDItem {
public ItemPeripheral(Block block) {
super(block, block, (is) -> DefaultPeripheral.fromMetadata(is.getMetadata()).getName());
}
@Override
public boolean canPlaceBlockOnSide(World world, @Nonnull BlockPos pos_, @Nonnull EnumFacing side, EntityPlayer player, ItemStack stack) {
if(stack.getMetadata() != 0) //Keyboard
return true;
//Special checks for the keyboard
BlockPos pos = pos_.add(side.getDirectionVec());
if(world.isAirBlock(pos.down()) || !BlockKeyboardRight.checkNeighborhood(world, pos, null))
return false;
int f = MathHelper.floor(((double) (player.rotationYaw * 4.0f / 360.0f)) + 2.5) & 3;
Vec3i dir = EnumFacing.getHorizontal(f).rotateY().getDirectionVec();
BlockPos left = pos.add(dir);
BlockPos right = pos.subtract(dir);
if(world.isAirBlock(right) && !world.isAirBlock(right.down()) && BlockKeyboardRight.checkNeighborhood(world, right, null))
return true;
else
return world.isAirBlock(left) && !world.isAirBlock(left.down()) && BlockKeyboardRight.checkNeighborhood(world, left, null);
}
@Override
public void addInformation(@Nullable ItemStack is, @Nullable World world, @Nullable List<String> tt, @Nullable ITooltipFlag ttFlags) {
super.addInformation(is, world, tt, ttFlags);
if(is != null && tt != null) {
if(is.getMetadata() == 1) //CC Interface
tt.add("" + ChatFormatting.RED + I18n.format("webdisplays.message.missingCC")); //CC is not available for 1.12.2
else if(is.getMetadata() == 2 && !WebDisplays.isOpenComputersAvailable()) //OC Interface
tt.add("" + ChatFormatting.RED + I18n.format("webdisplays.message.missingOC"));
else if(is.getMetadata() == 11 && WebDisplays.PROXY.isMiniservDisabled()) //Server
tt.add("" + ChatFormatting.RED + I18n.format("webdisplays.message.noMiniserv"));
}
WDItem.addInformation(tt);
}
@Nullable
@Override
public String getWikiName(@Nonnull ItemStack is) {
return DefaultPeripheral.fromMetadata(is.getMetadata()).getWikiName();
}
}