Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	src/main/java/noppes/npcs/scripted/NpcAPI.java
#	src/main/java/noppes/npcs/scripted/ScriptWorld.java
#	src/main/java/noppes/npcs/scripted/interfaces/AbstractNpcAPI.java
This commit is contained in:
Luis C.M committed 2022-11-06 01:00:47 -06:00
commit 66edbcea80
58 files changed
+283 -779

No files matched your search

+75 -2
View File
@@ -23,6 +23,7 @@ import net.minecraftforge.common.MinecraftForge;
import nikedemos.markovnames.generators.*;
import noppes.npcs.config.ConfigLoader;
import noppes.npcs.config.ConfigProp;
import noppes.npcs.constants.EnumScriptType;
import noppes.npcs.controllers.*;
import noppes.npcs.enchants.EnchantInterface;
import noppes.npcs.entity.*;
@@ -32,6 +33,7 @@ import noppes.npcs.scripted.NpcAPI;
import java.io.File;
import java.util.ArrayList;
import java.util.Set;
import java.util.Timer;
import java.util.UUID;
@Mod(modid = "customnpcs", name = "CustomNpcs", version = "1.6.4")
@@ -59,7 +61,12 @@ public class CustomNpcs {
"Every additional compound tag adds 65535 more characters to your script length limit. Use incrementally, with caution.")
public static int ExpandedScriptLimit = 2;
@ConfigProp(info = "Enables if Scripting Information should be printed to CustomNPCs Logs")
@ConfigProp(info = "Enables if Player Information (WAND-USE) should be printed to CustomNPCs Logs. IF on Server \n" +
"Logs will only be present SERVER-SIDE only in CustomNPCs-latest, -1, -2, and -3")
public static boolean PlayerLogging = false;
@ConfigProp(info = "Enables if Scripting Information should be printed to CustomNPCs Logs. IF on Server \n" +
"Logs will only be present SERVER-SIDE only in CustomNPCs-latest, -1, -2, and -3")
public static boolean ScriptLogging = false;
@ConfigProp(info = "Amount of Messages marked as SPAM [5, 3000]. Lower Number means MORE accurate messages \n" +
@@ -69,6 +76,10 @@ public class CustomNpcs {
@ConfigProp(info = "IN Milliseconds 1s = 1000s. If a recent LOG of the same event is SENT within this threshold it will be ignored.")
public static int ScriptIgnoreTime = 2000;
@ConfigProp(info = "Comma separated list of NPC Script Types that will omit these from the logs,\n" +
"INIT,TICK,INTERACT,DIALOG,DAMAGED,KILLED,ATTACK,TARGET,COLLIDE,KILLS,DIALOG_CLOSE,TIMER")
public static String ScriptLogIgnoreType = "TICK";
@ConfigProp(info = "Navigation search range for NPCs. Not recommended to increase if you have a slow pc or on a server. Minimum of 16, maximum of 96.")
public static int NpcNavRange = 32;
@@ -181,6 +192,19 @@ public class CustomNpcs {
public static final MarkovGenerator[] MARKOV_GENERATOR = new MarkovGenerator[10];
public static boolean InitIgnore = false;
public static boolean TickIgnore = false;
public static boolean InteractIgnore = false;
public static boolean DialogIgnore = false;
public static boolean DamagedIgnore = false;
public static boolean KilledIgnore = false;
public static boolean AttackIgnore = false;
public static boolean TargetIgnore = false;
public static boolean CollideIgnore = false;
public static boolean KillsIgnore = false;
public static boolean DialogCloseIgnore = false;
public static boolean TimerIgnore = false;
public CustomNpcs() {
instance = this;
}
@@ -205,7 +229,7 @@ public class CustomNpcs {
try {
ScriptDevs.clear();
String[] uuidStrings = ScriptDevIDs.split(";");
String[] uuidStrings = ScriptDevIDs.split(",");
for (String s : uuidStrings) {
ScriptDevs.add(UUID.fromString(s));
}
@@ -245,6 +269,55 @@ public class CustomNpcs {
if (ScriptIgnoreTime < 0)
ScriptIgnoreTime = 0;
try {
String[] ignoreTypes = ScriptLogIgnoreType.split(",");
for (String s : ignoreTypes) {
EnumScriptType type = EnumScriptType.valueOfIgnoreCase(s);
if(type != null){
switch (type){
case INIT:
InitIgnore = true;
break;
case TICK:
TickIgnore = true;
break;
case INTERACT:
InteractIgnore = true;
break;
case DIALOG:
DialogIgnore = true;
break;
case DAMAGED:
DamagedIgnore = true;
break;
case KILLED:
KilledIgnore = true;
break;
case ATTACK:
AttackIgnore = true;
break;
case TARGET:
TargetIgnore = true;
break;
case COLLIDE:
CollideIgnore = true;
break;
case KILLS:
KillsIgnore = true;
break;
case DIALOG_CLOSE:
DialogCloseIgnore = true;
break;
case TIMER:
TimerIgnore = true;
break;
default:
break;
}
}
}
} catch (Exception ignored) {}
EnchantInterface.load();
CustomItems.load();
+1 -1
View File
@@ -518,7 +518,7 @@ public class EventHooks {
public static boolean onCNPCNaturalSpawn(INaturalSpawn naturalSpawn, BlockPos blockPos, boolean animalSpawnPassed, boolean monsterSpawnPassed, boolean liquidSpawnPassed, boolean airSpawnPassed) {
ForgeDataScript handler = ScriptController.Instance.forgeScripts;
if (handler.isEnabled()) {
IPos attemptPosition = NpcAPI.Instance().getIPos(blockPos);
IPos attemptPosition = new ScriptBlockPos(blockPos);
CustomNPCsEvent.CNPCNaturalSpawnEvent event = new CustomNPCsEvent.CNPCNaturalSpawnEvent(naturalSpawn, attemptPosition, animalSpawnPassed, monsterSpawnPassed, liquidSpawnPassed, airSpawnPassed);
handler.callScript("onCNPCNaturalSpawn", event);
return NpcAPI.EVENT_BUS.post(event);
+45 -21
View File
@@ -22,6 +22,7 @@ import java.util.logging.StreamHandler;
public class LogWriter {
private final static String name = "CustomNPCs";
private final static String nameLog = "CustomNPCLog";
private final static Logger logger = Logger.getLogger(name);
private final static WeakHashMap<UUID, NPCStamp> InitCacheMap = new WeakHashMap<UUID, NPCStamp>();
@@ -65,8 +66,11 @@ public class LogWriter {
handler = new StreamHandler(new FileOutputStream(file), new Formatter() {
@Override
public String format(LogRecord record) {
StackTraceElement element = Thread.currentThread().getStackTrace()[8];
String line = "[" + element.getClassName() + ":" + element.getLineNumber() + "] ";
String line = "";
if (record.getLevel() != NPCLogLevel.CNPCLog){
StackTraceElement element = Thread.currentThread().getStackTrace()[8];
line = "[" + element.getClassName() + ":" + element.getLineNumber() + "] ";
}
String time = "[" + dateformat.format(new Date(record.getMillis())) + "][" + record.getLevel() + "]" + line;
if(record.getThrown() != null){
StringWriter sw = new StringWriter();
@@ -82,9 +86,8 @@ public class LogWriter {
logger.setUseParentHandlers(false);
Handler consoleHandler = new ConsoleHandler();
consoleHandler.setFormatter(handler.getFormatter());
consoleHandler.setLevel(Level.FINEST);
consoleHandler.setLevel(Level.ALL);
logger.addHandler(consoleHandler);
logger.setLevel(Level.ALL);
info(new Date().toString());
} catch (SecurityException e) {
@@ -99,39 +102,63 @@ public class LogWriter {
public static void postScriptLog(UUID npcUUID, EnumScriptType type, String message) {
switch (type){
case INIT:
scriptLogCalculator(InitCacheMap, npcUUID, message);
if(!CustomNpcs.InitIgnore){
scriptLogCalculator(InitCacheMap, npcUUID, message);
}
break;
case TICK:
scriptLogCalculator(TickCacheMap, npcUUID, message);
if(!CustomNpcs.TickIgnore){
scriptLogCalculator(TickCacheMap, npcUUID, message);
}
break;
case INTERACT:
scriptLogCalculator(InteractCacheMap, npcUUID, message);
if(!CustomNpcs.InteractIgnore){
scriptLogCalculator(InteractCacheMap, npcUUID, message);
}
break;
case DIALOG:
scriptLogCalculator(DialogCacheMap, npcUUID, message);
if(!CustomNpcs.DialogIgnore){
scriptLogCalculator(DialogCacheMap, npcUUID, message);
}
break;
case DAMAGED:
scriptLogCalculator(DamagedCacheMap, npcUUID, message);
if(!CustomNpcs.DamagedIgnore){
scriptLogCalculator(DamagedCacheMap, npcUUID, message);
}
break;
case KILLED:
scriptLogCalculator(KilledCacheMap, npcUUID, message);
if(!CustomNpcs.KilledIgnore){
scriptLogCalculator(KilledCacheMap, npcUUID, message);
}
break;
case ATTACK:
scriptLogCalculator(AttackCacheMap, npcUUID, message);
if(!CustomNpcs.AttackIgnore){
scriptLogCalculator(AttackCacheMap, npcUUID, message);
}
break;
case TARGET:
scriptLogCalculator(TargetCacheMap, npcUUID, message);
if(!CustomNpcs.TargetIgnore){
scriptLogCalculator(TargetCacheMap, npcUUID, message);
}
break;
case COLLIDE:
scriptLogCalculator(CollideCacheMap, npcUUID, message);
if(!CustomNpcs.CollideIgnore){
scriptLogCalculator(CollideCacheMap, npcUUID, message);
}
break;
case KILLS:
scriptLogCalculator(KillsCacheMap, npcUUID, message);
if(!CustomNpcs.KillsIgnore){
scriptLogCalculator(KillsCacheMap, npcUUID, message);
}
case DIALOG_CLOSE:
scriptLogCalculator(DialogCloseCacheMap, npcUUID, message);
if(!CustomNpcs.DialogCloseIgnore){
scriptLogCalculator(DialogCloseCacheMap, npcUUID, message);
}
break;
case TIMER:
scriptLogCalculator(TimerCacheMap, npcUUID, message);
if(!CustomNpcs.TimerIgnore){
scriptLogCalculator(TimerCacheMap, npcUUID, message);
}
break;
default:
break;
@@ -145,10 +172,7 @@ public class LogWriter {
long millisecSinceLast = TimeUnit.MILLISECONDS.toMillis(stamp.recentDate.getTime() - stamp.makeDate.getTime());
double frequency = (float)CustomNpcs.ScriptFrequency / 60;
// Reset Log if 3 Minutes Pass
// Reset Log if 2 Minutes Pass
if (secondsSinceFirst > 120) {
LogWriter.script(message);
stamp.counter = 1;
@@ -178,7 +202,7 @@ public class LogWriter {
}
public static void script(Object msg) {
logger.log(Level.ALL, msg.toString());
logger.log(NPCLogLevel.CNPCLog, msg.toString());
handler.flush();
}
@@ -0,0 +1,11 @@
package noppes.npcs;
import java.util.logging.Level;
class NPCLogLevel extends Level {
public static final Level CNPCLog = new NPCLogLevel("CNPC", 0);
public NPCLogLevel(String name, int value) {
super(name, value);
}
}
@@ -691,8 +691,8 @@ public class NoppesUtilServer {
return entity;
}
public static Entity getEntityFromNBT(NBTTagCompound compound, int x, int y,
int z, World worldObj) {
public static Entity spawnClone(NBTTagCompound compound, int x, int y,
int z, World worldObj) {
ServerCloneController.Instance.cleanTags(compound);
compound.setTag("Pos", NBTTags.nbtDoubleList(x + 0.5, y + 1, z + 0.5));
Entity entity = EntityList.createEntityFromNBT(compound, worldObj);
@@ -705,15 +705,6 @@ public class NoppesUtilServer {
npc.ticksExisted = 0;
npc.totalTicksAlive = 0;
}
return entity;
}
public static Entity spawnClone(NBTTagCompound compound, int x, int y,
int z, World worldObj) {
Entity entity = NoppesUtilServer.getEntityFromNBT(compound,x,y,z,worldObj);
if(entity == null){
return null;
}
worldObj.spawnEntityInWorld(entity);
return entity;
}
@@ -1,5 +1,7 @@
package noppes.npcs;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side;
import foxz.utils.Market;
import io.netty.buffer.ByteBuf;
@@ -196,6 +198,9 @@ public class PacketHandlerServer{
npc.script.readFromNBT(Server.readNBT(buffer));
npc.updateAI = true;
npc.script.hasInited = false;
if(CustomNpcs.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){
LogWriter.script(String.format("[%s] (Player) %s SAVED NPC %s (%s, %s, %s) [%s]", "SCRIPTER", player.getCommandSenderName(), npc.display.getName(), (int)npc.posX, (int)(npc).posY, (int)npc.posZ, npc.worldObj.getWorldInfo().getWorldName()));
}
}
else if(type == EnumPacketServer.ScriptDataGet){
NBTTagCompound compound = npc.script.writeToNBT(new NBTTagCompound());
@@ -368,6 +373,9 @@ public class PacketHandlerServer{
private void wandPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player, EntityNPCInterface npc) throws IOException{
if(type == EnumPacketServer.Delete){
if(CustomNpcs.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){
LogWriter.script(String.format("[%s] (Player) %s DELETE NPC %s (%s, %s, %s) [%s]", "WAND", player.getCommandSenderName(), npc.display.getName(), (int)npc.posX, (int)npc.posY, (int)npc.posZ, npc.worldObj.getWorldInfo().getWorldName()));
}
npc.delete();
NoppesUtilServer.deleteNpc(npc,player);
}
@@ -403,6 +411,9 @@ public class PacketHandlerServer{
npc.reset();
if(npc.linkedData != null)
LinkedNpcController.Instance.saveNpcData(npc);
if(CustomNpcs.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){
LogWriter.script(String.format("[%s] (Player) %s CLOSE NPC %s (%s, %s, %s) [%s]", "WAND", player.getCommandSenderName(), npc.display.getName(), (int)npc.posX, (int)npc.posY, (int)npc.posZ, npc.worldObj.getWorldInfo().getWorldName()));
}
NoppesUtilServer.setEditingNpc(player, null);
}
else if(type == EnumPacketServer.BanksGet){
@@ -429,12 +440,18 @@ public class PacketHandlerServer{
if(entity == null || !(entity instanceof EntityNPCInterface))
return;
NoppesUtilServer.sendOpenGui(player, EnumGuiType.MainMenuDisplay, (EntityNPCInterface) entity);
if(CustomNpcs.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){
LogWriter.script(String.format("[%s] (Player) %s OPEN NPC %s (%s, %s, %s) [%s]", "WAND", player.getCommandSenderName(), ((EntityNPCInterface)entity).display.getName(), entity.posX, entity.posY, entity.posZ, entity.worldObj.getWorldInfo().getWorldName()));
}
}
else if(type == EnumPacketServer.RemoteDelete){
Entity entity = player.worldObj.getEntityByID(buffer.readInt());
if(entity == null || !(entity instanceof EntityNPCInterface))
return;
npc = (EntityNPCInterface) entity;
if(CustomNpcs.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){
LogWriter.script(String.format("[%s] (Player) %s DELETE NPC %s (%s, %s, %s) [%s]", "WAND", player.getCommandSenderName(), npc.display.getName(), (int)npc.posX, (int)npc.posY, (int)npc.posZ, npc.worldObj.getWorldInfo().getWorldName()));
}
npc.delete();
NoppesUtilServer.deleteNpc(npc,player);
NoppesUtilServer.sendNearbyNpcs(player);
@@ -862,6 +879,9 @@ public class PacketHandlerServer{
player.addChatMessage(new ChatComponentText("Failed to create an entity out of your clone"));
return;
}
if(CustomNpcs.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){
LogWriter.script(String.format("[%s] (Player) %s SPAWNED ENTITY %s", "CLONER", player.getCommandSenderName(), entity));
}
}
else if(type == EnumPacketServer.MobSpawner){
boolean server = buffer.readBoolean();
@@ -103,7 +103,7 @@ public class ScriptItemEventHandler {
try {
if (event.entityPlayer.getHeldItem().getItem() == CustomItems.scripted_item && !event.isCanceled()) {
IItemCustom isw = ItemScripted.GetWrapper(event.entityPlayer.getHeldItem());
ItemEvent.InteractEvent eve = new ItemEvent.InteractEvent(isw, (IPlayer) NpcAPI.Instance().getIEntity(event.entityPlayer), 2, NpcAPI.Instance().getIBlock(NpcAPI.Instance().getIWorld(event.entityPlayer.worldObj), NpcAPI.Instance().getIPos(event.entityPlayer.posX, event.entityPlayer.posY, event.entityPlayer.posZ)));
ItemEvent.InteractEvent eve = new ItemEvent.InteractEvent(isw, (IPlayer) NpcAPI.Instance().getIEntity(event.entityPlayer), 2, NpcAPI.Instance().getIBlock(event.entityPlayer.worldObj, new BlockPos(event.entityPlayer.posX, event.entityPlayer.posY, event.entityPlayer.posZ)));
event.setCanceled(EventHooks.onScriptItemInteract(isw, eve));
}
} catch(Exception e) {}
@@ -119,7 +119,7 @@ public class ScriptPlayerEventHandler {
if(!event.getPlayer().worldObj.isRemote && event.world instanceof WorldServer) {
PlayerDataScript handler = ScriptController.Instance.playerScripts;
IPlayer scriptPlayer = (IPlayer) NpcAPI.Instance().getIEntity(event.getPlayer());
noppes.npcs.scripted.event.PlayerEvent.BreakEvent ev = new noppes.npcs.scripted.event.PlayerEvent.BreakEvent(scriptPlayer, NpcAPI.Instance().getIBlock(NpcAPI.Instance().getIWorld(event.world), NpcAPI.Instance().getIPos(event.x,event.y,event.z)), event.getExpToDrop());
noppes.npcs.scripted.event.PlayerEvent.BreakEvent ev = new noppes.npcs.scripted.event.PlayerEvent.BreakEvent(scriptPlayer, NpcAPI.Instance().getIBlock(event.world, new BlockPos(event.x,event.y,event.z)), event.getExpToDrop());
event.setCanceled(EventHooks.onPlayerBreak(handler, ev));
event.setExpToDrop(ev.exp);
}
@@ -4,7 +4,9 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.relauncher.Side;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityList;
@@ -50,25 +52,6 @@ public class ServerEventsHandler {
public static EntityVillager Merchant;
public static Entity mounted;
// private HashMap<String, Integer> exps = new HashMap<String, Integer>();
//
// @SubscribeEvent
// public void onUpdate(LivingUpdateEvent event){
// if(!(event.entityLiving instanceof EntityPlayer))
// return;
// EntityPlayer player = (EntityPlayer) event.entityLiving;
// if(exps.containsKey(player.getCommandSenderName())){
// int prevExp = exps.get(player.getCommandSenderName());
// if(prevExp > player.experienceTotal){
// player.addChatMessage(new ChatComponentText("Omg exp was gotten:" + (player.experienceTotal - prevExp)));
// }
// else if(prevExp < player.experienceTotal){
// player.addChatMessage(new ChatComponentText("Omg exp was lost:" + (prevExp - player.experienceTotal)));
// }
// }
// exps.put(player.getCommandSenderName(), player.experienceTotal);
// }
@SubscribeEvent
public void invoke(EntityInteractEvent event) {
ItemStack item = event.entityPlayer.getCurrentEquippedItem();
@@ -83,6 +66,9 @@ public class ServerEventsHandler {
if(!isRemote && item.getItem() == CustomItems.soulstoneEmpty && event.target instanceof EntityLivingBase) {
((ItemSoulstoneEmpty)item.getItem()).store((EntityLivingBase)event.target, item, event.entityPlayer);
if(CustomNpcs.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){
LogWriter.script(String.format("[%s] (Player) %s PICKED ENTITY %s", "SOULSTONE", event.entityPlayer.getCommandSenderName(), event.target));
}
}
if(item.getItem() == CustomItems.wand && npcInteracted && !isRemote){
@@ -91,6 +77,9 @@ public class ServerEventsHandler {
}
event.setCanceled(true);
NoppesUtilServer.sendOpenGui(event.entityPlayer, EnumGuiType.MainMenuDisplay, (EntityNPCInterface) event.target);
if(CustomNpcs.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){
LogWriter.script(String.format("[%s] (Player) %s OPEN NPC %s (%s, %s, %s) [%s]", "WAND", event.entityPlayer.getCommandSenderName(), ((EntityNPCInterface)(event.target)).display.getName(), (int)(event.target).posX, (int)(event.target).posY, (int)(event.target).posZ, (event.target).worldObj.getWorldInfo().getWorldName()));
}
}
else if(item.getItem() == CustomItems.cloner && !isRemote && !(event.target instanceof EntityPlayer)){
NBTTagCompound compound = new NBTTagCompound();
@@ -109,6 +98,9 @@ public class ServerEventsHandler {
NoppesUtilServer.setEditingNpc(event.entityPlayer, (EntityNPCInterface)event.target);
event.setCanceled(true);
Server.sendData((EntityPlayerMP)event.entityPlayer, EnumPacketClient.GUI, EnumGuiType.Script.ordinal());
if(CustomNpcs.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){
LogWriter.script(String.format("[%s] (Player) %s OPEN NPC %s (%s, %s, %s) [%s]", "SCRIPTER", event.entityPlayer.getCommandSenderName(), ((EntityNPCInterface)(event.target)).display.getName(), (int)(event.target).posX, (int)(event.target).posY, (int)(event.target).posZ, (event.target).worldObj.getWorldInfo().getWorldName()));
}
}
else if(item.getItem() == CustomItems.mount){
if(!CustomNpcsPermissions.Instance.hasPermission(event.entityPlayer, CustomNpcsPermissions.TOOL_MOUNTER))
@@ -5,6 +5,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.Entity;
@@ -13,6 +15,8 @@ import net.minecraft.entity.EntityLiving;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.world.World;
import noppes.npcs.CustomNpcs;
import noppes.npcs.LogWriter;
import noppes.npcs.client.Client;
import noppes.npcs.client.controllers.ClientCloneController;
import noppes.npcs.client.gui.util.GuiCustomScroll;
@@ -23,6 +27,7 @@ import noppes.npcs.client.gui.util.GuiNpcButton;
import noppes.npcs.client.gui.util.GuiNpcTextField;
import noppes.npcs.client.gui.util.IGuiData;
import noppes.npcs.constants.EnumPacketServer;
import noppes.npcs.entity.EntityNPCInterface;
public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData{
@@ -191,7 +196,6 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData{
return;
Client.sendData(EnumPacketServer.SpawnMob, false, posX, posY, posZ, compound);
close();
}
}
if(id == 2){
@@ -85,6 +85,11 @@ public enum EnumScriptType {
public String function;
public static EnumScriptType valueOfIgnoreCase(String channelName) {
channelName = channelName.toUpperCase();
return valueOf(channelName);
}
private EnumScriptType(String function) {
this.function = function;
}
@@ -19,7 +19,6 @@ import noppes.npcs.LogWriter;
import noppes.npcs.NoppesUtilServer;
import noppes.npcs.scripted.CustomNPCsException;
import noppes.npcs.scripted.NpcAPI;
import noppes.npcs.scripted.interfaces.IPos;
import noppes.npcs.scripted.interfaces.handler.ICloneHandler;
import noppes.npcs.scripted.interfaces.entity.IEntity;
import noppes.npcs.scripted.interfaces.IWorld;
@@ -210,18 +209,10 @@ public class ServerCloneController implements ICloneHandler {
}
}
public IEntity spawn(IPos pos, int tab, String name, IWorld world, boolean ignoreProtection) {
return this.spawn(pos.getX(),pos.getY(),pos.getZ(),tab,name,world,ignoreProtection);
}
public IEntity spawn(double x, double y, double z, int tab, String name, IWorld world) {
return spawn(x, y, z, tab, name, world, true);
}
public IEntity spawn(IPos pos, int tab, String name, IWorld world) {
return this.spawn(pos.getX(),pos.getY(),pos.getZ(),tab,name,world);
}
public IEntity[] getTab(int tab, IWorld world) {
File dir = new File(getDir(), tab + "");
if (!dir.exists() || !dir.isDirectory() || dir.listFiles() == null) {
@@ -137,7 +137,11 @@ public class DataScript implements IScriptHandler {
script.engine.put(obs[i].toString(), ob);
}
if(CustomNpcs.ScriptLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){
LogWriter.postScriptLog(npc.field_110179_h, type, String.format("[%s] NPC %s (%s, %s, %s) | Objects: %s", ((String)type.function).toUpperCase(), npc.display.name, (int)npc.posX, (int)npc.posY, (int)npc.posZ, Arrays.toString(obs)));
if(obs.length > 1 && obs[1] == null){
LogWriter.postScriptLog(npc.field_110179_h, type, String.format("[%s] NPC %s (%s, %s, %s)", ((String)type.function).toUpperCase(), npc.display.name, (int)npc.posX, (int)npc.posY, (int)npc.posZ));
} else {
LogWriter.postScriptLog(npc.field_110179_h, type, String.format("[%s] NPC %s (%s, %s, %s) | Objects: %s", ((String)type.function).toUpperCase(), npc.display.name, (int)npc.posX, (int)npc.posY, (int)npc.posZ, Arrays.toString(obs)));
}
}
return callScript(script, event);
}
@@ -2,8 +2,6 @@ package noppes.npcs.controllers.data;
import net.minecraft.nbt.NBTTagCompound;
import noppes.npcs.controllers.TransportController;
import noppes.npcs.scripted.NpcAPI;
import noppes.npcs.scripted.interfaces.IPos;
import noppes.npcs.scripted.interfaces.handler.data.ITransportLocation;
public class TransportLocation implements ITransportLocation {
@@ -80,16 +78,6 @@ public class TransportLocation implements ITransportLocation {
this.posZ = z;
}
public void setPosition(IPos pos) {
this.posX = pos.getX();
this.posY = pos.getY();
this.posZ = pos.getZ();
}
public IPos getPos() {
return NpcAPI.Instance().getIPos(this.posX, this.posY, this.posZ);
}
public double getX() {
return posX;
}
@@ -2,6 +2,7 @@ package noppes.npcs.items;
import java.util.List;
import cpw.mods.fml.common.FMLCommonHandler;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.player.EntityPlayer;
@@ -11,6 +12,8 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import noppes.npcs.CustomNpcs;
import noppes.npcs.LogWriter;
import noppes.npcs.constants.EnumRoleType;
import noppes.npcs.controllers.data.PlayerData;
import noppes.npcs.controllers.PlayerDataController;
@@ -73,6 +76,9 @@ public class ItemSoulstoneFilled extends Item {
if(entity == null)
return false;
entity.setPosition(x + 0.5, y + 1 + 0.2F, z + 0.5);
if(CustomNpcs.PlayerLogging && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){
LogWriter.script(String.format("[%s] %s PLACED ENTITY %s", "SOULSTONE", player.getCommandSenderName(), entity));
}
if(entity instanceof EntityNPCInterface){
EntityNPCInterface npc = (EntityNPCInterface) entity;
npc.ai.startPos = new int[]{x, y, z};
@@ -250,7 +250,7 @@ public class JobSpawner extends JobInterface{
return null;
}
public boolean isEmpty(){
private boolean isEmpty(){
if(compound1 != null && compound1.hasKey("id"))
return false;
if(compound2 != null && compound2.hasKey("id"))
@@ -365,7 +365,7 @@ public class JobSpawner extends JobInterface{
return living;
}
public NBTTagCompound getCompound(int i) {
private NBTTagCompound getCompound(int i) {
if(i <= 1 && compound1 != null && compound1.hasKey("id")){
number = 1;
return compound1;
@@ -394,7 +394,7 @@ public class JobSpawner extends JobInterface{
}
public List<EntityLivingBase> getNearbySpawned(){
private List<EntityLivingBase> getNearbySpawned(){
List<EntityLivingBase> spawnList = new ArrayList<EntityLivingBase>();
List<EntityLivingBase> list = npc.worldObj.getEntitiesWithinAABB(EntityLivingBase.class, npc.boundingBox.expand(40, 40, 40));
for(EntityLivingBase entity : list){
@@ -12,7 +12,6 @@ import noppes.npcs.controllers.data.PlayerTransportData;
import noppes.npcs.controllers.TransportController;
import noppes.npcs.controllers.data.TransportLocation;
import noppes.npcs.entity.EntityNPCInterface;
import noppes.npcs.scripted.interfaces.handler.data.ITransportLocation;
public class RoleTransporter extends RoleInterface{
@@ -78,12 +77,12 @@ public class RoleTransporter extends RoleInterface{
}
}
public void unlock(EntityPlayer player, ITransportLocation loc){
private void unlock(EntityPlayer player, TransportLocation loc){
PlayerTransportData data = PlayerDataController.instance.getPlayerData(player).transportData;
if(data.transports.contains(transportId))
return;
data.transports.add(transportId);
player.addChatMessage(new ChatComponentTranslation("transporter.unlock", loc.getName()));
player.addChatMessage(new ChatComponentTranslation("transporter.unlock", loc.name));
}
public TransportLocation getLocation(){
if(npc.isRemote())
@@ -95,9 +94,9 @@ public class RoleTransporter extends RoleInterface{
return loc != null && loc.id == transportId;
}
public void setTransport(ITransportLocation location) {
transportId = location.getId();
name = location.getName();
public void setTransport(TransportLocation location) {
transportId = location.id;
name = location.name;
}
}
@@ -30,7 +30,7 @@ public class ScriptBlock implements IBlock {
this.world = NpcAPI.Instance().getIWorld(world);
this.block = block;
this.pos = pos;
this.bPos = NpcAPI.Instance().getIPos(pos);
this.bPos = new ScriptBlockPos(pos);
this.tile = new ScriptTileEntity<>(world.getTileEntity(pos.getX(),pos.getY(), pos.getZ()));
}
@@ -64,13 +64,13 @@ public class ScriptBlock implements IBlock {
return this;
} else {
this.world.getMCWorld().setBlock(getX(),getY(),getZ(),block);
return NpcAPI.Instance().getIBlock(world, getX(),getY(),getZ());
return NpcAPI.Instance().getIBlock(world.getMCWorld(), block, new BlockPos(getX(),getY(),getZ()));
}
}
public IBlock setBlock(IBlock block) {
this.world.getMCWorld().setBlock(getX(),getY(),getZ(),block.getMCBlock());
return NpcAPI.Instance().getIBlock(world, getX(),getY(),getZ());
return NpcAPI.Instance().getIBlock(world.getMCWorld(), block.getMCBlock(), new BlockPos(getX(),getY(),getZ()));
}
public boolean isContainer() {
@@ -10,7 +10,7 @@ import net.minecraft.util.math.BlockPos;
import noppes.npcs.scripted.interfaces.IPos;
public class ScriptBlockPos implements IPos {
public BlockPos blockPos;
private BlockPos blockPos;
public ScriptBlockPos(BlockPos pos) {
this.blockPos = pos;
@@ -29,75 +29,75 @@ public class ScriptBlockPos implements IPos {
}
public IPos up() {
return NpcAPI.Instance().getIPos(this.blockPos.up());
return new ScriptBlockPos(this.blockPos.up());
}
public IPos up(int n) {
return NpcAPI.Instance().getIPos(this.blockPos.up(n));
return new ScriptBlockPos(this.blockPos.up(n));
}
public IPos down() {
return NpcAPI.Instance().getIPos(this.blockPos.down());
return new ScriptBlockPos(this.blockPos.down());
}
public IPos down(int n) {
return NpcAPI.Instance().getIPos(this.blockPos.down(n));
return new ScriptBlockPos(this.blockPos.down(n));
}
public IPos north() {
return NpcAPI.Instance().getIPos(this.blockPos.north());
return new ScriptBlockPos(this.blockPos.north());
}
public IPos north(int n) {
return NpcAPI.Instance().getIPos(this.blockPos.north(n));
return new ScriptBlockPos(this.blockPos.north(n));
}
public IPos east() {
return NpcAPI.Instance().getIPos(this.blockPos.east());
return new ScriptBlockPos(this.blockPos.east());
}
public IPos east(int n) {
return NpcAPI.Instance().getIPos(this.blockPos.east(n));
return new ScriptBlockPos(this.blockPos.east(n));
}
public IPos south() {
return NpcAPI.Instance().getIPos(this.blockPos.south());
return new ScriptBlockPos(this.blockPos.south());
}
public IPos south(int n) {
return NpcAPI.Instance().getIPos(this.blockPos.south(n));
return new ScriptBlockPos(this.blockPos.south(n));
}
public IPos west() {
return NpcAPI.Instance().getIPos(this.blockPos.west());
return new ScriptBlockPos(this.blockPos.west());
}
public IPos west(int n) {
return NpcAPI.Instance().getIPos(this.blockPos.west(n));
return new ScriptBlockPos(this.blockPos.west(n));
}
public IPos add(int x, int y, int z) {
return NpcAPI.Instance().getIPos(this.blockPos.add(x, y, z));
return new ScriptBlockPos(this.blockPos.add(x, y, z));
}
public IPos add(IPos pos) {
return NpcAPI.Instance().getIPos(this.blockPos.add(this.blockPos));
return new ScriptBlockPos(this.blockPos.add(this.blockPos));
}
public IPos subtract(int x, int y, int z) {
return NpcAPI.Instance().getIPos(this.blockPos.add(-x, -y, -z));
return new ScriptBlockPos(this.blockPos.add(-x, -y, -z));
}
public IPos subtract(IPos pos) {
return NpcAPI.Instance().getIPos(this.blockPos.add(-pos.getX(), -pos.getY(), -pos.getZ()));
return new ScriptBlockPos(this.blockPos.add(-pos.getX(), -pos.getY(), -pos.getZ()));
}
public IPos offset(int direction) {
return NpcAPI.Instance().getIPos(this.blockPos.offset(EnumFacing.values()[direction]));
return new ScriptBlockPos(this.blockPos.offset(EnumFacing.values()[direction]));
}
public IPos offset(int direction, int n) {
return NpcAPI.Instance().getIPos(this.blockPos.offset(EnumFacing.values()[direction], n));
return new ScriptBlockPos(this.blockPos.offset(EnumFacing.values()[direction], n));
}
public double[] normalize() {
@@ -111,8 +111,4 @@ public class ScriptBlockPos implements IPos {
double d2 = (double)(this.getZ() - pos.getZ());
return Math.sqrt(d0 * d0 + d1 * d1 + d2 * d2);
}
public BlockPos getMCPos() {
return this.blockPos;
}
}
@@ -3,7 +3,6 @@ package noppes.npcs.scripted;
import net.minecraft.nbt.*;
import noppes.npcs.NoppesUtilServer;
import noppes.npcs.scripted.interfaces.IParticle;
import noppes.npcs.scripted.interfaces.IPos;
import noppes.npcs.scripted.interfaces.IWorld;
import noppes.npcs.scripted.interfaces.entity.IEntity;
@@ -231,13 +230,6 @@ public class ScriptParticle implements IParticle {
return z;
}
public void setPosition(IPos pos) {
this.setPosition(pos.getX(),pos.getY(),pos.getZ());
}
public void getPos() {
NpcAPI.Instance().getIPos(x,y,z);
}
public void setMotion(double motionX, double motionY, double motionZ, float gravity){
this.motionX = motionX;
this.motionY = motionY;
@@ -1,4 +1,4 @@
package noppes.npcs.scripted.scoreboard;
package noppes.npcs.scripted;
import java.util.ArrayList;
import java.util.List;
@@ -15,8 +15,8 @@ import net.minecraft.server.MinecraftServer;
*/
public class ScriptScoreboard {
private Scoreboard board;
public ScriptScoreboard(){
protected ScriptScoreboard(){
board = MinecraftServer.getServer().worldServerForDimension(0).getScoreboard();
}
@@ -1,4 +1,4 @@
package noppes.npcs.scripted.scoreboard;
package noppes.npcs.scripted;
import net.minecraft.scoreboard.ScoreObjective;
@@ -1,4 +1,4 @@
package noppes.npcs.scripted.scoreboard;
package noppes.npcs.scripted;
import java.util.ArrayList;
import java.util.List;
@@ -156,7 +156,7 @@ public class ScriptSound implements ISound {
}
public IPos getPos() {
return NpcAPI.Instance().getIPos(xPosF, yPosF, zPosF);
return new ScriptBlockPos(new BlockPos(xPosF,yPosF,zPosF));
}
public float getX() {
@@ -4,39 +4,27 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.WorldServer;
import noppes.npcs.scripted.interfaces.*;
import noppes.npcs.scripted.interfaces.IBlock;
import noppes.npcs.scripted.interfaces.INbt;
import noppes.npcs.scripted.interfaces.ITileEntity;
public class ScriptTileEntity<T extends TileEntity> implements ITileEntity {
protected T tileEntity;
protected IWorld world;
public ScriptTileEntity(T tileEntity) {
this.tileEntity = tileEntity;
this.world = NpcAPI.Instance().getIWorld(tileEntity.getWorldObj());
}
public ScriptTileEntity(T tileEntity) { this.tileEntity = tileEntity; }
public int getBlockMetadata(){
return tileEntity.getBlockMetadata();
}
public IWorld getWorld(){
return world;
}
public void setWorld(IWorld world) {
this.tileEntity.setWorldObj(world.getMCWorld());
this.world = world;
public ScriptWorld getWorld(){
return (ScriptWorld) NpcAPI.Instance().getIWorld((WorldServer) tileEntity.getWorldObj());
}
public TileEntity getMCTileEntity() {
return this.tileEntity;
}
public void markDirty()
{
this.tileEntity.markDirty();
}
public void readFromNBT(INbt nbt){
this.tileEntity.readFromNBT(nbt.getMCNBT());
}
@@ -45,12 +33,8 @@ public class ScriptTileEntity<T extends TileEntity> implements ITileEntity {
return this.tileEntity.getDistanceFrom(x,y,z);
}
public double getDistanceFrom(IPos pos){
return this.getDistanceFrom(pos.getX(),pos.getY(),pos.getZ());
}
public IBlock getBlockType(){
return NpcAPI.Instance().getIBlock(world, tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord);
return NpcAPI.Instance().getIBlock(tileEntity.getWorldObj(), tileEntity.getBlockType(), new BlockPos(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord));
}
public boolean isInvalid(){
@@ -1,19 +1,13 @@
package noppes.npcs.scripted.entity;
import net.minecraft.entity.passive.EntityAnimal;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import noppes.npcs.scripted.constants.EntityType;
import noppes.npcs.scripted.interfaces.entity.IAnimal;
import noppes.npcs.scripted.interfaces.entity.IPlayer;
import noppes.npcs.scripted.interfaces.item.IItemStack;
public class ScriptAnimal<T extends EntityAnimal> extends ScriptLiving<T> implements IAnimal {
protected T entity;
public ScriptAnimal(T entity) {
super(entity);
this.entity = entity;
}
@Override
@@ -21,35 +15,8 @@ public class ScriptAnimal<T extends EntityAnimal> extends ScriptLiving<T> implem
return EntityType.ANIMAL;
}
/**
* Checks if the parameter is an item which this animal can be fed to breed it (wheat, carrots or seeds depending on
* the animal type)
*/
public boolean isBreedingItem(IItemStack itemStack) {
return this.entity.isBreedingItem(itemStack.getMCItemStack());
}
/**
* Called when a player interacts with a mob. e.g. gets milk from a cow, gets into the saddle on a pig.
*/
public boolean interact(IPlayer player) {
return this.entity.interact((EntityPlayer) player.getMCEntity());
}
public boolean isInLove() {
return this.entity.isInLove();
}
public void resetInLove() {
this.entity.resetInLove();
}
public boolean canMateWith(IAnimal animal) {
return this.entity.canMateWith((EntityAnimal) animal.getMCEntity());
}
@Override
public boolean typeOf(int type){
return type == EntityType.ANIMAL || super.typeOf(type);
return type == EntityType.ANIMAL?true:super.typeOf(type);
}
}
@@ -363,14 +363,6 @@ public class ScriptEntity<T extends Entity> implements IEntity {
this.setMotionZ(z);
}
public void setMotion(IPos pos) {
this.setMotion(pos.getX(),pos.getY(),pos.getZ());
}
public IPos getMotion() {
return NpcAPI.Instance().getIPos(entity.motionX,entity.motionY,entity.motionZ);
}
public boolean isAirborne(){
return entity.isAirBorne;
}
@@ -406,21 +398,13 @@ public class ScriptEntity<T extends Entity> implements IEntity {
}
public IPos getPos() {
return NpcAPI.Instance().getIPos(entity.posX, entity.posY, entity.posZ);
}
public IPos getPosition() {
return getPos();
return new ScriptBlockPos(new BlockPos(entity.posX,entity.posY,entity.posZ));
}
public void setPos(IPos pos) {
this.entity.setPosition((double)((float)pos.getX() + 0.5F), (double)pos.getY(), (double)((float)pos.getZ() + 0.5F));
}
public void setPosition(IPos pos) {
this.setPos(pos);
}
public int getDimension(){
return entity.dimension;
}
@@ -746,10 +730,6 @@ public class ScriptEntity<T extends Entity> implements IEntity {
entity.velocityChanged = true;
}
public void knockback(IPos pos, float direction){
this.knockback(pos.getX(),pos.getY(),pos.getZ(),direction);
}
public void setImmune(int ticks) {
entity.hurtResistantTime = ticks;
};
@@ -809,11 +789,6 @@ public class ScriptEntity<T extends Entity> implements IEntity {
this.entity.readFromNBT(nbt.getMCNBT());
}
public INbt getNbtOptional() {
NBTTagCompound compound = new NBTTagCompound();
return this.entity.writeToNBTOptional(compound) ? NpcAPI.Instance().getINbt(compound) : null;
}
public void storeAsClone(int tab, String name) {
NBTTagCompound compound = new NBTTagCompound();
if (!this.entity.writeToNBTOptional(compound)) {
@@ -63,88 +63,4 @@ public class ScriptLiving<T extends EntityLiving> extends ScriptLivingBase<T> im
public boolean canSeeEntity(IEntity entity){
return this.entity.getEntitySenses().canSee(entity.getMCEntity());
}
public void playLivingSound() {
this.entity.playLivingSound();
}
public void spawnExplosionParticle()
{
this.entity.spawnExplosionParticle();
}
public void setMoveForward(float speed)
{
this.entity.setMoveForward(speed);
}
public void faceEntity(IEntity entity, float pitch, float yaw)
{
this.entity.faceEntity(entity.getMCEntity(), pitch, yaw);
}
public boolean canPickUpLoot()
{
return this.entity.canPickUpLoot();
}
public void setCanPickUpLoot(boolean pickUp)
{
this.entity.setCanPickUpLoot(pickUp);
}
public boolean isPersistent()
{
return this.entity.isNoDespawnRequired();
}
public void enablePersistence() {
this.entity.func_110163_bv();
}
public void setCustomNameTag(String text)
{
this.entity.setCustomNameTag(text);
}
public String getCustomNameTag()
{
return this.entity.getCustomNameTag();
}
public boolean hasCustomNameTag()
{
return this.entity.hasCustomNameTag();
}
public void setAlwaysRenderNameTag(boolean alwaysRender)
{
this.entity.setAlwaysRenderNameTag(alwaysRender);
}
public boolean getAlwaysRenderNameTag()
{
return this.entity.getAlwaysRenderNameTag();
}
public void clearLeashed(boolean sendPacket, boolean dropLeash)
{
this.entity.clearLeashed(sendPacket,dropLeash);
}
public boolean allowLeashing() {
return this.entity.allowLeashing();
}
public boolean getLeashed() {
return this.entity.getLeashed();
}
public IEntity getLeashedTo() {
return NpcAPI.Instance().getIEntity(entity.getLeashedToEntity());
}
public void setLeashedTo(IEntity entity, boolean sendPacket) {
this.entity.setLeashedToEntity(entity.getMCEntity(), sendPacket);
}
}
@@ -1,5 +1,6 @@
package noppes.npcs.scripted.entity;
import net.minecraft.block.BlockLiquid;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.potion.Potion;
@@ -7,14 +8,18 @@ import net.minecraft.potion.PotionEffect;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EntityDamageSource;
import net.minecraft.util.Vec3;
import noppes.npcs.scripted.NpcAPI;
import noppes.npcs.scripted.ScriptDamageSource;
import noppes.npcs.scripted.constants.EntityType;
import net.minecraft.util.math.BlockPos;
import noppes.npcs.scripted.ScriptBlockPos;
import noppes.npcs.scripted.interfaces.IBlock;
import noppes.npcs.scripted.interfaces.IPos;
import noppes.npcs.scripted.interfaces.entity.IEntity;
import noppes.npcs.scripted.interfaces.entity.IEntityLivingBase;
import noppes.npcs.scripted.interfaces.item.IItemStack;
import noppes.npcs.scripted.constants.EntityType;
import noppes.npcs.scripted.interfaces.entity.IEntityLivingBase;
import noppes.npcs.scripted.NpcAPI;
import noppes.npcs.scripted.ScriptDamageSource;
import java.util.ArrayList;
public class ScriptLivingBase<T extends EntityLivingBase> extends ScriptEntity<T> implements IEntityLivingBase {
protected T entity;
@@ -103,7 +108,7 @@ public class ScriptLivingBase<T extends EntityLivingBase> extends ScriptEntity<T
public IPos getLookVector() {
Vec3 lookVec = entity.getLookVec();
return NpcAPI.Instance().getIPos(lookVec.xCoord,lookVec.yCoord,lookVec.zCoord);
return new ScriptBlockPos(new BlockPos(lookVec.xCoord,lookVec.yCoord,lookVec.zCoord));
}
public IBlock getLookingAtBlock(int maxDistance, boolean stopOnBlock, boolean stopOnLiquid, boolean stopOnCollision) {
@@ -243,54 +248,4 @@ public class ScriptLivingBase<T extends EntityLivingBase> extends ScriptEntity<T
public void setArmor(int slot, IItemStack item){
entity.setCurrentItemOrArmor(slot + 1, item == null?null:item.getMCItemStack());
}
public boolean isChild() {
return this.entity.isChild();
}
public void renderBrokenItemStack(IItemStack itemStack)
{
this.entity.renderBrokenItemStack(itemStack.getMCItemStack());
}
public boolean isOnLadder()
{
return this.entity.isOnLadder();
}
public int getTotalArmorValue()
{
return this.entity.getTotalArmorValue();
}
public int getArrowCountInEntity() {
return this.entity.getArrowCountInEntity();
}
public void setArrowCountInEntity(int count)
{
this.entity.setArrowCountInEntity(count);
}
public void dismountEntity(IEntity entity) {
this.entity.dismountEntity(entity.getMCEntity());
}
public void setAIMoveSpeed(float speed)
{
this.entity.setAIMoveSpeed(speed);
}
public float getAIMoveSpeed() {
return this.entity.getAIMoveSpeed();
}
public void setAbsorptionAmount(float amount)
{
this.entity.setAbsorptionAmount(amount);
}
public float getAbsorptionAmount() {
return this.entity.getAbsorptionAmount();
}
}
@@ -18,7 +18,6 @@ import noppes.npcs.entity.EntityNPCInterface;
import noppes.npcs.scripted.NpcAPI;
import noppes.npcs.scripted.constants.AnimationType;
import noppes.npcs.scripted.constants.EntityType;
import noppes.npcs.scripted.interfaces.IPos;
import noppes.npcs.scripted.interfaces.ITimers;
import noppes.npcs.scripted.interfaces.entity.ICustomNpc;
import noppes.npcs.scripted.interfaces.entity.IEntityLivingBase;
@@ -152,10 +151,6 @@ public class ScriptNpc<T extends EntityNPCInterface> extends ScriptLiving<T> imp
npc.script.clientNeedsUpdate = true;
}
public IPos getHome() {
return NpcAPI.Instance().getIPos(npc.ai.startPos[0],npc.ai.startPos[1],npc.ai.startPos[2]);
}
/**
* @return Home position x
*/
@@ -206,11 +201,6 @@ public class ScriptNpc<T extends EntityNPCInterface> extends ScriptLiving<T> imp
public void setHome(int x, int y, int z){
npc.ai.startPos = new int[]{x, y, z};
}
public void setHome(IPos pos){
npc.ai.startPos = new int[]{pos.getX(), pos.getY(), pos.getZ()};
}
/**
* @param health New max health
*/
@@ -1143,7 +1133,7 @@ public class ScriptNpc<T extends EntityNPCInterface> extends ScriptLiving<T> imp
public void setSkinType(byte type) {
npc.display.skinType = type;
npc.script.clientNeedsUpdate = true;
npc.updateClient = true;
}
public byte getSkinType() {
@@ -1156,7 +1146,7 @@ public class ScriptNpc<T extends EntityNPCInterface> extends ScriptLiving<T> imp
this.npc.display.url = url;
npc.textureLocation = null;
npc.display.skinType = 2;
npc.script.clientNeedsUpdate = true;
npc.updateClient = true;
}
public String getSkinUrl() {
@@ -1165,7 +1155,7 @@ public class ScriptNpc<T extends EntityNPCInterface> extends ScriptLiving<T> imp
public void setCloakTexture(String cloakTexture) {
npc.display.cloakTexture = cloakTexture;
npc.script.clientNeedsUpdate = true;
npc.updateClient = true;
}
public String getCloakTexture() {
@@ -1178,7 +1168,7 @@ public class ScriptNpc<T extends EntityNPCInterface> extends ScriptLiving<T> imp
}
this.getOverlays().add(0, NpcAPI.Instance().createSkinOverlay(overlayTexture));
npc.script.clientNeedsUpdate = true;
npc.updateClient = true;
}
public String getOverlayTexture() {
@@ -1200,6 +1190,4 @@ public class ScriptNpc<T extends EntityNPCInterface> extends ScriptLiving<T> imp
}
public void updateClient() { this.npc.updateClient(); }
public void updateAI() { this.npc.updateTasks(); }
}
@@ -86,10 +86,6 @@ public class ScriptPlayer<T extends EntityPlayerMP> extends ScriptLivingBase<T>
NoppesUtilPlayer.teleportPlayer(player, x, y, z, player.dimension);
}
public void setPosition(IPos pos) {
this.setPosition(pos.getX(),pos.getY(),pos.getZ());
}
public void setPosition(double x, double y, double z, int dimensionId){
if (NpcAPI.Instance().getIWorld(dimensionId) == null)
return;
@@ -97,10 +93,6 @@ public class ScriptPlayer<T extends EntityPlayerMP> extends ScriptLivingBase<T>
NoppesUtilPlayer.teleportPlayer(player, x, y, z, dimensionId);
}
public void setPosition(IPos pos, int dimensionId) {
this.setPosition(pos.getX(),pos.getY(),pos.getZ(), dimensionId);
}
public int getHunger(){
return player.getFoodStats().getFoodLevel();
}
@@ -513,10 +505,6 @@ public class ScriptPlayer<T extends EntityPlayerMP> extends ScriptLivingBase<T>
y = ValueUtil.CorrectInt(y, 0, 256);
player.setSpawnChunk(new ChunkCoordinates(x, y, z), true);
}
public void setSpawnpoint(IPos pos){
this.setSpawnpoint(pos.getX(),pos.getY(),pos.getZ());
}
public void resetSpawnpoint(){
player.setSpawnChunk(null, false);
@@ -459,7 +459,7 @@ public class PlayerEvent extends CustomNPCsEvent {
public Bonemeal(IPlayer player, int x, int y, int z, World world) {
super(player);
this.block = API.getIBlock(NpcAPI.Instance().getIWorld(world), x, y, z);
this.block = API.getIBlock(world, x, y, z);
this.x = x;
this.y = y;
this.z = z;
@@ -137,9 +137,6 @@ public interface IParticle {
double getY();
double getZ();
void setPosition(IPos pos);
void getPos();
void setMotion(double motionX, double motionY, double motionZ, float gravity);
double getMotionX();
double getMotionY();
@@ -5,8 +5,6 @@
package noppes.npcs.scripted.interfaces;
import net.minecraft.util.math.BlockPos;
public interface IPos {
int getX();
@@ -158,6 +156,4 @@ public interface IPos {
* @return The distance between this IPos object and the other.
*/
double distanceTo(IPos pos);
BlockPos getMCPos();
}
@@ -16,9 +16,7 @@ public interface ITileEntity {
*
* @return The world this tile entity is in.
*/
IWorld getWorld();
void setWorld(IWorld world);
ScriptWorld getWorld();
/**
*
@@ -26,8 +24,6 @@ public interface ITileEntity {
*/
TileEntity getMCTileEntity();
void markDirty();
/**
* Reads an INbt compound tag, creates a tile entity based on the data, and replaces this entity with the new one.
*/
@@ -37,7 +33,6 @@ public interface ITileEntity {
* @return The distance of this tile entity from the point given by the x, y, and z parameters.
*/
double getDistanceFrom(double x, double y, double z);
double getDistanceFrom(IPos pos);
/**
* @return A new IBlock object based on this tile entity's type.
@@ -1,7 +1,7 @@
package noppes.npcs.scripted.interfaces;
import net.minecraft.world.WorldServer;
import noppes.npcs.scripted.scoreboard.ScriptScoreboard;
import noppes.npcs.scripted.ScriptScoreboard;
import noppes.npcs.scripted.interfaces.entity.IEntity;
import noppes.npcs.scripted.interfaces.entity.IPlayer;
import noppes.npcs.scripted.interfaces.handler.data.ISound;
@@ -39,65 +39,41 @@ public interface IWorld {
* @return The top-most block in the world as an IBlock object.
*/
IBlock getTopBlock(int x, int z);
IBlock getTopBlock(IPos pos);
boolean isBlockFreezable(IPos pos);
boolean isBlockFreezable(int x, int y, int z);
boolean isBlockFreezableNaturally(IPos pos);
boolean isBlockFreezableNaturally(int x, int y, int z);
boolean canBlockFreeze(IPos pos, boolean adjacentToWater);
boolean canBlockFreeze(int x, int y, int z, boolean adjacentToWater);
boolean canBlockFreezeBody(IPos pos, boolean adjacentToWater);
boolean canBlockFreezeBody(int x, int y, int z, boolean adjacentToWater);
boolean canSnowAt(IPos pos, boolean checkLight);
boolean canSnowAt(int x, int y, int z, boolean checkLight);
boolean canSnowAtBody(IPos pos, boolean checkLight);
boolean canSnowAtBody(int x, int y, int z, boolean checkLight);
/**
* @return The Y-value of the world at this x & z value based on the height map of the world.
*/
int getHeightValue(int x, int z);
int getHeightValue(IPos pos);
/**
* @return The minimum Y-value of the world at this x & z value based on the height map of the world.
*/
int getChunkHeightMapMinimum(int x, int z);
int getChunkHeightMapMinimum(IPos pos);
/**
* @return The metadata of the block at this position.
*/
int getBlockMetadata(int x, int y, int z);
int getBlockMetadata(IPos pos);
boolean setBlockMetadataWithNotify(int x, int y, int z, int metadata, int flag);
boolean setBlockMetadataWithNotify(IPos pos, int metadata, int flag);
/**
* @param x
* @param y
* @param z
* @return can the block at this position see the sky or are there no blocks above this one
*/
boolean canSeeSky(int x, int y, int z);
/**
* @param pos
* @return can the block at this position see the sky or are there no blocks above this one
*/
boolean canSeeSky(IPos pos);
boolean canBlockSeeTheSky(int x, int y, int z);
int getFullBlockLightValue(int x, int y, int z);
int getFullBlockLightValue(IPos pos);
int getBlockLightValue(int x, int y, int z);
int getBlockLightValue(IPos pos);
void playSoundAtEntity(IEntity entity, String sound, float volume, float pitch);
@@ -120,12 +96,10 @@ public interface IWorld {
IPlayer getClosestPlayerToEntity(IEntity entity, double range);
IPlayer getClosestPlayer(double x, double y, double z, double range);
IPlayer getClosestPlayer(IPos pos, double range);
IPlayer getClosestVulnerablePlayerToEntity(IEntity entity, double range);
IPlayer getClosestVulnerablePlayer(double x, double y, double z, double range);
IPlayer getClosestVulnerablePlayer(IPos pos, double range);
/**
*
@@ -144,31 +118,25 @@ public interface IWorld {
* Sets the block's tile entity at the given position.
*/
void setTileEntity(int x, int y, int z, ITileEntity tileEntity);
void setTileEntity(IPos pos, ITileEntity tileEntity);
/**
* Removes the block's tile entity at the given position.
*/
void removeTileEntity(int x, int y, int z);
void removeTileEntity(IPos pos);
/**
*
* @return True if the block at this position is of cubic shape. (Not a stair, slab, etc.)
*/
boolean isBlockFullCube(int x, int y, int z);
boolean isBlockFullCube(IPos pos);
long getSeed();
void setSpawnLocation(int x, int y, int z);
void setSpawnLocation(IPos pos);
boolean canLightningStrikeAt(int x, int y, int z);
boolean canLightningStrikeAt(IPos pos);
boolean isBlockHighHumidity(int x, int y, int z);
boolean isBlockHighHumidity(IPos pos);
/**
* @param x World position x
@@ -178,7 +146,6 @@ public interface IWorld {
* @since 1.7.10d
*/
String getSignText(int x, int y, int z);
String getSignText(IPos pos);
/**
* @param x World position x
@@ -186,8 +153,7 @@ public interface IWorld {
* @param z World position z
* @param item The block to be set
*/
void setBlock(int x, int y, int z, IItemStack item);
void setBlock(IPos pos, IItemStack item);
public void setBlock(int x, int y, int z, IItemStack item);
/**
* @param x World position x
@@ -195,16 +161,14 @@ public interface IWorld {
* @param z World position z
* @param block The block to be set
*/
void setBlock(int x, int y, int z, IBlock block);
void setBlock(IPos pos, IBlock block);
public void setBlock(int x, int y, int z, IBlock block);
/**
* @param x World position x
* @param y World position y
* @param z World position z
*/
void removeBlock(int x, int y, int z);
void removeBlock(IPos pos);
public void removeBlock(int x, int y, int z);
IPos rayCastPos(double[] startPos, double[] lookVector, int maxDistance, boolean stopOnBlock, boolean stopOnLiquid, boolean stopOnCollision);
@@ -244,6 +208,20 @@ public interface IWorld {
IEntity[] rayCastEntities(IPos startPos, IPos lookVector, int maxDistance, double offset, double range);
/**
* @param x
* @param y
* @param z
* @return can the block at this position see the sky or are there no blocks above this one
*/
public boolean canSeeSky(int x, int y, int z);
/**
* @param pos
* @return can the block at this position see the sky or are there no blocks above this one
*/
public boolean canSeeSky(IPos pos);
/**
* @param name The name of the player to be returned
* @return The Player with name. Null is returned when the player isnt found
@@ -278,7 +256,6 @@ public interface IWorld {
* @param z The z position
*/
void thunderStrike(double x, double y, double z);
void thunderStrike(IPos pos);
/**
* Sends a packet from the server to the client everytime its called. Probably should not use this too much.
@@ -293,7 +270,6 @@ public interface IWorld {
* @param count Particle count
*/
void spawnParticle(String particle, double x, double y, double z, double dx, double dy, double dz, double speed, int count);
void spawnParticle(String particle, IPos pos, double dx, double dy, double dz, double speed, int count);
/**
* @param id The items name
@@ -377,7 +353,6 @@ public interface IWorld {
* @param grief Whether or not the explosion does damage to blocks
*/
void explode(double x, double y, double z, float range, boolean fire, boolean grief);
void explode(IPos pos, float range, boolean fire, boolean grief);
IPlayer[] getAllServerPlayers();
@@ -390,7 +365,6 @@ public interface IWorld {
* @return Returns the name of the biome
*/
String getBiomeName(int x, int z);
String getBiomeName(IPos pos);
/**
* Lets you spawn a server side cloned entity
@@ -403,10 +377,8 @@ public interface IWorld {
* @return Returns the entity which was spawned
*/
IEntity spawnClone(int x, int y, int z, int tab, String name, boolean ignoreProtection);
IEntity spawnClone(IPos pos, int tab, String name, boolean ignoreProtection);
IEntity spawnClone(int x, int y, int z, int tab, String name);
IEntity spawnClone(IPos pos, int tab, String name);
ScriptScoreboard getScoreboard();
@@ -6,23 +6,6 @@
package noppes.npcs.scripted.interfaces.entity;
import net.minecraft.entity.passive.EntityAnimal;
import noppes.npcs.scripted.interfaces.item.IItemStack;
public interface IAnimal<T extends EntityAnimal> extends IEntityLiving<T> {
/**
* Checks if the parameter is an item which this animal can be fed to breed it (wheat, carrots or seeds depending on
* the animal type)
*/
boolean isBreedingItem(IItemStack itemStack);
/**
* Called when a player interacts with a mob. e.g. gets milk from a cow, gets into the saddle on a pig.
*/
boolean interact(IPlayer player);
boolean isInLove();
void resetInLove();
boolean canMateWith(IAnimal animal);
}
@@ -6,7 +6,6 @@
package noppes.npcs.scripted.interfaces.entity;
import net.minecraft.entity.EntityCreature;
import noppes.npcs.scripted.interfaces.IPos;
import noppes.npcs.scripted.interfaces.ITimers;
import noppes.npcs.scripted.interfaces.handler.IOverlayHandler;
import noppes.npcs.scripted.interfaces.handler.data.IFaction;
@@ -73,8 +72,6 @@ public interface ICustomNpc<T extends EntityCreature> extends IEntityLiving<T> {
*/
void setTexture(String texture);
IPos getHome();
/**
* @return Home position x
*/
@@ -111,9 +108,6 @@ public interface ICustomNpc<T extends EntityCreature> extends IEntityLiving<T> {
* @param z The home z position
*/
void setHome(int x, int y, int z);
void setHome(IPos pos);
/**
* @param health New max health
*/
@@ -814,6 +808,4 @@ public interface ICustomNpc<T extends EntityCreature> extends IEntityLiving<T> {
int getCollisionType();
void updateClient();
void updateAI();
}
@@ -95,10 +95,6 @@ public interface IEntity<T extends Entity> {
void setMotion(double x, double y, double z);
void setMotion(IPos pos);
IPos getMotion();
boolean isAirborne();
/**
@@ -123,9 +119,9 @@ public interface IEntity<T extends Entity> {
*/
void setPosition(double x, double y, double z);
void setPosition(IPos pos);
IPos getPos();
IPos getPosition();
void setPos(IPos pos);
int getDimension();
@@ -309,7 +305,6 @@ public interface IEntity<T extends Entity> {
void knockback(int power, float direction);
void knockback(int xpower, int ypower, int zpower, float direction);
void knockback(IPos pos, float direction);
void setImmune(int ticks);
@@ -346,8 +341,6 @@ public interface IEntity<T extends Entity> {
public void setNbt(INbt nbt);
INbt getNbtOptional();
void storeAsClone(int tab, String name);
IWorld getWorld();
@@ -15,40 +15,4 @@ public interface IEntityLiving<T extends EntityLiving> extends IEntityLivingBase
void navigateTo(double var1, double var3, double var5, double var7);
T getMCEntity();
void playLivingSound();
void spawnExplosionParticle();
void setMoveForward(float speed);
void faceEntity(IEntity entity, float pitch, float yaw);
boolean canPickUpLoot();
void setCanPickUpLoot(boolean pickUp);
boolean isPersistent();
void enablePersistence();
void setCustomNameTag(String text);
String getCustomNameTag();
boolean hasCustomNameTag();
void setAlwaysRenderNameTag(boolean alwaysRender);
boolean getAlwaysRenderNameTag();
void clearLeashed(boolean sendPacket, boolean dropLeash);
boolean allowLeashing();
boolean getLeashed();
IEntity getLeashedTo();
void setLeashedTo(IEntity entity, boolean sendPacket);
}
@@ -146,12 +146,4 @@ public interface IEntityLivingBase<T extends EntityLivingBase> extends IEntity<T
* @param item Item to be set
*/
void setArmor(int slot, IItemStack item);
void setAIMoveSpeed(float speed);
float getAIMoveSpeed();
void setAbsorptionAmount(float amount);
float getAbsorptionAmount();
}
@@ -29,10 +29,8 @@ public interface IPlayer<T extends EntityPlayerMP> extends IEntityLivingBase<T>
void kick(String reason);
void setPosition(double x, double y, double z);
void setPosition(IPos pos);
void setPosition(double x, double y, double z, int dimensionId);
void setPosition(IPos pos, int dimensionId);
int getHunger();
@@ -212,7 +210,6 @@ public interface IPlayer<T extends EntityPlayerMP> extends IEntityLivingBase<T>
* @param z The z position
*/
void setSpawnpoint(int x, int y, int z);
void setSpawnpoint(IPos pos);
void resetSpawnpoint();
@@ -5,17 +5,14 @@
package noppes.npcs.scripted.interfaces.handler;
import noppes.npcs.scripted.interfaces.IPos;
import noppes.npcs.scripted.interfaces.IWorld;
import noppes.npcs.scripted.interfaces.entity.IEntity;
public interface ICloneHandler {
IEntity spawn(double x, double y, double z, int tab, String name, IWorld world, boolean ignoreProtection);
IEntity spawn(IPos pos, int tab, String name, IWorld world, boolean ignoreProtection);
IEntity spawn(double x, double y, double z, int tab, String name, IWorld world);
IEntity spawn(IPos pos, int tab, String name, IWorld world);
IEntity[] getTab(int tab, IWorld world);
@@ -1,7 +1,5 @@
package noppes.npcs.scripted.interfaces.handler.data;
import noppes.npcs.scripted.interfaces.IPos;
public interface ITransportLocation {
int getId();
@@ -20,8 +18,6 @@ public interface ITransportLocation {
void setPosition(int x, int y, int z);
void setPosition(IPos pos);
double getX();
double getY();
@@ -5,20 +5,4 @@ public interface IJobBard extends IJob {
String getSong();
void setSong(String song);
void setInstrument(int i);
int getInstrumentId();
void setMinRange(int range);
int getMinRange();
void setMaxRange(int range);
int getMaxRange();
void setStreaming(boolean streaming);
boolean getStreaming();
void hasOffRange(boolean value);
boolean hasOffRange();
}
@@ -1,12 +1,4 @@
package noppes.npcs.scripted.interfaces.jobs;
public interface IJobGuard extends IJob {
boolean attackCreepers();
void attackCreepers(boolean value);
boolean attacksAnimals();
void attacksAnimals(boolean value);
boolean attackHostileMobs();
void attackHostileMobs(boolean value);
}
@@ -5,10 +5,4 @@ import noppes.npcs.scripted.interfaces.entity.IEntityLivingBase;
public interface IJobHealer extends IJob {
void heal(IEntityLivingBase entity, float amount);
void setRange(int range);
int getRange();
void setSpeed(int speed);
int getSpeed();
}
@@ -1,31 +1,10 @@
package noppes.npcs.scripted.interfaces.jobs;
import net.minecraft.entity.player.EntityPlayerMP;
import noppes.npcs.scripted.interfaces.IPos;
import noppes.npcs.scripted.interfaces.IWorld;
import noppes.npcs.scripted.interfaces.entity.IEntityLivingBase;
import noppes.npcs.scripted.interfaces.entity.IPlayer;
public interface IJobSpawner extends IJob {
IEntityLivingBase<?> spawnEntity(int number);
IEntityLivingBase spawnEntity(int number);
IEntityLivingBase<?> getEntity(int number, int x, int y, int z, IWorld world);
IEntityLivingBase<?> getEntity(int number, IPos pos, IWorld world);
void setEntity(int number, IEntityLivingBase<?> entityLivingBase);
/**
* Removes all spawned entities
*/
void removeAllSpawned();
IEntityLivingBase<?>[] getNearbySpawned();
boolean hasPixelmon();
boolean isEmpty();
boolean isOnCooldown(IPlayer<EntityPlayerMP> player);
}
@@ -1,10 +1,6 @@
package noppes.npcs.scripted.interfaces.roles;
import net.minecraft.entity.INpc;
public interface IRole {
INpc getNpc();
int getType();
}
@@ -1,19 +1,5 @@
package noppes.npcs.scripted.interfaces.roles;
import net.minecraft.entity.player.EntityPlayerMP;
import noppes.npcs.scripted.interfaces.entity.IPlayer;
import noppes.npcs.scripted.interfaces.handler.data.ITransportLocation;
public interface IRoleTransporter extends IRole {
String getName();
int getTransportId();
void unlock(IPlayer<EntityPlayerMP> player, ITransportLocation location);
ITransportLocation getTransport();
boolean hasTransport();
void setTransport(ITransportLocation location);
}
@@ -30,50 +30,4 @@ public class ScriptJobBard extends ScriptJobInterface implements IJobBard {
job.song = song;
npc.script.clientNeedsUpdate = true;
}
/**
*
* @param i The id of the instrument. IDs:
* 0 - None,
* 1 - Banjo,
* 2 - Violin,
* 3 - Guitar,
* 4 - Harp,
* 5 - FrenchHorn
*/
public void setInstrument(int i) {
this.job.setInstrument(i);
}
public int getInstrumentId() {
return this.job.getInstrument().ordinal();
}
public void setMinRange(int range) {
this.job.minRange = range;
}
public int getMinRange() {
return this.job.minRange;
}
public void setMaxRange(int range) {
this.job.maxRange = range;
}
public int getMaxRange() {
return this.job.maxRange;
}
public void setStreaming(boolean streaming) {
this.job.isStreamer = streaming;
}
public boolean getStreaming() {
return this.job.isStreamer;
}
public void hasOffRange(boolean value) {
this.job.hasOffRange = value;
}
public boolean hasOffRange() {
return this.job.hasOffRange;
}
}
@@ -11,27 +11,6 @@ public class ScriptJobGuard extends ScriptJobInterface implements IJobGuard {
super(npc);
this.job = (JobGuard) npc.jobInterface;
}
public boolean attackCreepers() {
return job.attackCreepers;
}
public void attackCreepers(boolean value) {
job.attackCreepers = value;
}
public boolean attacksAnimals() {
return job.attacksAnimals;
}
public void attacksAnimals(boolean value) {
job.attacksAnimals = value;
}
public boolean attackHostileMobs() {
return job.attackHostileMobs;
}
public void attackHostileMobs(boolean value) {
job.attackHostileMobs = value;
}
@Override
public int getType(){
@@ -16,20 +16,6 @@ public class ScriptJobHealer extends ScriptJobInterface implements IJobHealer {
public void heal(IEntityLivingBase entity, float amount){
job.heal(entity.getMCEntity(), amount);
}
public void setRange(int range) {
this.job.range = range;
}
public int getRange() {
return this.job.range;
}
public void setSpeed(int speed) {
this.job.speed = speed;
}
public int getSpeed() {
return this.job.speed;
}
@Override
public int getType(){
@@ -1,26 +1,17 @@
package noppes.npcs.scripted.roles;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
import noppes.npcs.NoppesUtilServer;
import noppes.npcs.entity.EntityNPCInterface;
import noppes.npcs.roles.JobSpawner;
import noppes.npcs.scripted.NpcAPI;
import noppes.npcs.scripted.constants.JobType;
import noppes.npcs.scripted.interfaces.INbt;
import noppes.npcs.scripted.interfaces.IPos;
import noppes.npcs.scripted.interfaces.IWorld;
import noppes.npcs.scripted.interfaces.entity.IEntityLivingBase;
import noppes.npcs.scripted.interfaces.entity.IPlayer;
import noppes.npcs.scripted.interfaces.jobs.IJobSpawner;
public class ScriptJobSpawner extends ScriptJobInterface implements IJobSpawner {
private final JobSpawner job;
private JobSpawner job;
public ScriptJobSpawner(EntityNPCInterface npc){
super(npc);
this.job = (JobSpawner) npc.jobInterface;
@@ -36,64 +27,21 @@ public class ScriptJobSpawner extends ScriptJobInterface implements IJobSpawner
* @param number The entity going to be spawned (1-6)
* @return Returns spawned entity
*/
public IEntityLivingBase<?> spawnEntity(int number){
public IEntityLivingBase spawnEntity(int number){
EntityLivingBase base = job.spawnEntity(number);
if(base == null)
return null;
return (IEntityLivingBase<?>) NpcAPI.Instance().getIEntity(base);
return (IEntityLivingBase) NpcAPI.Instance().getIEntity(base);
}
public IEntityLivingBase<?> getEntity(int number, int x, int y, int z, IWorld world) {
NBTTagCompound compound = this.job.getCompound(number);
if(compound == null || !compound.hasKey("id"))
return null;
Entity entity = NoppesUtilServer.getEntityFromNBT(compound,x,y,z,world.getMCWorld());
if (!(entity instanceof EntityLivingBase)) {
return null;
}
return (IEntityLivingBase<?>) NpcAPI.Instance().getIEntity(entity);
}
public IEntityLivingBase<?> getEntity(int number, IPos pos, IWorld world) {
return this.getEntity(number,pos.getX(),pos.getY(),pos.getZ(),world);
}
public void setEntity(int number, IEntityLivingBase<?> entityLivingBase){
INbt nbt = entityLivingBase.getNbtOptional();
if (nbt == null)
return;
this.job.setJobCompound(number,nbt.getMCNBT());
}
/**
* Removes all spawned entities
*/
/**
* Removes all spawned entities
*/
public void removeAllSpawned(){
for(EntityLivingBase entity : job.spawned){
entity.isDead = true;
}
job.spawned = new ArrayList<>();
}
public IEntityLivingBase<?>[] getNearbySpawned() {
List<EntityLivingBase> nearbySpawned = this.job.getNearbySpawned();
List<IEntityLivingBase<?>> list = new ArrayList<>();
for (EntityLivingBase entity : nearbySpawned) {
list.add((IEntityLivingBase<?>) NpcAPI.Instance().getIEntity(entity));
}
return list.toArray(new IEntityLivingBase[0]);
}
public boolean hasPixelmon() {
return this.job.hasPixelmon();
}
public boolean isEmpty() {
return this.job.isEmpty();
}
public boolean isOnCooldown(IPlayer<EntityPlayerMP> player) {
return this.job.isOnCooldown(player.getName());
job.spawned = new ArrayList<EntityLivingBase>();
}
}
@@ -1,9 +1,7 @@
package noppes.npcs.scripted.roles;
import net.minecraft.entity.INpc;
import noppes.npcs.entity.EntityNPCInterface;
import noppes.npcs.roles.RoleInterface;
import noppes.npcs.scripted.NpcAPI;
import noppes.npcs.scripted.constants.RoleType;
import noppes.npcs.scripted.interfaces.roles.IRole;
@@ -16,10 +14,6 @@ public class ScriptRoleInterface implements IRole {
this.role = npc.roleInterface;
}
public INpc getNpc() {
return (INpc) NpcAPI.Instance().getIEntity(npc);
}
/**
* @see noppes.npcs.scripted.constants.RoleType
* @return The RoleType of this role
@@ -1,44 +1,13 @@
package noppes.npcs.scripted.roles;
import net.minecraft.entity.player.EntityPlayerMP;
import noppes.npcs.entity.EntityNPCInterface;
import noppes.npcs.roles.RoleTransporter;
import noppes.npcs.scripted.constants.RoleType;
import noppes.npcs.scripted.interfaces.entity.IPlayer;
import noppes.npcs.scripted.interfaces.handler.data.ITransportLocation;
import noppes.npcs.scripted.interfaces.roles.IRoleTransporter;
public class ScriptRoleTransporter extends ScriptRoleInterface implements IRoleTransporter {
private final RoleTransporter role;
public ScriptRoleTransporter(EntityNPCInterface npc) {
super(npc);
role = (RoleTransporter) npc.roleInterface;
}
public String getName() {
return role.name;
}
public int getTransportId() {
return role.transportId;
}
public void unlock(IPlayer<EntityPlayerMP> player, ITransportLocation location) {
this.role.unlock(player.getMCEntity(), location);
}
public ITransportLocation getTransport(){
return this.role.getLocation();
}
public boolean hasTransport(){
return this.role.hasTransport();
}
public void setTransport(ITransportLocation location) {
this.role.setTransport(location);
}
@Override