mirror of
https://github.com/KAMKEEL/CustomNPC-Plus.git
synced 2026-11-12 01:27:27 +00:00
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:
commit
66edbcea80
58 files changed
+283
-779
No files matched your search
@@ -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();
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
+3
-3
@@ -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
-1
@@ -1,4 +1,4 @@
|
||||
package noppes.npcs.scripted.scoreboard;
|
||||
package noppes.npcs.scripted;
|
||||
|
||||
import net.minecraft.scoreboard.ScoreObjective;
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
Reference in new issue
Block a user