diff --git a/java/noppes/npcs/api/block/IBlockScripted.java b/java/noppes/npcs/api/block/IBlockScripted.java new file mode 100644 index 0000000..8036abe --- /dev/null +++ b/java/noppes/npcs/api/block/IBlockScripted.java @@ -0,0 +1,132 @@ +package noppes.npcs.api.block; + +import noppes.npcs.api.IBlock; +import noppes.npcs.api.ITimers; +import noppes.npcs.api.item.IItemStack; + +public interface IBlockScripted extends IBlock { + + /** + * @param item The item to be set as model + */ + void setModel(IItemStack item); + + void setModel(String name); + + IItemStack getModel(); + + ITimers getTimers(); + + /** + * @param strength Sets the strength of the redstone signal (0-15) + */ + void setRedstonePower(int strength); + + /** + * @return Returns the current redstone power (0-15) this block is giving off + */ + int getRedstonePower(); + + void setIsLadder(boolean enabled); + + boolean getIsLadder(); + + /** + * @param value Sets the light value (0-15) + */ + void setLight(int value); + + /** + * @return Returns the light value (0-15) + */ + int getLight(); + + /** + * @param x Scale x (0-10) + * @param y Scale y (0-10) + * @param z Scale z (0-10) + */ + void setScale(float x, float y, float z); + + float getScaleX(); + + float getScaleY(); + + float getScaleZ(); + + /** + * @param x Rotation x (0-359) + * @param y Rotation y (0-359) + * @param z Rotation z (0-359) + */ + void setRotation(int x, int y, int z); + + int getRotationX(); + + int getRotationY(); + + int getRotationZ(); + + /** + * On servers the enable-command-block option in the server.properties needs to be set to true
+ * Use /gamerule commandBlockOutput false/true to turn off/on command block feedback
+ * Setting NpcUseOpCommands to true in the CustomNPCs.cfg should allow the npc to run op commands, be warned this could be a major security risk, use at own risk
+ * For permission plugins the commands are run under uuid:c9c843f8-4cb1-4c82-aa61-e264291b7bd6 and name:[customnpcs] + * @param command The command to be executed + */ + void executeCommand(String command); + + boolean getIsPassible(); + + void setIsPassible(boolean bo); + + /** + * @return Harvesting hardness (-1 makes it unharvestable) + */ + float getHardness(); + + void setHardness(float hardness); + + /** + * @return Explosion resistance (-1 makes it unexplodable) + */ + float getResistance(); + + void setResistance(float resistance); + + ITextPlane getTextPlane(); + + ITextPlane getTextPlane2(); + + ITextPlane getTextPlane3(); + + ITextPlane getTextPlane4(); + + ITextPlane getTextPlane5(); + + ITextPlane getTextPlane6(); + + void setStoredData(String key, Object value); + + Object getStoredData(String key); + + void removeStoredData(String key); + + boolean hasStoredData(String key); + + void clearStoredData(); + + String[] getStoredDataKeys(); + + void removeTempData(String key); + + void setTempData(String key, Object value); + + boolean hasTempData(String key); + + Object getTempData(String key); + + void clearTempData(); + + String[] getTempDataKeys(); +} diff --git a/java/noppes/npcs/api/block/ITextPlane.java b/java/noppes/npcs/api/block/ITextPlane.java new file mode 100644 index 0000000..337bf07 --- /dev/null +++ b/java/noppes/npcs/api/block/ITextPlane.java @@ -0,0 +1,42 @@ +package noppes.npcs.api.block; + +public interface ITextPlane { + + public String getText(); + + public void setText(String text); + + public int getRotationX(); + + public int getRotationY(); + + public int getRotationZ(); + + public void setRotationX(int x); + + public void setRotationY(int y); + + /** + * @param z Default: 0.5 + */ + public void setRotationZ(int z); + + public float getOffsetX(); + + public float getOffsetY(); + + public float getOffsetZ(); + + public void setOffsetX(float x); + + public void setOffsetY(float y); + + public void setOffsetZ(float z); + + public float getScale(); + + /** + * @param scale Default: 1 + */ + public void setScale(float scale); +} diff --git a/java/noppes/npcs/api/event/IBlockEvent.java b/java/noppes/npcs/api/event/IBlockEvent.java new file mode 100644 index 0000000..2e85076 --- /dev/null +++ b/java/noppes/npcs/api/event/IBlockEvent.java @@ -0,0 +1,72 @@ +package noppes.npcs.api.event; + +import cpw.mods.fml.common.eventhandler.Cancelable; +import noppes.npcs.api.IBlock; +import noppes.npcs.api.IPos; +import noppes.npcs.api.entity.IEntity; +import noppes.npcs.api.entity.IPlayer; + +public interface IBlockEvent extends ICustomNPCsEvent { + IBlock getBlock(); + @Cancelable + interface EntityFallenUponEvent extends IBlockEvent{ + IEntity getEntity(); + float getDistanceFallen(); + } + + @Cancelable + interface InteractEvent extends IBlockEvent { + IPlayer getPlayer(); + + float getHitX(); + + float getHitY(); + + float getHitZ(); + + int getSide(); + } + + interface RedstoneEvent extends IBlockEvent{ + int getPrevPower(); + int getPower(); + } + interface BreakEvent extends IBlockEvent{ + + } + @Cancelable + interface ExplodedEvent extends IBlockEvent{ + + } + interface RainFillEvent extends IBlockEvent{ + + } + + interface NeighborChangedEvent extends IBlockEvent { + IPos getChangedPos(); + } + + interface InitEvent extends IBlockEvent{ + + } + interface UpdateEvent extends IBlockEvent{ + + } + + interface ClickedEvent extends IBlockEvent { + IPlayer getPlayer(); + } + + @Cancelable + interface HarvestedEvent extends IBlockEvent { + IPlayer getPlayer(); + } + + interface CollidedEvent extends IBlockEvent { + IEntity getEntity(); + } + + interface TimerEvent extends IBlockEvent { + int getId(); + } +}