mirror of
https://github.com/KAMKEEL/CustomNPC-Plus.git
synced 2026-11-12 22:27:32 +00:00
331 lines
8.0 KiB
Java
331 lines
8.0 KiB
Java
package noppes.npcs.scripted;
|
|
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.item.Item;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.nbt.NBTBase;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.nbt.NBTTagString;
|
|
import net.minecraft.server.MinecraftServer;
|
|
import net.minecraft.util.math.BlockPos;
|
|
import net.minecraft.world.World;
|
|
import noppes.npcs.NoppesUtilServer;
|
|
import noppes.npcs.api.ITileEntity;
|
|
import noppes.npcs.api.ITimers;
|
|
import noppes.npcs.api.block.IBlockScripted;
|
|
import noppes.npcs.api.block.ITextPlane;
|
|
import noppes.npcs.api.item.IItemStack;
|
|
import noppes.npcs.blocks.tiles.TileScripted;
|
|
|
|
import java.util.Set;
|
|
|
|
public class BlockScriptedWrapper extends ScriptBlock implements IBlockScripted {
|
|
private TileScripted tile;
|
|
|
|
public BlockScriptedWrapper(World world, Block block, int x, int y, int z) {
|
|
super(world, block, new BlockPos(x, y, z));
|
|
tile = (TileScripted) super.tile.getMCTileEntity();
|
|
}
|
|
|
|
@Override
|
|
public void setModel(IItemStack item) {
|
|
if (item == null)
|
|
tile.setItemModel(null, null);
|
|
else
|
|
tile.setItemModel(item.getMCItemStack(), Block.getBlockFromItem(item.getMCItemStack().getItem()));
|
|
}
|
|
|
|
@Override
|
|
public void setModel(String name) {
|
|
if (name == null)
|
|
tile.setItemModel(null, null);
|
|
else {
|
|
Block block = Block.getBlockFromName(name);
|
|
if (block != null) {
|
|
tile.setItemModel(new ItemStack(Item.getItemFromBlock(block)), block);
|
|
} else {
|
|
if (Item.itemRegistry.containsKey(name)) {
|
|
tile.setItemModel(new ItemStack((Item) Item.itemRegistry.getObject(name)), null);
|
|
} else {
|
|
tile.setItemModel(null, null);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public IItemStack getModel() {
|
|
return NpcAPI.Instance().getIItemStack(tile.itemModel);
|
|
}
|
|
|
|
@Override
|
|
public void setRedstonePower(int strength) {
|
|
tile.setRedstonePower(strength);
|
|
}
|
|
|
|
@Override
|
|
public int getRedstonePower() {
|
|
return tile.powering;
|
|
}
|
|
|
|
@Override
|
|
public void setIsLadder(boolean bo) {
|
|
tile.isLadder = bo;
|
|
tile.needsClientUpdate = true;
|
|
}
|
|
|
|
@Override
|
|
public boolean getIsLadder() {
|
|
return tile.isLadder;
|
|
}
|
|
|
|
@Override
|
|
public void setIsPassible(boolean bo) {
|
|
setIsPassable(bo);
|
|
}
|
|
|
|
@Override
|
|
public boolean getIsPassible() {
|
|
return getIsPassable();
|
|
}
|
|
|
|
@Override
|
|
public void setIsPassable(boolean bo) {
|
|
tile.isPassible = bo;
|
|
tile.needsClientUpdate = true;
|
|
}
|
|
|
|
@Override
|
|
public boolean getIsPassable() {
|
|
if (tile == null)
|
|
return false;
|
|
return tile.isPassible;
|
|
}
|
|
|
|
@Override
|
|
public void setLight(int value) {
|
|
tile.setLightValue(value);
|
|
}
|
|
|
|
@Override
|
|
public int getLight() {
|
|
if (tile == null)
|
|
return 0;
|
|
return tile.lightValue;
|
|
}
|
|
|
|
@Override
|
|
public void setScale(float x, float y, float z) {
|
|
tile.setScale(x, y, z);
|
|
}
|
|
|
|
@Override
|
|
public float getScaleX() {
|
|
return tile.scaleX;
|
|
}
|
|
|
|
@Override
|
|
public float getScaleY() {
|
|
return tile.scaleY;
|
|
}
|
|
|
|
@Override
|
|
public float getScaleZ() {
|
|
return tile.scaleZ;
|
|
}
|
|
|
|
@Override
|
|
public void setRotation(int x, int y, int z) {
|
|
tile.setRotation(x % 360, y % 360, z % 360);
|
|
}
|
|
|
|
@Override
|
|
public int getRotationX() {
|
|
return tile.rotationX;
|
|
}
|
|
|
|
@Override
|
|
public int getRotationY() {
|
|
return tile.rotationY;
|
|
}
|
|
|
|
@Override
|
|
public int getRotationZ() {
|
|
return tile.rotationZ;
|
|
}
|
|
|
|
@Override
|
|
public float getHardness() {
|
|
return tile.blockHardness;
|
|
}
|
|
|
|
@Override
|
|
public void setHardness(float hardness) {
|
|
tile.blockHardness = hardness;
|
|
}
|
|
|
|
@Override
|
|
public float getResistance() {
|
|
return tile.blockResistance;
|
|
}
|
|
|
|
@Override
|
|
public void setResistance(float resistance) {
|
|
tile.blockResistance = resistance;
|
|
}
|
|
|
|
@Override
|
|
public void executeCommand(String command) {
|
|
if (!MinecraftServer.getServer().isCommandBlockEnabled())
|
|
throw new CustomNPCsException("Command blocks need to be enabled to executeCommands");
|
|
NoppesUtilServer.runCommand(world.getMCWorld(), "ScriptedBlock", command);
|
|
}
|
|
|
|
@Override
|
|
public ITextPlane getTextPlane() {
|
|
return tile.text1;
|
|
}
|
|
|
|
@Override
|
|
public ITextPlane getTextPlane2() {
|
|
return tile.text2;
|
|
}
|
|
|
|
@Override
|
|
public ITextPlane getTextPlane3() {
|
|
return tile.text3;
|
|
}
|
|
|
|
@Override
|
|
public ITextPlane getTextPlane4() {
|
|
return tile.text4;
|
|
}
|
|
|
|
@Override
|
|
public ITextPlane getTextPlane5() {
|
|
return tile.text5;
|
|
}
|
|
|
|
@Override
|
|
public ITextPlane getTextPlane6() {
|
|
return tile.text6;
|
|
}
|
|
|
|
@Override
|
|
public ITimers getTimers() {
|
|
return tile.timers;
|
|
}
|
|
|
|
@Override
|
|
public void setTileEntity(ITileEntity tile) {
|
|
this.tile = (TileScripted) tile;
|
|
super.setTileEntity(tile);
|
|
}
|
|
|
|
private NBTTagCompound getNBT() {
|
|
if (tile == null)
|
|
return null;
|
|
NBTTagCompound compound = tile.getTileData().getCompoundTag("CustomNPCsData");
|
|
if (compound.hasNoTags() && !tile.getTileData().hasKey("CustomNPCsData")) {
|
|
tile.getTileData().setTag("CustomNPCsData", compound);
|
|
}
|
|
return compound;
|
|
}
|
|
|
|
@Override
|
|
public void setStoredData(String key, Object value) {
|
|
NBTTagCompound compound = getNBT();
|
|
if (compound == null)
|
|
return;
|
|
if (value instanceof Number)
|
|
compound.setDouble(key, ((Number) value).doubleValue());
|
|
else if (value instanceof String)
|
|
compound.setString(key, (String) value);
|
|
}
|
|
|
|
@Override
|
|
public Object getStoredData(String key) {
|
|
NBTTagCompound compound = getNBT();
|
|
if (compound == null)
|
|
return null;
|
|
if (!compound.hasKey(key))
|
|
return null;
|
|
NBTBase base = compound.getTag(key);
|
|
if (base instanceof NBTBase.NBTPrimitive)
|
|
return ((NBTBase.NBTPrimitive) base).func_150286_g();
|
|
return ((NBTTagString) base).func_150285_a_();
|
|
}
|
|
|
|
@Override
|
|
public void removeStoredData(String key) {
|
|
NBTTagCompound compound = getNBT();
|
|
if (compound == null)
|
|
return;
|
|
compound.removeTag(key);
|
|
}
|
|
|
|
@Override
|
|
public boolean hasStoredData(String key) {
|
|
NBTTagCompound compound = getNBT();
|
|
if (compound == null)
|
|
return false;
|
|
return compound.hasKey(key);
|
|
}
|
|
|
|
@Override
|
|
public void clearStoredData() {
|
|
if (tile == null)
|
|
return;
|
|
tile.getTileData().setTag("CustomNPCsData", new NBTTagCompound());
|
|
}
|
|
|
|
@Override
|
|
public String[] getStoredDataKeys() {
|
|
NBTTagCompound compound = getNBT();
|
|
if (compound == null)
|
|
return new String[0];
|
|
return ((Set<String>) compound.func_150296_c()).toArray(new String[0]);
|
|
}
|
|
|
|
@Override
|
|
public void removeTempData(String key) {
|
|
if (tile == null)
|
|
return;
|
|
tile.tempData.remove(key);
|
|
}
|
|
|
|
@Override
|
|
public void setTempData(String key, Object value) {
|
|
if (tile == null)
|
|
return;
|
|
tile.tempData.put(key, value);
|
|
}
|
|
|
|
@Override
|
|
public boolean hasTempData(String key) {
|
|
if (tile == null)
|
|
return false;
|
|
return tile.tempData.containsKey(key);
|
|
}
|
|
|
|
@Override
|
|
public Object getTempData(String key) {
|
|
if (tile == null)
|
|
return null;
|
|
return tile.tempData.get(key);
|
|
}
|
|
|
|
@Override
|
|
public void clearTempData() {
|
|
if (tile == null)
|
|
return;
|
|
tile.tempData.clear();
|
|
}
|
|
|
|
@Override
|
|
public String[] getTempDataKeys() {
|
|
return tile.tempData.keySet().toArray(new String[tile.tempData.size()]);
|
|
}
|
|
}
|
|
|