mirror of
https://github.com/KAMKEEL/CustomNPC-Plus.git
synced 2026-11-11 21:57:40 +00:00
Implemented several more events for players, including a click event, key event, fall event, and the basic entity living hurt, killed, and kills events, among others.
This commit is contained in:
1 parent
6c8c7671b8
commit
6752f8baec
38 files changed
+763
-249
No files matched your search
@@ -174,10 +174,11 @@ public class CustomNpcs {
|
||||
NetworkRegistry.INSTANCE.registerGuiHandler(this, proxy);
|
||||
|
||||
MinecraftForge.EVENT_BUS.register(new ServerEventsHandler());
|
||||
//MinecraftForge.EVENT_BUS.register((new ScriptPlayerEventHandler()).registerForgeEvents());
|
||||
MinecraftForge.EVENT_BUS.register(new ScriptController());
|
||||
|
||||
FMLCommonHandler.instance().bus().register(new ScriptPlayerEventHandler());
|
||||
ScriptPlayerEventHandler scriptPlayerEventHandler = new ScriptPlayerEventHandler();
|
||||
MinecraftForge.EVENT_BUS.register(scriptPlayerEventHandler);
|
||||
FMLCommonHandler.instance().bus().register(scriptPlayerEventHandler.registerForgeEvents());
|
||||
FMLCommonHandler.instance().bus().register(new ServerTickHandler());
|
||||
|
||||
registerNpc(EntityNPCHumanMale.class, "npchumanmale");
|
||||
|
||||
@@ -9,21 +9,22 @@ import cpw.mods.fml.common.eventhandler.Event;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.item.EntityXPOrb;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.world.WorldServer;
|
||||
import net.minecraftforge.event.entity.EntityEvent;
|
||||
import net.minecraftforge.event.entity.player.PlayerUseItemEvent;
|
||||
import net.minecraftforge.event.world.WorldEvent;
|
||||
import noppes.npcs.controllers.IScriptHandler;
|
||||
import noppes.npcs.controllers.ScriptController;
|
||||
import noppes.npcs.controllers.data.ForgeDataScript;
|
||||
import noppes.npcs.controllers.data.PlayerDataScript;
|
||||
import noppes.npcs.scripted.IEntity;
|
||||
import noppes.npcs.scripted.IWorld;
|
||||
import noppes.npcs.scripted.NpcAPI;
|
||||
import noppes.npcs.scripted.ScriptPlayer;
|
||||
import noppes.npcs.scripted.*;
|
||||
import noppes.npcs.scripted.event.ForgeEvent;
|
||||
import noppes.npcs.scripted.event.PlayerEvent;
|
||||
import noppes.npcs.scripted.event.PlayerEvent.AttackEvent;
|
||||
import noppes.npcs.scripted.event.PlayerEvent.ChatEvent;
|
||||
import noppes.npcs.scripted.event.PlayerEvent.ContainerClosed;
|
||||
@@ -40,6 +41,8 @@ import noppes.npcs.constants.EnumScriptType;
|
||||
import noppes.npcs.controllers.PlayerData;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class EventHooks {
|
||||
public EventHooks() {
|
||||
}
|
||||
@@ -63,62 +66,84 @@ public class EventHooks {
|
||||
}
|
||||
|
||||
public static boolean onPlayerInteract(PlayerDataScript handler, noppes.npcs.scripted.event.PlayerEvent.InteractEvent event) {
|
||||
handler.callScript(EnumScriptType.INTERACT, event);
|
||||
handler.callScript(EnumScriptType.INTERACT, event, "target", event.target, "type", event.type);
|
||||
return WrapperNpcAPI.EVENT_BUS.post(event);
|
||||
}
|
||||
|
||||
public static boolean onPlayerAttack(PlayerDataScript handler, AttackEvent event) {
|
||||
handler.callScript(EnumScriptType.ATTACK, event);
|
||||
public static boolean onStartUsingItem(PlayerDataScript handler, int duration, ItemStack item){
|
||||
PlayerEvent.StartUsingItem event = new PlayerEvent.StartUsingItem(handler.getPlayer(), item, duration);
|
||||
handler.callScript(EnumScriptType.START_USING_ITEM, event, "duration", event.duration, "item", event.item);
|
||||
return WrapperNpcAPI.EVENT_BUS.post(event);
|
||||
}
|
||||
|
||||
public static boolean onPlayerToss(PlayerDataScript handler, EntityItem entityItem) {
|
||||
TossEvent event = new TossEvent(handler.getPlayer(), NpcAPI.Instance().getIItemStack(entityItem.getEntityItem()));
|
||||
handler.callScript(EnumScriptType.TOSS, event);
|
||||
public static boolean onUsingItem(PlayerDataScript handler, int duration, ItemStack item){
|
||||
PlayerEvent.UsingItem event = new PlayerEvent.UsingItem(handler.getPlayer(), item, duration);
|
||||
handler.callScript(EnumScriptType.USING_ITEM, event, "duration", event.duration, "item", event.item);
|
||||
return WrapperNpcAPI.EVENT_BUS.post(event);
|
||||
}
|
||||
|
||||
public static void onPlayerLevelUp(PlayerDataScript handler, int change) {
|
||||
LevelUpEvent event = new LevelUpEvent(handler.getPlayer(), change);
|
||||
handler.callScript(EnumScriptType.LEVEL_UP, event);
|
||||
public static boolean onStopUsingItem(PlayerDataScript handler, int duration, ItemStack item){
|
||||
PlayerEvent.StopUsingItem event = new PlayerEvent.StopUsingItem(handler.getPlayer(), item, duration);
|
||||
handler.callScript(EnumScriptType.STOP_USING_ITEM, event, "duration", event.duration, "item", event.item);
|
||||
return WrapperNpcAPI.EVENT_BUS.post(event);
|
||||
}
|
||||
|
||||
public static void onFinishUsingItem(PlayerDataScript handler, int duration, ItemStack item){
|
||||
PlayerEvent.FinishUsingItem event = new PlayerEvent.FinishUsingItem(handler.getPlayer(), item, duration);
|
||||
handler.callScript(EnumScriptType.FINISH_USING_ITEM, event, "duration", event.duration, "item", event.item);
|
||||
WrapperNpcAPI.EVENT_BUS.post(event);
|
||||
}
|
||||
|
||||
public static boolean onPlayerDropItems(PlayerDataScript handler, ArrayList<EntityItem> entityItems) {
|
||||
IItemStack[] items = new IItemStack[entityItems.size()];
|
||||
for(int i = 0; i < entityItems.size(); i++){ items[i] = NpcAPI.Instance().getIItemStack(entityItems.get(i).getEntityItem()); }
|
||||
|
||||
TossEvent event = new TossEvent(handler.getPlayer(), items);
|
||||
handler.callScript(EnumScriptType.DROP, event, "items", event.items);
|
||||
return WrapperNpcAPI.EVENT_BUS.post(event);
|
||||
}
|
||||
|
||||
public static void onPlayerPickupXP(PlayerDataScript handler, EntityXPOrb orb) {
|
||||
PlayerEvent.PickupXPEvent event = new PlayerEvent.PickupXPEvent(handler.getPlayer(), orb);
|
||||
handler.callScript(EnumScriptType.PICKUP_XP, event, "amount", event.amount);
|
||||
WrapperNpcAPI.EVENT_BUS.post(event);
|
||||
}
|
||||
|
||||
public static boolean onPlayerPickUp(PlayerDataScript handler, EntityItem entityItem) {
|
||||
PickUpEvent event = new PickUpEvent(handler.getPlayer(), NpcAPI.Instance().getIItemStack(entityItem.getEntityItem()));
|
||||
handler.callScript(EnumScriptType.PICKUP, event);
|
||||
handler.callScript(EnumScriptType.PICKUP, event, "item", event.item);
|
||||
return WrapperNpcAPI.EVENT_BUS.post(event);
|
||||
}
|
||||
|
||||
public static void onPlayerContainerOpen(PlayerDataScript handler, Container container) {
|
||||
ContainerOpen event = new ContainerOpen(handler.getPlayer(), NpcAPI.Instance().getIContainer(container));
|
||||
handler.callScript(EnumScriptType.CONTAINER_OPEN, event);
|
||||
WrapperNpcAPI.EVENT_BUS.post(event);
|
||||
}
|
||||
|
||||
public static void onPlayerContainerClose(PlayerDataScript handler, Container container) {
|
||||
ContainerClosed event = new ContainerClosed(handler.getPlayer(), NpcAPI.Instance().getIContainer(container));
|
||||
handler.callScript(EnumScriptType.CONTAINER_CLOSED, event);
|
||||
handler.callScript(EnumScriptType.CONTAINER_OPEN, event, "container", event.container);
|
||||
WrapperNpcAPI.EVENT_BUS.post(event);
|
||||
}
|
||||
|
||||
public static void onPlayerDeath(PlayerDataScript handler, DamageSource source, Entity entity) {
|
||||
noppes.npcs.scripted.event.PlayerEvent.DiedEvent event = new noppes.npcs.scripted.event.PlayerEvent.DiedEvent(handler.getPlayer(), source, entity);
|
||||
handler.callScript(EnumScriptType.KILLED, event);
|
||||
handler.callScript(EnumScriptType.KILLED, event, "source", event.source, "damageSource", event.damageSource, "type", event.type);
|
||||
WrapperNpcAPI.EVENT_BUS.post(event);
|
||||
}
|
||||
|
||||
public static void onPlayerKills(PlayerDataScript handler, EntityLivingBase entityLiving) {
|
||||
noppes.npcs.scripted.event.PlayerEvent.KilledEntityEvent event = new noppes.npcs.scripted.event.PlayerEvent.KilledEntityEvent(handler.getPlayer(), entityLiving);
|
||||
handler.callScript(EnumScriptType.KILLS, event);
|
||||
handler.callScript(EnumScriptType.KILLS, event, "entity", event.entity);
|
||||
WrapperNpcAPI.EVENT_BUS.post(event);
|
||||
}
|
||||
|
||||
public static boolean onPlayerDamaged(PlayerDataScript handler, noppes.npcs.scripted.event.PlayerEvent.DamagedEvent event) {
|
||||
handler.callScript(EnumScriptType.DAMAGED, event);
|
||||
handler.callScript(EnumScriptType.DAMAGED, event, "damage", event.damage, "source", event.source, "damageSource", event.damageSource);
|
||||
return WrapperNpcAPI.EVENT_BUS.post(event);
|
||||
}
|
||||
|
||||
public static void onPlayerFall(PlayerDataScript handler, float distance) {
|
||||
PlayerEvent.FallEvent event = new PlayerEvent.FallEvent(handler.getPlayer(),distance);
|
||||
handler.callScript(EnumScriptType.FALL, event, "distance", event.distance);
|
||||
WrapperNpcAPI.EVENT_BUS.post(event);
|
||||
}
|
||||
|
||||
public static void onPlayerLogin(PlayerDataScript handler) {
|
||||
LoginEvent event = new LoginEvent(handler.getPlayer());
|
||||
handler.callScript(EnumScriptType.LOGIN, event);
|
||||
@@ -137,15 +162,22 @@ public class EventHooks {
|
||||
}
|
||||
|
||||
public static boolean onPlayerRanged(PlayerDataScript handler, noppes.npcs.scripted.event.PlayerEvent.RangedLaunchedEvent event) {
|
||||
handler.callScript(EnumScriptType.RANGED_LAUNCHED, event);
|
||||
handler.callScript(EnumScriptType.RANGED_LAUNCHED, event, "bow", event.bow, "charge", event.charge);
|
||||
return WrapperNpcAPI.EVENT_BUS.post(event);
|
||||
}
|
||||
|
||||
public static boolean onPlayerDamagedEntity(PlayerDataScript handler, DamagedEntityEvent event) {
|
||||
handler.callScript(EnumScriptType.DAMAGED_ENTITY, event);
|
||||
handler.callScript(EnumScriptType.DAMAGED_ENTITY, event, "target", event.target, "damage", event.damage, "damageSource", event.damageSource, "");
|
||||
return WrapperNpcAPI.EVENT_BUS.post(event);
|
||||
}
|
||||
|
||||
public static void onPlayerMouseClicked(EntityPlayerMP player, int button, int mouseWheel) {
|
||||
PlayerDataScript handler = PlayerData.get(player).scriptData;
|
||||
PlayerEvent.MouseClickedEvent event = new PlayerEvent.MouseClickedEvent(handler.getPlayer(), button, mouseWheel);
|
||||
handler.callScript(EnumScriptType.MOUSE_CLICKED, event, "button", event.button, "mouseWheel", event.mouseWheel);
|
||||
WrapperNpcAPI.EVENT_BUS.post(event);
|
||||
}
|
||||
|
||||
public static void onPlayerKeyPressed(EntityPlayerMP player, int button, boolean isCtrlPressed, boolean isShiftPressed, boolean isAltPressed, boolean isMetaPressed) {
|
||||
PlayerDataScript handler = PlayerData.get(player).scriptData;
|
||||
KeyPressedEvent event = new KeyPressedEvent(handler.getPlayer(), button, isCtrlPressed, isAltPressed, isShiftPressed, isMetaPressed);
|
||||
@@ -160,6 +192,11 @@ public class EventHooks {
|
||||
WrapperNpcAPI.EVENT_BUS.post(event);
|
||||
}
|
||||
|
||||
public static boolean onPlayerBreak(PlayerDataScript handler, PlayerEvent.BreakEvent event) {
|
||||
handler.callScript(EnumScriptType.BREAK, event, "block", event.block, "xp", event.exp);
|
||||
return WrapperNpcAPI.EVENT_BUS.post(event);
|
||||
}
|
||||
|
||||
public static void onForgeEntityEvent(EntityEvent event) {
|
||||
IEntity e = NpcAPI.Instance().getIEntity(event.entity);
|
||||
onForgeEvent(new noppes.npcs.scripted.event.ForgeEvent.EntityEvent(event, e), event);
|
||||
|
||||
@@ -23,6 +23,8 @@ import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.entity.projectile.EntityArrow;
|
||||
import net.minecraft.entity.projectile.EntityThrowable;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@@ -34,6 +36,7 @@ import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.tileentity.TileEntityCommandBlock;
|
||||
import net.minecraft.tileentity.TileEntityMobSpawner;
|
||||
import net.minecraft.util.ChatComponentTranslation;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
@@ -697,4 +700,19 @@ public class NoppesUtilServer {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Entity GetDamageSourcee(DamageSource damagesource) {
|
||||
Object entity = damagesource.getEntity();
|
||||
if(entity == null) {
|
||||
entity = damagesource.getSourceOfDamage();
|
||||
}
|
||||
|
||||
if(entity instanceof EntityArrow && ((EntityArrow)entity).shootingEntity instanceof EntityLivingBase) {
|
||||
entity = ((EntityArrow)entity).shootingEntity;
|
||||
} else if(entity instanceof EntityThrowable) {
|
||||
entity = ((EntityThrowable)entity).getThrower();
|
||||
}
|
||||
|
||||
return (Entity)entity;
|
||||
}
|
||||
}
|
||||
@@ -60,13 +60,21 @@ public class PacketHandlerPlayer{
|
||||
if(npc == null || npc.advanced.role != EnumRoleType.Companion || player != npc.getOwner())
|
||||
return;
|
||||
NoppesUtilServer.sendOpenGui(player, EnumGuiType.CompanionInv, npc);
|
||||
} else if(type == EnumPlayerPacket.KeyPressed) {
|
||||
}
|
||||
else if(type == EnumPlayerPacket.KeyPressed) {
|
||||
if(ScriptController.Instance.languages.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
EventHooks.onPlayerKeyPressed(player, buffer.readInt(), buffer.readBoolean(), buffer.readBoolean(), buffer.readBoolean(), buffer.readBoolean());
|
||||
}
|
||||
else if(type == EnumPlayerPacket.MouseClicked) {
|
||||
if(ScriptController.Instance.languages.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
EventHooks.onPlayerMouseClicked(player, buffer.readInt(), buffer.readInt());
|
||||
}
|
||||
else if(type == EnumPlayerPacket.FollowerHire){
|
||||
EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player);
|
||||
if(npc == null || npc.advanced.role != EnumRoleType.Follower)
|
||||
|
||||
@@ -20,27 +20,35 @@ import cpw.mods.fml.common.ModContainer;
|
||||
import cpw.mods.fml.common.eventhandler.Event;
|
||||
import cpw.mods.fml.common.eventhandler.EventPriority;
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import cpw.mods.fml.common.gameevent.InputEvent;
|
||||
import cpw.mods.fml.common.gameevent.PlayerEvent;
|
||||
import cpw.mods.fml.common.gameevent.TickEvent;
|
||||
import cpw.mods.fml.common.network.FMLNetworkEvent;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.util.ChatComponentTranslation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.WorldServer;
|
||||
import net.minecraftforge.common.ForgeHooks;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.ServerChatEvent;
|
||||
import net.minecraftforge.event.entity.EntityEvent;
|
||||
import net.minecraftforge.event.entity.EntityEvent.EntityConstructing;
|
||||
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingDeathEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingFallEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingHurtEvent;
|
||||
import net.minecraftforge.event.entity.player.*;
|
||||
import net.minecraftforge.event.world.BlockEvent;
|
||||
import net.minecraftforge.event.world.WorldEvent;
|
||||
import net.minecraftforge.event.world.WorldEvent.PotentialSpawns;
|
||||
import noppes.npcs.controllers.PlayerData;
|
||||
import noppes.npcs.controllers.data.PlayerDataScript;
|
||||
import noppes.npcs.entity.EntityNPCInterface;
|
||||
import noppes.npcs.scripted.NpcAPI;
|
||||
import noppes.npcs.scripted.event.ForgeEvent;
|
||||
import noppes.npcs.controllers.PixelmonHelper;
|
||||
import noppes.npcs.controllers.ScriptController;
|
||||
import org.lwjgl.input.Mouse;
|
||||
|
||||
public class ScriptPlayerEventHandler {
|
||||
public ScriptPlayerEventHandler() {
|
||||
@@ -50,163 +58,127 @@ public class ScriptPlayerEventHandler {
|
||||
if(event.side == Side.SERVER && event.phase == TickEvent.Phase.START) {
|
||||
EntityPlayer player = event.player;
|
||||
PlayerData data = PlayerData.get(player);
|
||||
if(player.ticksExisted % 10 == 0) {
|
||||
EventHooks.onPlayerTick(data.scriptData);
|
||||
}
|
||||
|
||||
if(data.playerLevel != player.experienceLevel) {
|
||||
EventHooks.onPlayerLevelUp(data.scriptData, data.playerLevel - player.experienceLevel);
|
||||
data.playerLevel = player.experienceLevel;
|
||||
}
|
||||
//if(player.ticksExisted % 10 == 0) {
|
||||
EventHooks.onPlayerTick(data.scriptData);
|
||||
//}
|
||||
|
||||
data.timers.update();
|
||||
}
|
||||
}
|
||||
/*
|
||||
@SubscribeEvent
|
||||
public void invoke(LeftClickBlock event) {
|
||||
if(!event.entityPlayer.field_70170_p.field_72995_K && event.getWorld() instanceof WorldServer) {
|
||||
PlayerDataScript handler = PlayerData.get(event.entityPlayer).scriptData;
|
||||
AttackEvent ev = new AttackEvent(handler.getPlayer(), 2, NpcAPI.Instance().getIBlock(event.getWorld(), event.getPos()));
|
||||
event.setCanceled(EventHooks.onPlayerAttack(handler, ev));
|
||||
if(event.getItemStack().func_77973_b() == CustomItems.scripted_item && !event.isCanceled()) {
|
||||
ItemScriptedWrapper isw = ItemScripted.GetWrapper(event.getItemStack());
|
||||
noppes.npcs.api.event.ItemEvent.AttackEvent eve = new noppes.npcs.api.event.ItemEvent.AttackEvent(isw, handler.getPlayer(), 2, NpcAPI.Instance().getIBlock(event.getWorld(), event.getPos()));
|
||||
eve.setCanceled(event.isCanceled());
|
||||
event.setCanceled(EventHooks.onScriptItemAttack(isw, eve));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void invoke(RightClickBlock event) {
|
||||
if(!event.entityPlayer.field_70170_p.field_72995_K && event.getWorld() instanceof WorldServer) {
|
||||
if(event.getItemStack().func_77973_b() == CustomItems.nbt_book) {
|
||||
((ItemNbtBook)event.getItemStack().func_77973_b()).blockEvent(event);
|
||||
event.setCanceled(true);
|
||||
} else {
|
||||
PlayerDataScript handler = PlayerData.get(event.entityPlayer).scriptData;
|
||||
handler.hadInteract = true;
|
||||
InteractEvent ev = new InteractEvent(handler.getPlayer(), 2, NpcAPI.Instance().getIBlock(event.getWorld(), event.getPos()));
|
||||
event.setCanceled(EventHooks.onPlayerInteract(handler, ev));
|
||||
if(event.getItemStack().func_77973_b() == CustomItems.scripted_item && !event.isCanceled()) {
|
||||
ItemScriptedWrapper isw = ItemScripted.GetWrapper(event.getItemStack());
|
||||
noppes.npcs.api.event.ItemEvent.InteractEvent eve = new noppes.npcs.api.event.ItemEvent.InteractEvent(isw, handler.getPlayer(), 2, NpcAPI.Instance().getIBlock(event.getWorld(), event.getPos()));
|
||||
event.setCanceled(EventHooks.onScriptItemInteract(isw, eve));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void invoke(EntityInteractEvent event) {
|
||||
if(!event.entityPlayer.field_70170_p.field_72995_K && event.getWorld() instanceof WorldServer) {
|
||||
if(event.getItemStack().func_77973_b() == CustomItems.nbt_book) {
|
||||
((ItemNbtBook)event.getItemStack().func_77973_b()).entityEvent(event);
|
||||
event.setCanceled(true);
|
||||
} else {
|
||||
PlayerDataScript handler = PlayerData.get(event.entityPlayer).scriptData;
|
||||
InteractEvent ev = new InteractEvent(handler.getPlayer(), 1, NpcAPI.Instance().getIEntity(event.getTarget()));
|
||||
event.setCanceled(EventHooks.onPlayerInteract(handler, ev));
|
||||
if(event.getItemStack().func_77973_b() == CustomItems.scripted_item && !event.isCanceled()) {
|
||||
ItemScriptedWrapper isw = ItemScripted.GetWrapper(event.getItemStack());
|
||||
noppes.npcs.api.event.ItemEvent.InteractEvent eve = new noppes.npcs.api.event.ItemEvent.InteractEvent(isw, handler.getPlayer(), 1, NpcAPI.Instance().getIEntity(event.getTarget()));
|
||||
event.setCanceled(EventHooks.onScriptItemInteract(isw, eve));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void invoke(RightClickItem event) {
|
||||
if(!event.entityPlayer.field_70170_p.field_72995_K && event.getWorld() instanceof WorldServer) {
|
||||
if(event.entityPlayer.func_184812_l_() && event.entityPlayer.func_70093_af() && event.getItemStack().func_77973_b() == CustomItems.scripted_item) {
|
||||
NoppesUtilServer.sendOpenGui(event.entityPlayer, EnumGuiType.ScriptItem, (EntityNPCInterface)null);
|
||||
} else {
|
||||
PlayerDataScript handler = PlayerData.get(event.entityPlayer).scriptData;
|
||||
if(handler.hadInteract) {
|
||||
handler.hadInteract = false;
|
||||
} else {
|
||||
InteractEvent ev = new InteractEvent(handler.getPlayer(), 0, (Object)null);
|
||||
event.setCanceled(EventHooks.onPlayerInteract(handler, ev));
|
||||
if(event.getItemStack().func_77973_b() == CustomItems.scripted_item && !event.isCanceled()) {
|
||||
ItemScriptedWrapper isw = ItemScripted.GetWrapper(event.getItemStack());
|
||||
noppes.npcs.api.event.ItemEvent.InteractEvent eve = new noppes.npcs.api.event.ItemEvent.InteractEvent(isw, handler.getPlayer(), 0, (Object)null);
|
||||
event.setCanceled(EventHooks.onScriptItemInteract(isw, eve));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
if(!event.entityPlayer.worldObj.isRemote && event.entityPlayer.worldObj instanceof WorldServer) {
|
||||
PlayerDataScript handler = PlayerData.get(event.entityPlayer).scriptData;
|
||||
noppes.npcs.scripted.event.PlayerEvent.InteractEvent ev = new noppes.npcs.scripted.event.PlayerEvent.InteractEvent(handler.getPlayer(), 1, NpcAPI.Instance().getIEntity(event.target));
|
||||
event.setCanceled(EventHooks.onPlayerInteract(handler, ev));
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void invoke(ArrowLooseEvent event) {
|
||||
if(!event.entityPlayer.field_70170_p.field_72995_K && event.getWorld() instanceof WorldServer) {
|
||||
if(!event.entityPlayer.worldObj.isRemote && event.entityPlayer.worldObj instanceof WorldServer) {
|
||||
PlayerDataScript handler = PlayerData.get(event.entityPlayer).scriptData;
|
||||
RangedLaunchedEvent ev = new RangedLaunchedEvent(handler.getPlayer());
|
||||
event.setCanceled(EventHooks.onPlayerRanged(handler, ev));
|
||||
noppes.npcs.scripted.event.PlayerEvent.RangedLaunchedEvent ev = new noppes.npcs.scripted.event.PlayerEvent.RangedLaunchedEvent(handler.getPlayer(), event.bow, event.charge);
|
||||
EventHooks.onPlayerRanged(handler, ev);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void invoke(BreakEvent event) {
|
||||
if(!event.getPlayer().field_70170_p.field_72995_K && event.getWorld() instanceof WorldServer) {
|
||||
public void invoke(BlockEvent.BreakEvent event) {
|
||||
if(!event.getPlayer().worldObj.isRemote && event.world instanceof WorldServer) {
|
||||
PlayerDataScript handler = PlayerData.get(event.getPlayer()).scriptData;
|
||||
noppes.npcs.api.event.PlayerEvent.BreakEvent ev = new noppes.npcs.api.event.PlayerEvent.BreakEvent(handler.getPlayer(), NpcAPI.Instance().getIBlock(event.getWorld(), event.getPos()), event.getExpToDrop());
|
||||
noppes.npcs.scripted.event.PlayerEvent.BreakEvent ev = new noppes.npcs.scripted.event.PlayerEvent.BreakEvent(handler.getPlayer(), 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);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void invoke(ItemTossEvent event) {
|
||||
if(event.getPlayer().field_70170_p instanceof WorldServer) {
|
||||
PlayerDataScript handler = PlayerData.get(event.getPlayer()).scriptData;
|
||||
event.setCanceled(EventHooks.onPlayerToss(handler, event.getEntityItem()));
|
||||
public void invoke(PlayerUseItemEvent.Start event) {
|
||||
if(event.entityPlayer.worldObj instanceof WorldServer) {
|
||||
PlayerDataScript handler = PlayerData.get(event.entityPlayer).scriptData;
|
||||
event.setCanceled(EventHooks.onStartUsingItem(handler, event.duration, event.item));
|
||||
}
|
||||
}
|
||||
@SubscribeEvent
|
||||
public void invoke(PlayerUseItemEvent.Tick event) {
|
||||
if(event.entityPlayer.worldObj instanceof WorldServer) {
|
||||
PlayerDataScript handler = PlayerData.get(event.entityPlayer).scriptData;
|
||||
event.setCanceled(EventHooks.onUsingItem(handler, event.duration, event.item));
|
||||
}
|
||||
}
|
||||
@SubscribeEvent
|
||||
public void invoke(PlayerUseItemEvent.Stop event) {
|
||||
if(event.entityPlayer.worldObj instanceof WorldServer) {
|
||||
PlayerDataScript handler = PlayerData.get(event.entityPlayer).scriptData;
|
||||
event.setCanceled(EventHooks.onStopUsingItem(handler, event.duration, event.item));
|
||||
}
|
||||
}
|
||||
@SubscribeEvent
|
||||
public void invoke(PlayerUseItemEvent.Finish event) {
|
||||
if(event.entityPlayer.worldObj instanceof WorldServer) {
|
||||
PlayerDataScript handler = PlayerData.get(event.entityPlayer).scriptData;
|
||||
EventHooks.onFinishUsingItem(handler, event.duration, event.item);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void invoke(EntityItemPickupEvent event) {
|
||||
if(event.entityPlayer.field_70170_p instanceof WorldServer) {
|
||||
public void invoke(PlayerDropsEvent event) {
|
||||
if(event.entityPlayer.worldObj instanceof WorldServer) {
|
||||
PlayerDataScript handler = PlayerData.get(event.entityPlayer).scriptData;
|
||||
event.setCanceled(EventHooks.onPlayerPickUp(handler, event.getItem()));
|
||||
event.setCanceled(EventHooks.onPlayerDropItems(handler, event.drops));
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void invoke(Open event) {
|
||||
if(event.entityPlayer.field_70170_p instanceof WorldServer) {
|
||||
public void invoke(PlayerPickupXpEvent event) {
|
||||
if(event.entityPlayer.worldObj instanceof WorldServer) {
|
||||
PlayerDataScript handler = PlayerData.get(event.entityPlayer).scriptData;
|
||||
EventHooks.onPlayerContainerOpen(handler, event.getContainer());
|
||||
EventHooks.onPlayerPickupXP(handler, event.orb);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void invoke(Close event) {
|
||||
if(event.entityPlayer.field_70170_p instanceof WorldServer) {
|
||||
public void invoke(PlayerEvent.ItemPickupEvent event) {
|
||||
if(event.player.worldObj instanceof WorldServer) {
|
||||
PlayerDataScript handler = PlayerData.get(event.player).scriptData;
|
||||
EventHooks.onPlayerPickUp(handler, event.pickedUp);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void invoke(PlayerOpenContainerEvent event) {
|
||||
if(event.entityPlayer.worldObj instanceof WorldServer) {
|
||||
PlayerDataScript handler = PlayerData.get(event.entityPlayer).scriptData;
|
||||
EventHooks.onPlayerContainerClose(handler, event.getContainer());
|
||||
EventHooks.onPlayerContainerOpen(handler, event.entityPlayer.openContainer);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void invoke(LivingFallEvent event) {
|
||||
if(event.entityLiving.worldObj instanceof WorldServer) {
|
||||
PlayerDataScript handler;
|
||||
if (event.entityLiving instanceof EntityPlayer) {
|
||||
handler = PlayerData.get((EntityPlayer)event.entityLiving).scriptData;
|
||||
EventHooks.onPlayerFall(handler, event.distance);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void invoke(LivingDeathEvent event) {
|
||||
if(event.getEntityLiving().field_70170_p instanceof WorldServer) {
|
||||
Entity source = NoppesUtilServer.GetDamageSourcee(event.getSource());
|
||||
if(event.entityLiving.worldObj instanceof WorldServer) {
|
||||
Entity source = NoppesUtilServer.GetDamageSourcee(event.source);
|
||||
PlayerDataScript handler;
|
||||
if(event.getEntityLiving() instanceof EntityPlayer) {
|
||||
handler = PlayerData.get((EntityPlayer)event.getEntityLiving()).scriptData;
|
||||
EventHooks.onPlayerDeath(handler, event.getSource(), source);
|
||||
if(event.entityLiving instanceof EntityPlayer) {
|
||||
handler = PlayerData.get((EntityPlayer)event.entityLiving).scriptData;
|
||||
EventHooks.onPlayerDeath(handler, event.source, source);
|
||||
}
|
||||
|
||||
if(source instanceof EntityPlayer) {
|
||||
handler = PlayerData.get((EntityPlayer)source).scriptData;
|
||||
EventHooks.onPlayerKills(handler, event.getEntityLiving());
|
||||
EventHooks.onPlayerKills(handler, event.entityLiving);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -214,70 +186,47 @@ public class ScriptPlayerEventHandler {
|
||||
|
||||
@SubscribeEvent
|
||||
public void invoke(LivingHurtEvent event) {
|
||||
if(event.getEntityLiving().field_70170_p instanceof WorldServer) {
|
||||
Entity source = NoppesUtilServer.GetDamageSourcee(event.getSource());
|
||||
if(event.entityLiving.worldObj instanceof WorldServer) {
|
||||
Entity source = NoppesUtilServer.GetDamageSourcee(event.source);
|
||||
PlayerDataScript handler;
|
||||
if(event.getEntityLiving() instanceof EntityPlayer) {
|
||||
handler = PlayerData.get((EntityPlayer)event.getEntityLiving()).scriptData;
|
||||
DamagedEvent pevent = new DamagedEvent(handler.getPlayer(), source, event.getAmount(), event.getSource());
|
||||
if(event.entityLiving instanceof EntityPlayer) {
|
||||
handler = PlayerData.get((EntityPlayer)event.entityLiving).scriptData;
|
||||
noppes.npcs.scripted.event.PlayerEvent.DamagedEvent pevent = new noppes.npcs.scripted.event.PlayerEvent.DamagedEvent(handler.getPlayer(), source, event.ammount, event.source);
|
||||
event.setCanceled(EventHooks.onPlayerDamaged(handler, pevent));
|
||||
event.setAmount(pevent.damage);
|
||||
event.ammount = pevent.damage;
|
||||
}
|
||||
|
||||
if(source instanceof EntityPlayer) {
|
||||
handler = PlayerData.get((EntityPlayer)source).scriptData;
|
||||
DamagedEntityEvent pevent1 = new DamagedEntityEvent(handler.getPlayer(), event.getEntityLiving(), event.getAmount(), event.getSource());
|
||||
noppes.npcs.scripted.event.PlayerEvent.DamagedEntityEvent pevent1 = new noppes.npcs.scripted.event.PlayerEvent.DamagedEntityEvent(handler.getPlayer(), event.entityLiving, event.ammount, event.source);
|
||||
event.setCanceled(EventHooks.onPlayerDamagedEntity(handler, pevent1));
|
||||
event.setAmount(pevent1.damage);
|
||||
event.ammount = pevent1.damage;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void invoke(LivingAttackEvent event) {
|
||||
if(event.getEntityLiving().field_70170_p instanceof WorldServer) {
|
||||
Entity source = NoppesUtilServer.GetDamageSourcee(event.getSource());
|
||||
if(source instanceof EntityPlayer) {
|
||||
PlayerDataScript handler = PlayerData.get((EntityPlayer)source).scriptData;
|
||||
ItemStack item = ((EntityPlayer)source).func_184614_ca();
|
||||
IEntity target = NpcAPI.Instance().getIEntity(event.getEntityLiving());
|
||||
AttackEvent ev = new AttackEvent(handler.getPlayer(), 1, target);
|
||||
event.setCanceled(EventHooks.onPlayerAttack(handler, ev));
|
||||
if(item.func_77973_b() == CustomItems.scripted_item && !event.isCanceled()) {
|
||||
ItemScriptedWrapper isw = ItemScripted.GetWrapper(item);
|
||||
noppes.npcs.api.event.ItemEvent.AttackEvent eve = new noppes.npcs.api.event.ItemEvent.AttackEvent(isw, handler.getPlayer(), 1, target);
|
||||
eve.setCanceled(event.isCanceled());
|
||||
event.setCanceled(EventHooks.onScriptItemAttack(isw, eve));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void invoke(PlayerLoggedInEvent event) {
|
||||
if(event.player.field_70170_p instanceof WorldServer) {
|
||||
public void invoke(PlayerEvent.PlayerLoggedInEvent event) {
|
||||
if(event.player.worldObj instanceof WorldServer) {
|
||||
PlayerDataScript handler = PlayerData.get(event.player).scriptData;
|
||||
EventHooks.onPlayerLogin(handler);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void invoke(PlayerLoggedOutEvent event) {
|
||||
if(event.player.field_70170_p instanceof WorldServer) {
|
||||
public void invoke(PlayerEvent.PlayerLoggedOutEvent event) {
|
||||
if(event.player.worldObj instanceof WorldServer) {
|
||||
PlayerDataScript handler = PlayerData.get(event.player).scriptData;
|
||||
EventHooks.onPlayerLogout(handler);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
@SubscribeEvent(
|
||||
priority = EventPriority.HIGHEST
|
||||
)
|
||||
public void invoke(ServerChatEvent event) {
|
||||
if(event.player.getEntityWorld() instanceof WorldServer && event.player != EntityNPCInterface.chateventPlayer) {
|
||||
public void invoke(net.minecraftforge.event.ServerChatEvent event) {
|
||||
if(event.player.worldObj instanceof WorldServer && !event.player.equals(EntityNPCInterface.chateventPlayer)) {
|
||||
PlayerDataScript handler = PlayerData.get(event.player).scriptData;
|
||||
String message = event.message;
|
||||
noppes.npcs.scripted.event.PlayerEvent.ChatEvent ev = new noppes.npcs.scripted.event.PlayerEvent.ChatEvent(handler.getPlayer(), event.message);
|
||||
@@ -290,7 +239,6 @@ public class ScriptPlayerEventHandler {
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
public ScriptPlayerEventHandler registerForgeEvents() {
|
||||
ScriptPlayerEventHandler.ForgeEventHandler handler = new ScriptPlayerEventHandler.ForgeEventHandler();
|
||||
@@ -299,8 +247,9 @@ public class ScriptPlayerEventHandler {
|
||||
Method e = handler.getClass().getMethod("forgeEntity", new Class[]{Event.class});
|
||||
Method register = MinecraftForge.EVENT_BUS.getClass().getDeclaredMethod("register", new Class[]{Class.class, Object.class, Method.class, ModContainer.class});
|
||||
register.setAccessible(true);
|
||||
ArrayList list = new ArrayList(ClassPath.from(this.getClass().getClassLoader()).getTopLevelClassesRecursive("net.minecraftforge.event"));
|
||||
list.addAll(ClassPath.from(this.getClass().getClassLoader()).getTopLevelClassesRecursive("net.minecraftforge.fml.common"));
|
||||
ArrayList list = new ArrayList();
|
||||
list.addAll(ClassPath.from(this.getClass().getClassLoader()).getTopLevelClassesRecursive("cpw.mods.fml.common"));
|
||||
list.addAll(ClassPath.from(this.getClass().getClassLoader()).getTopLevelClassesRecursive("net.minecraftforge.event"));
|
||||
Iterator e1 = list.iterator();
|
||||
|
||||
while(true) {
|
||||
@@ -333,6 +282,10 @@ public class ScriptPlayerEventHandler {
|
||||
classes = classLoader.getName();
|
||||
} while(classes.startsWith("net.minecraftforge.event.terraingen"));
|
||||
|
||||
if(classes.startsWith("cpw.mods.fml.common.gameevent")){
|
||||
;
|
||||
}
|
||||
|
||||
Class infoClass = classLoader.load();
|
||||
ArrayList c = new ArrayList(Arrays.asList(infoClass.getDeclaredClasses()));
|
||||
if(c.isEmpty()) {
|
||||
|
||||
@@ -15,6 +15,7 @@ import cpw.mods.fml.common.gameevent.InputEvent;
|
||||
import cpw.mods.fml.common.gameevent.TickEvent;
|
||||
import cpw.mods.fml.common.gameevent.TickEvent.Phase;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.input.Mouse;
|
||||
|
||||
public class ClientTickHandler{
|
||||
private World prevWorld;
|
||||
@@ -44,6 +45,15 @@ public class ClientTickHandler{
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onMouse(InputEvent.MouseInputEvent event){
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
if(mc.currentScreen != null || (Mouse.getEventButton() == -1 && Mouse.getDWheel() == 0))
|
||||
return;
|
||||
|
||||
NoppesUtilPlayer.sendData(EnumPlayerPacket.MouseClicked, new Object[]{Mouse.getEventButton(),Mouse.getEventDWheel()});
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onKey(InputEvent.KeyInputEvent event){
|
||||
if(ClientProxy.QuestLog.isPressed()){
|
||||
|
||||
@@ -75,22 +75,26 @@ public class GuiScriptInterface extends GuiNPCInterface implements GuiYesNoCallb
|
||||
list.add("playerscript.interact");
|
||||
list.add("playerscript.damaged");
|
||||
list.add("playerscript.killed");
|
||||
list.add("playerscript.attack");
|
||||
list.add("playerscript.kills");
|
||||
list.add("playerscript.chat");
|
||||
list.add("playerscript.toss");
|
||||
list.add("playerscript.containeropen");
|
||||
list.add("playerscript.containerclosed");
|
||||
list.add("playerscript.drop");
|
||||
list.add("playerscript.containerOpen");
|
||||
list.add("playerscript.login");
|
||||
list.add("playerscript.logout");
|
||||
list.add("playerscript.chat");
|
||||
list.add("playerscript.damagedentity");
|
||||
list.add("playerscript.factionupdate");
|
||||
list.add("playerscript.keyPressed");
|
||||
list.add("playerscript.levelup");
|
||||
list.add("playerscript.pickup");
|
||||
list.add("playerscript.rangedlaunched");
|
||||
//list.add("playerscript.break");
|
||||
list.add("playerscript.mouseClicked");
|
||||
list.add("playerscript.pickUp");
|
||||
list.add("playerscript.rangedLaunched");
|
||||
list.add("playerscript.pickupXP");
|
||||
list.add("playerscript.timer");
|
||||
list.add("playerscript.startItem");
|
||||
list.add("playerscript.usingItem");
|
||||
list.add("playerscript.stopItem");
|
||||
list.add("playerscript.finishItem");
|
||||
list.add("playerscript.fall");
|
||||
list.add("playerscript.break");
|
||||
|
||||
top.active = true;
|
||||
if(this.activeTab > 0) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
package noppes.npcs.constants;
|
||||
|
||||
public enum EnumPlayerPacket {
|
||||
FollowerHire,FollowerExtend,Trader, FollowerState, Transport, BankUnlock, BankUpgrade, Dialog, QuestLog, QuestCompletion, CheckQuestCompletion, BankSlotOpen, FactionsGet, MailGet, MailDelete, MailSend, MailRead, MailboxOpenMail, SignSave, SaveBook, CompanionOpenInv, RoleGet, KeyPressed, CompanionTalentExp
|
||||
FollowerHire,FollowerExtend,Trader, FollowerState, Transport, BankUnlock, BankUpgrade, Dialog, QuestLog, QuestCompletion, CheckQuestCompletion, BankSlotOpen, FactionsGet, MailGet, MailDelete, MailSend, MailRead, MailboxOpenMail, SignSave, SaveBook, CompanionOpenInv, RoleGet, KeyPressed, MouseClicked, CompanionTalentExp
|
||||
}
|
||||
@@ -26,6 +26,7 @@ public enum EnumScriptType {
|
||||
DOOR_TOGGLE("doorToggle"),
|
||||
TIMER("timer"),
|
||||
TOSS("toss"),
|
||||
DROP("drop"),
|
||||
CONTAINER_OPEN("containerOpen"),
|
||||
CONTAINER_CLOSED("containerClosed"),
|
||||
LOGIN("login"),
|
||||
@@ -40,7 +41,6 @@ public enum EnumScriptType {
|
||||
ATTACK("attack"),
|
||||
PROJECTILE_TICK("projectileTick"),
|
||||
PROJECTILE_IMPACT("projectileImpact"),
|
||||
FACTION_UPDATE("factionUpdate"),
|
||||
LEVEL_UP("levelUp"),
|
||||
QUEST_START("questStart"),
|
||||
QUEST_COMPLETED("questCompleted"),
|
||||
@@ -52,7 +52,15 @@ public enum EnumScriptType {
|
||||
CUSTOM_GUI_CLOSED("customGuiClosed"),
|
||||
CUSTOM_GUI_BUTTON("customGuiButton"),
|
||||
CUSTOM_GUI_SLOT("customGuiSlot"),
|
||||
CUSTOM_GUI_SCROLL("customGuiScroll");
|
||||
CUSTOM_GUI_SCROLL("customGuiScroll"),
|
||||
PICKUP_XP("pickupXP"),
|
||||
MOUSE_CLICKED("mouseClicked"),
|
||||
START_USING_ITEM("startItem"),
|
||||
USING_ITEM("usingItem"),
|
||||
STOP_USING_ITEM("stopItem"),
|
||||
FINISH_USING_ITEM("finishItem"),
|
||||
FALL("fall"),
|
||||
BREAK("break");
|
||||
|
||||
public String function;
|
||||
|
||||
|
||||
@@ -152,6 +152,7 @@ public class PlayerData implements IExtendedEntityProperties{
|
||||
PlayerData data = new PlayerData();
|
||||
if(data.player == null) {
|
||||
data.player = player;
|
||||
data.playerLevel = player.experienceLevel;
|
||||
data.scriptData = new PlayerDataScript(player);
|
||||
NBTTagCompound compound = PlayerDataController.instance.loadPlayerDataOld(player.getCommandSenderName());
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ public class ForgeDataScript implements IScriptHandler {
|
||||
|
||||
public void callScript(String type, Event event) {
|
||||
if(this.isEnabled()) {
|
||||
// CustomNpcs.getServer().func_152344_a(() -> {
|
||||
//CustomNpcs.getServer().func_152344_a(() -> {
|
||||
Minecraft.getMinecraft().func_152344_a(() -> {
|
||||
if (ScriptController.Instance.lastLoaded > this.lastInited) {
|
||||
this.lastInited = ScriptController.Instance.lastLoaded;
|
||||
|
||||
@@ -3,7 +3,6 @@ package noppes.npcs.entity;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
@@ -28,7 +27,6 @@ import net.minecraft.init.Items;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.pathfinding.PathNavigate;
|
||||
import net.minecraft.potion.Potion;
|
||||
import net.minecraft.potion.PotionEffect;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
@@ -63,9 +61,6 @@ import noppes.npcs.ai.EntityAIMoveIndoors;
|
||||
import noppes.npcs.ai.EntityAIPanic;
|
||||
import noppes.npcs.ai.EntityAIWander;
|
||||
import noppes.npcs.ai.EntityAIWatchClosest;
|
||||
import noppes.npcs.ai.pathfinder.FlyingMoveHelper;
|
||||
import noppes.npcs.ai.pathfinder.PathNavigateFlying;
|
||||
import noppes.npcs.ai.pathfinder.PathNavigateGround;
|
||||
import noppes.npcs.ai.selector.NPCAttackSelector;
|
||||
import noppes.npcs.ai.target.EntityAIClearTarget;
|
||||
import noppes.npcs.ai.target.EntityAIClosestTarget;
|
||||
@@ -525,7 +520,7 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti
|
||||
if(event.getTarget() == null)
|
||||
entity = null;
|
||||
else
|
||||
entity = event.getTarget().getMinecraftEntity();
|
||||
entity = event.getTarget().getMCEntity();
|
||||
}
|
||||
if (entity != null && entity != this && ai.onAttack != 3 && !isAttacking() && !isRemote()){
|
||||
Line line = advanced.getAttackLine();
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by Fernflower decompiler)
|
||||
//
|
||||
|
||||
package noppes.npcs.scripted;
|
||||
|
||||
import net.minecraft.entity.passive.EntityAnimal;
|
||||
|
||||
public interface IAnimal<T extends EntityAnimal> extends IEntityLiving<T> {
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by Fernflower decompiler)
|
||||
//
|
||||
|
||||
package noppes.npcs.scripted;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
public interface IBlock {
|
||||
int getX();
|
||||
|
||||
int getY();
|
||||
|
||||
int getZ();
|
||||
|
||||
IPos getPos();
|
||||
|
||||
String getName();
|
||||
|
||||
void remove();
|
||||
|
||||
boolean isAir();
|
||||
|
||||
IBlock setBlock(String var1);
|
||||
|
||||
IBlock setBlock(IBlock var1);
|
||||
|
||||
boolean isContainer();
|
||||
|
||||
IContainer getContainer();
|
||||
|
||||
IWorld getWorld();
|
||||
|
||||
TileEntity getMCTileEntity();
|
||||
|
||||
Block getMCBlock();
|
||||
|
||||
String getDisplayName();
|
||||
}
|
||||
@@ -18,7 +18,7 @@ import noppes.npcs.scripted.constants.EntityType;
|
||||
import noppes.npcs.scripted.roles.*;
|
||||
import noppes.npcs.util.ValueUtil;
|
||||
|
||||
public interface ICustomNpc<T extends EntityCreature> {
|
||||
public interface ICustomNpc<T extends EntityCreature> extends IEntityLiving<T> {
|
||||
/**
|
||||
* @return Returns the current npcs size 1-30
|
||||
*/
|
||||
|
||||
@@ -322,5 +322,5 @@ public interface IEntity<T extends Entity> {
|
||||
* Expert users only
|
||||
* @return Returns minecrafts entity
|
||||
*/
|
||||
public Entity getMCEntity();
|
||||
public T getMCEntity();
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by Fernflower decompiler)
|
||||
//
|
||||
|
||||
package noppes.npcs.scripted;
|
||||
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
|
||||
public interface IEntityLiving<T extends EntityLiving> extends IEntityLivingBase<T> {
|
||||
boolean isNavigating();
|
||||
|
||||
void clearNavigation();
|
||||
|
||||
void navigateTo(double var1, double var3, double var5, double var7);
|
||||
|
||||
T getMCEntity();
|
||||
}
|
||||
@@ -7,7 +7,7 @@ import net.minecraft.potion.PotionEffect;
|
||||
import noppes.npcs.controllers.ScriptController;
|
||||
import noppes.npcs.scripted.constants.EntityType;
|
||||
|
||||
public interface IEntityLivingBase {
|
||||
public interface IEntityLivingBase<T extends EntityLivingBase> extends IEntity<T> {
|
||||
/**
|
||||
* @return The entity's current health
|
||||
*/
|
||||
@@ -51,7 +51,7 @@ public interface IEntityLivingBase {
|
||||
* Expert use only
|
||||
* @return Returns the minecraft entity object
|
||||
*/
|
||||
public EntityLivingBase getMinecraftEntity();
|
||||
public T getMCEntity();
|
||||
|
||||
/**
|
||||
* Makes the entity swing its hand
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by Fernflower decompiler)
|
||||
//
|
||||
|
||||
package noppes.npcs.scripted;
|
||||
|
||||
import net.minecraft.entity.monster.EntityMob;
|
||||
|
||||
public interface IMonster<T extends EntityMob> extends IEntityLiving<T> {
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by Fernflower decompiler)
|
||||
//
|
||||
|
||||
package noppes.npcs.scripted;
|
||||
|
||||
import net.minecraft.entity.passive.EntityTameable;
|
||||
|
||||
public interface IPixelmon<T extends EntityTameable> extends IAnimal<T> {
|
||||
}
|
||||
@@ -18,7 +18,7 @@ import noppes.npcs.controllers.*;
|
||||
import noppes.npcs.scripted.constants.EntityType;
|
||||
import noppes.npcs.util.ValueUtil;
|
||||
|
||||
public interface IPlayer {
|
||||
public interface IPlayer<T extends EntityPlayerMP> extends IEntityLivingBase<T> {
|
||||
/**
|
||||
* @return Returns the displayed name of the player
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by Fernflower decompiler)
|
||||
//
|
||||
|
||||
package noppes.npcs.scripted;
|
||||
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
|
||||
public interface IPos {
|
||||
int getX();
|
||||
|
||||
int getY();
|
||||
|
||||
int getZ();
|
||||
|
||||
IPos up();
|
||||
|
||||
IPos up(int var1);
|
||||
|
||||
IPos down();
|
||||
|
||||
IPos down(int var1);
|
||||
|
||||
IPos north();
|
||||
|
||||
IPos north(int var1);
|
||||
|
||||
IPos east();
|
||||
|
||||
IPos east(int var1);
|
||||
|
||||
IPos south();
|
||||
|
||||
IPos south(int var1);
|
||||
|
||||
IPos west();
|
||||
|
||||
IPos west(int var1);
|
||||
|
||||
IPos add(int var1, int var2, int var3);
|
||||
|
||||
IPos add(IPos var1);
|
||||
|
||||
IPos subtract(int var1, int var2, int var3);
|
||||
|
||||
IPos subtract(IPos var1);
|
||||
|
||||
double[] normalize();
|
||||
|
||||
BlockPos getMCBlockPos();
|
||||
|
||||
IPos offset(int var1);
|
||||
|
||||
IPos offset(int var1, int var2);
|
||||
|
||||
double distanceTo(IPos var1);
|
||||
}
|
||||
@@ -31,6 +31,8 @@ public abstract class NpcAPI {
|
||||
|
||||
public abstract IEntity getIEntity(Entity var1);
|
||||
|
||||
public abstract IBlock getIBlock(World var1, BlockPos var2);
|
||||
|
||||
public abstract IContainer getIContainer(IInventory var1);
|
||||
|
||||
public abstract IContainer getIContainer(Container var1);
|
||||
|
||||
@@ -3,9 +3,9 @@ package noppes.npcs.scripted;
|
||||
import net.minecraft.entity.passive.EntityAnimal;
|
||||
import noppes.npcs.scripted.constants.EntityType;
|
||||
|
||||
public class ScriptAnimal extends ScriptLiving{
|
||||
public class ScriptAnimal<T extends EntityAnimal> extends ScriptLiving<T> implements IAnimal {
|
||||
|
||||
public ScriptAnimal(EntityAnimal entity) {
|
||||
public ScriptAnimal(T entity) {
|
||||
super(entity);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by Fernflower decompiler)
|
||||
//
|
||||
|
||||
package noppes.npcs.scripted;
|
||||
|
||||
import java.util.Map;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.WorldServer;
|
||||
import noppes.npcs.util.LRUHashMap;
|
||||
|
||||
public class ScriptBlock implements IBlock {
|
||||
private static final Map<String, ScriptBlock> blockCache = new LRUHashMap(400);
|
||||
protected final IWorld world;
|
||||
protected final Block block;
|
||||
protected final BlockPos pos;
|
||||
protected final ScriptBlockPos bPos;
|
||||
protected TileEntity tile;
|
||||
|
||||
public ScriptBlock(World world, Block block, BlockPos pos) {
|
||||
this.world = NpcAPI.Instance().getIWorld((WorldServer)world);
|
||||
this.block = block;
|
||||
this.pos = pos;
|
||||
this.bPos = new ScriptBlockPos(pos);
|
||||
}
|
||||
|
||||
public IPos getPos() {
|
||||
return this.bPos;
|
||||
}
|
||||
|
||||
public int getX() {
|
||||
return this.pos.getX();
|
||||
}
|
||||
|
||||
public int getY() {
|
||||
return this.pos.getY();
|
||||
}
|
||||
|
||||
public int getZ() {
|
||||
return this.pos.getZ();
|
||||
}
|
||||
|
||||
public void remove() {
|
||||
this.world.getMCWorld().setBlockToAir(getX(), getY(), getZ());
|
||||
}
|
||||
|
||||
public boolean isAir() {
|
||||
return this.block.isAir(this.world.getMCWorld(), getX(), getY(), getZ());
|
||||
}
|
||||
|
||||
public ScriptBlock setBlock(String name) {
|
||||
Block block = (Block)Block.blockRegistry.getObject(new ResourceLocation(name));
|
||||
if(block == null) {
|
||||
return this;
|
||||
} else {
|
||||
this.world.getMCWorld().setBlock(getX(),getY(),getZ(),block);
|
||||
return new ScriptBlock(this.world.getMCWorld(), block, this.pos);
|
||||
}
|
||||
}
|
||||
|
||||
public ScriptBlock setBlock(IBlock block) {
|
||||
this.world.getMCWorld().setBlock(getX(),getY(),getZ(),block.getMCBlock());
|
||||
return new ScriptBlock(this.world.getMCWorld(), block.getMCBlock(), this.pos);
|
||||
}
|
||||
|
||||
public boolean isContainer() {
|
||||
return this.tile != null && this.tile instanceof IInventory?((IInventory)this.tile).getSizeInventory() > 0:false;
|
||||
}
|
||||
|
||||
public IContainer getContainer() {
|
||||
if(!this.isContainer()) {
|
||||
throw new CustomNPCsException("This block is not a container", new Object[0]);
|
||||
} else {
|
||||
return NpcAPI.Instance().getIContainer((IInventory)this.tile);
|
||||
}
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return Block.blockRegistry.getNameForObject(this.block) + "";
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
return this.tile == null?this.getName():this.tile.blockType.getItemIconName();
|
||||
}
|
||||
|
||||
public IWorld getWorld() {
|
||||
return this.world;
|
||||
}
|
||||
|
||||
public Block getMCBlock() {
|
||||
return this.block;
|
||||
}
|
||||
|
||||
public static void clearCache() {
|
||||
blockCache.clear();
|
||||
}
|
||||
|
||||
public boolean hasTileEntity() {
|
||||
return this.tile != null;
|
||||
}
|
||||
|
||||
public TileEntity getMCTileEntity() {
|
||||
return this.tile;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by Fernflower decompiler)
|
||||
//
|
||||
|
||||
package noppes.npcs.scripted;
|
||||
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
|
||||
public class ScriptBlockPos implements IPos {
|
||||
private BlockPos blockPos;
|
||||
|
||||
public ScriptBlockPos(BlockPos pos) {
|
||||
this.blockPos = pos;
|
||||
}
|
||||
|
||||
public int getX() {
|
||||
return this.blockPos.getX();
|
||||
}
|
||||
|
||||
public int getY() {
|
||||
return this.blockPos.getY();
|
||||
}
|
||||
|
||||
public int getZ() {
|
||||
return this.blockPos.getZ();
|
||||
}
|
||||
|
||||
public IPos up() {
|
||||
return new ScriptBlockPos(this.blockPos.up());
|
||||
}
|
||||
|
||||
public IPos up(int n) {
|
||||
return new ScriptBlockPos(this.blockPos.up(n));
|
||||
}
|
||||
|
||||
public IPos down() {
|
||||
return new ScriptBlockPos(this.blockPos.down());
|
||||
}
|
||||
|
||||
public IPos down(int n) {
|
||||
return new ScriptBlockPos(this.blockPos.down(n));
|
||||
}
|
||||
|
||||
public IPos north() {
|
||||
return new ScriptBlockPos(this.blockPos.north());
|
||||
}
|
||||
|
||||
public IPos north(int n) {
|
||||
return new ScriptBlockPos(this.blockPos.north(n));
|
||||
}
|
||||
|
||||
public IPos east() {
|
||||
return new ScriptBlockPos(this.blockPos.east());
|
||||
}
|
||||
|
||||
public IPos east(int n) {
|
||||
return new ScriptBlockPos(this.blockPos.east(n));
|
||||
}
|
||||
|
||||
public IPos south() {
|
||||
return new ScriptBlockPos(this.blockPos.south());
|
||||
}
|
||||
|
||||
public IPos south(int n) {
|
||||
return new ScriptBlockPos(this.blockPos.south(n));
|
||||
}
|
||||
|
||||
public IPos west() {
|
||||
return new ScriptBlockPos(this.blockPos.west());
|
||||
}
|
||||
|
||||
public IPos west(int n) {
|
||||
return new ScriptBlockPos(this.blockPos.west(n));
|
||||
}
|
||||
|
||||
public IPos add(int x, int y, int z) {
|
||||
return new ScriptBlockPos(this.blockPos.add(x, y, z));
|
||||
}
|
||||
|
||||
public IPos add(IPos pos) {
|
||||
return new ScriptBlockPos(this.blockPos.add(pos.getMCBlockPos()));
|
||||
}
|
||||
|
||||
public IPos subtract(int x, int y, int z) {
|
||||
return new ScriptBlockPos(this.blockPos.add(-x, -y, -z));
|
||||
}
|
||||
|
||||
public IPos subtract(IPos pos) {
|
||||
return new ScriptBlockPos(this.blockPos.add(-pos.getX(), -pos.getY(), -pos.getZ()));
|
||||
}
|
||||
|
||||
public IPos offset(int direction) {
|
||||
return new ScriptBlockPos(this.blockPos.offset(EnumFacing.values()[direction]));
|
||||
}
|
||||
|
||||
public IPos offset(int direction, int n) {
|
||||
return new ScriptBlockPos(this.blockPos.offset(EnumFacing.values()[direction], n));
|
||||
}
|
||||
|
||||
public BlockPos getMCBlockPos() {
|
||||
return this.blockPos;
|
||||
}
|
||||
|
||||
public double[] normalize() {
|
||||
double d = Math.sqrt((double)(this.blockPos.getX() * this.blockPos.getX() + this.blockPos.getY() * this.blockPos.getY() + this.blockPos.getZ() * this.blockPos.getZ()));
|
||||
return new double[]{(double)this.getX() / d, (double)this.getY() / d, (double)this.getZ() / d};
|
||||
}
|
||||
|
||||
public double distanceTo(IPos pos) {
|
||||
double d0 = (double)(this.getX() - pos.getX());
|
||||
double d1 = (double)(this.getY() - pos.getY());
|
||||
double d2 = (double)(this.getZ() - pos.getZ());
|
||||
return Math.sqrt(d0 * d0 + d1 * d1 + d2 * d2);
|
||||
}
|
||||
}
|
||||
@@ -27,11 +27,11 @@ import noppes.npcs.controllers.ScriptController;
|
||||
import noppes.npcs.entity.EntityNPCInterface;
|
||||
import noppes.npcs.scripted.constants.EntityType;
|
||||
|
||||
public class ScriptEntity implements IEntity{
|
||||
protected Entity entity;
|
||||
public class ScriptEntity<T extends Entity> implements IEntity{
|
||||
protected T entity;
|
||||
private Map<String,Object> tempData = new HashMap<String,Object>();
|
||||
|
||||
public ScriptEntity(Entity entity){
|
||||
public ScriptEntity(T entity){
|
||||
this.entity = entity;
|
||||
}
|
||||
|
||||
@@ -483,7 +483,7 @@ public class ScriptEntity implements IEntity{
|
||||
* Expert users only
|
||||
* @return Returns minecrafts entity
|
||||
*/
|
||||
public Entity getMCEntity(){
|
||||
public T getMCEntity(){
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
@@ -8,10 +8,10 @@ import net.minecraft.item.ItemStack;
|
||||
import noppes.npcs.controllers.ScriptController;
|
||||
import noppes.npcs.scripted.constants.EntityType;
|
||||
|
||||
public class ScriptLiving extends ScriptLivingBase{
|
||||
public class ScriptLiving<T extends EntityLiving> extends ScriptLivingBase<T> implements IEntityLiving {
|
||||
|
||||
private EntityLiving entity;
|
||||
public ScriptLiving(EntityLiving entity) {
|
||||
private T entity;
|
||||
public ScriptLiving(T entity) {
|
||||
super(entity);
|
||||
this.entity = entity;
|
||||
}
|
||||
|
||||
@@ -21,10 +21,10 @@ import net.minecraft.util.MathHelper;
|
||||
import noppes.npcs.controllers.ScriptController;
|
||||
import noppes.npcs.scripted.constants.EntityType;
|
||||
|
||||
public class ScriptLivingBase extends ScriptEntity implements IEntityLivingBase{
|
||||
protected EntityLivingBase entity;
|
||||
public class ScriptLivingBase<T extends EntityLivingBase> extends ScriptEntity<T> implements IEntityLivingBase{
|
||||
protected T entity;
|
||||
|
||||
public ScriptLivingBase(EntityLivingBase entity){
|
||||
public ScriptLivingBase(T entity){
|
||||
super(entity);
|
||||
this.entity = entity;
|
||||
}
|
||||
@@ -95,7 +95,7 @@ public class ScriptLivingBase extends ScriptEntity implements IEntityLivingBase{
|
||||
* Expert use only
|
||||
* @return Returns the minecraft entity object
|
||||
*/
|
||||
public EntityLivingBase getMinecraftEntity(){
|
||||
public T getMCEntity(){
|
||||
return entity;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,9 +4,9 @@ import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.monster.EntityMob;
|
||||
import noppes.npcs.scripted.constants.EntityType;
|
||||
|
||||
public class ScriptMonster extends ScriptLiving{
|
||||
public class ScriptMonster<T extends EntityMob> extends ScriptLiving<T> implements IMonster {
|
||||
|
||||
public ScriptMonster(EntityMob entity) {
|
||||
public ScriptMonster(T entity) {
|
||||
super(entity);
|
||||
}
|
||||
|
||||
|
||||
@@ -31,10 +31,10 @@ import noppes.npcs.scripted.roles.ScriptRoleTrader;
|
||||
import noppes.npcs.scripted.roles.ScriptRoleTransporter;
|
||||
import noppes.npcs.util.ValueUtil;
|
||||
|
||||
public class ScriptNpc extends ScriptLiving implements ICustomNpc{
|
||||
public class ScriptNpc<T extends EntityNPCInterface> extends ScriptLiving<T> implements ICustomNpc {
|
||||
protected EntityCustomNpc npc;
|
||||
|
||||
public ScriptNpc(EntityNPCInterface npc){
|
||||
|
||||
public ScriptNpc(T npc){
|
||||
super(npc);
|
||||
this.npc = (EntityCustomNpc)npc;
|
||||
}
|
||||
|
||||
@@ -6,16 +6,16 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||
import noppes.npcs.controllers.PixelmonHelper;
|
||||
import noppes.npcs.util.ValueUtil;
|
||||
|
||||
public class ScriptPixelmon extends ScriptAnimal{
|
||||
private EntityTameable pixelmon;
|
||||
public class ScriptPixelmon<T extends EntityTameable> extends ScriptAnimal<T> implements IPixelmon {
|
||||
private T pixelmon;
|
||||
private NBTTagCompound compound = null;
|
||||
public ScriptPixelmon(EntityTameable pixelmon){
|
||||
public ScriptPixelmon(T pixelmon){
|
||||
super(pixelmon);
|
||||
this.pixelmon = pixelmon;
|
||||
compound = new NBTTagCompound();
|
||||
pixelmon.writeEntityToNBT(compound);
|
||||
}
|
||||
public ScriptPixelmon(EntityTameable pixelmon, NBTTagCompound compound){
|
||||
public ScriptPixelmon(T pixelmon, NBTTagCompound compound){
|
||||
this(pixelmon);
|
||||
this.compound = compound;
|
||||
}
|
||||
|
||||
@@ -25,9 +25,9 @@ import noppes.npcs.controllers.QuestData;
|
||||
import noppes.npcs.scripted.constants.EntityType;
|
||||
import noppes.npcs.util.ValueUtil;
|
||||
|
||||
public class ScriptPlayer extends ScriptLivingBase implements IPlayer{
|
||||
protected EntityPlayerMP player;
|
||||
public ScriptPlayer(EntityPlayerMP player){
|
||||
public class ScriptPlayer<T extends EntityPlayerMP> extends ScriptLivingBase<T> implements IPlayer {
|
||||
protected T player;
|
||||
public ScriptPlayer(T player){
|
||||
super(player);
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
@@ -9,14 +9,10 @@ import cpw.mods.fml.common.eventhandler.Cancelable;
|
||||
import cpw.mods.fml.common.eventhandler.Event;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.item.EntityXPOrb;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import noppes.npcs.scripted.IContainer;
|
||||
import noppes.npcs.scripted.IDamageSource;
|
||||
import noppes.npcs.scripted.NpcAPI;
|
||||
import noppes.npcs.scripted.IEntity;
|
||||
import noppes.npcs.scripted.IEntityLivingBase;
|
||||
import noppes.npcs.scripted.IPlayer;
|
||||
import noppes.npcs.scripted.IItemStack;
|
||||
import noppes.npcs.scripted.*;
|
||||
|
||||
public class PlayerEvent extends CustomNPCsEvent {
|
||||
public final IPlayer player;
|
||||
@@ -52,6 +48,26 @@ public class PlayerEvent extends CustomNPCsEvent {
|
||||
}
|
||||
}
|
||||
|
||||
public static class MouseClickedEvent extends PlayerEvent {
|
||||
public final int button;
|
||||
public final int mouseWheel;
|
||||
|
||||
public MouseClickedEvent(IPlayer player, int button, int mouseWheel){
|
||||
super(player);
|
||||
this.button = button;
|
||||
this.mouseWheel = mouseWheel;
|
||||
}
|
||||
}
|
||||
|
||||
public static class PickupXPEvent extends PlayerEvent {
|
||||
public final int amount;
|
||||
|
||||
public PickupXPEvent(IPlayer player, EntityXPOrb orb) {
|
||||
super(player);
|
||||
this.amount = orb.xpValue;
|
||||
}
|
||||
}
|
||||
|
||||
public static class LevelUpEvent extends PlayerEvent {
|
||||
public final int change;
|
||||
|
||||
@@ -97,12 +113,21 @@ public class PlayerEvent extends CustomNPCsEvent {
|
||||
}
|
||||
}
|
||||
|
||||
public static class FallEvent extends PlayerEvent {
|
||||
public final float distance;
|
||||
|
||||
public FallEvent(IPlayer player, float distance){
|
||||
super(player);
|
||||
this.distance = distance;
|
||||
}
|
||||
}
|
||||
|
||||
public static class KilledEntityEvent extends PlayerEvent {
|
||||
public final IEntityLivingBase entity;
|
||||
|
||||
public KilledEntityEvent(IPlayer player, EntityLivingBase entity) {
|
||||
super(player);
|
||||
this.entity = (IEntityLivingBase)NpcAPI.Instance().getIEntity(entity);
|
||||
this.entity = new ScriptLivingBase<>(entity);//NpcAPI.Instance().getIEntity(entity);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,8 +147,13 @@ public class PlayerEvent extends CustomNPCsEvent {
|
||||
|
||||
@Cancelable
|
||||
public static class RangedLaunchedEvent extends PlayerEvent {
|
||||
public RangedLaunchedEvent(IPlayer player) {
|
||||
public final IItemStack bow;
|
||||
public int charge;
|
||||
|
||||
public RangedLaunchedEvent(IPlayer player, ItemStack bow, int charge) {
|
||||
super(player);
|
||||
this.bow = NpcAPI.Instance().getIItemStack(bow);
|
||||
this.charge = charge;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -171,11 +201,11 @@ public class PlayerEvent extends CustomNPCsEvent {
|
||||
|
||||
@Cancelable
|
||||
public static class TossEvent extends PlayerEvent {
|
||||
public final IItemStack item;
|
||||
public final IItemStack[] items;
|
||||
|
||||
public TossEvent(IPlayer player, IItemStack item) {
|
||||
public TossEvent(IPlayer player, IItemStack[] items) {
|
||||
super(player);
|
||||
this.item = item;
|
||||
this.items = items;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -214,4 +244,61 @@ public class PlayerEvent extends CustomNPCsEvent {
|
||||
super(player);
|
||||
}
|
||||
}
|
||||
|
||||
public static class StartUsingItem extends PlayerEvent {
|
||||
public final IItemStack item;
|
||||
public final int duration;
|
||||
|
||||
public StartUsingItem(IPlayer player, ItemStack item, int duration){
|
||||
super(player);
|
||||
|
||||
this.item = NpcAPI.Instance().getIItemStack(item);
|
||||
this.duration = duration;
|
||||
}
|
||||
}
|
||||
public static class UsingItem extends PlayerEvent {
|
||||
public final IItemStack item;
|
||||
public final int duration;
|
||||
|
||||
public UsingItem(IPlayer player, ItemStack item, int duration){
|
||||
super(player);
|
||||
|
||||
this.item = NpcAPI.Instance().getIItemStack(item);
|
||||
this.duration = duration;
|
||||
}
|
||||
}
|
||||
public static class StopUsingItem extends PlayerEvent {
|
||||
public final IItemStack item;
|
||||
public final int duration;
|
||||
|
||||
public StopUsingItem(IPlayer player, ItemStack item, int duration){
|
||||
super(player);
|
||||
|
||||
this.item = NpcAPI.Instance().getIItemStack(item);
|
||||
this.duration = duration;
|
||||
}
|
||||
}
|
||||
public static class FinishUsingItem extends PlayerEvent {
|
||||
public final IItemStack item;
|
||||
public final int duration;
|
||||
|
||||
public FinishUsingItem(IPlayer player, ItemStack item, int duration){
|
||||
super(player);
|
||||
|
||||
this.item = NpcAPI.Instance().getIItemStack(item);
|
||||
this.duration = duration;
|
||||
}
|
||||
}
|
||||
|
||||
@Cancelable
|
||||
public static class BreakEvent extends PlayerEvent {
|
||||
public final IBlock block;
|
||||
public int exp;
|
||||
|
||||
public BreakEvent(IPlayer player, IBlock block, int exp) {
|
||||
super(player);
|
||||
this.block = block;
|
||||
this.exp = exp;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
package noppes.npcs.scripted.roles;
|
||||
|
||||
import noppes.npcs.entity.EntityNPCInterface;
|
||||
import noppes.npcs.roles.JobGuard;
|
||||
import noppes.npcs.roles.JobHealer;
|
||||
import noppes.npcs.scripted.ScriptLivingBase;
|
||||
import noppes.npcs.scripted.constants.JobType;
|
||||
@@ -14,7 +13,7 @@ public class ScriptJobHealer extends ScriptJobInterface{
|
||||
}
|
||||
|
||||
public void heal(ScriptLivingBase entity, float amount){
|
||||
job.heal(entity.getMinecraftEntity(), amount);
|
||||
job.heal(entity.getMCEntity(), amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -19,11 +19,11 @@ public class ScriptRoleFollower extends ScriptRoleInterface{
|
||||
* @param player Player who is set as the owner. If null given everything resets
|
||||
*/
|
||||
public void setOwner(ScriptPlayer player){
|
||||
if(player == null || player.getMinecraftEntity() == null){
|
||||
if(player == null || player.getMCEntity() == null){
|
||||
role.setOwner(null);
|
||||
return;
|
||||
}
|
||||
EntityPlayer mcplayer = (EntityPlayer) player.getMinecraftEntity();
|
||||
EntityPlayer mcplayer = (EntityPlayer) player.getMCEntity();
|
||||
role.setOwner(mcplayer);
|
||||
}
|
||||
|
||||
|
||||
@@ -59,6 +59,10 @@ public class WrapperNpcAPI extends NpcAPI {
|
||||
}
|
||||
}
|
||||
|
||||
public IBlock getIBlock(World world, BlockPos pos) {
|
||||
return new ScriptBlock(world, world.getBlock(pos.getX(),pos.getY(),pos.getZ()), pos);
|
||||
}
|
||||
|
||||
public ICustomNpc createNPC(World world) {
|
||||
if (world.isRemote) {
|
||||
return null;
|
||||
|
||||
@@ -467,7 +467,7 @@ playerscript.attack=Attack
|
||||
playerscript.break=Break
|
||||
playerscript.chat=Chat
|
||||
playerscript.containerclosed=Closed Container
|
||||
playerscript.containeropen=Open Container
|
||||
playerscript.containerOpen=Open Container
|
||||
playerscript.damagedentity=Damaged Entity
|
||||
playerscript.damaged=Hurt
|
||||
playerscript.killed=Killed
|
||||
@@ -476,13 +476,21 @@ playerscript.init=Init
|
||||
playerscript.interact=Interact
|
||||
playerscript.keyPressed=Key Pressed
|
||||
playerscript.kills=Kills
|
||||
playerscript.levelup=Level Up
|
||||
playerscript.levelUp=Level Up
|
||||
playerscript.login=Login
|
||||
playerscript.logout=Logout
|
||||
playerscript.pickup=Pickup
|
||||
playerscript.rangedlaunched=Range Launched
|
||||
playerscript.toss=Toss
|
||||
playerscript.pickUp=Pickup
|
||||
playerscript.rangedLaunched=Range Launched
|
||||
playerscript.drop=Drop Items
|
||||
playerscript.tick=Update
|
||||
playerscript.pickupXP=Pickup XP
|
||||
playerscript.timer=Timer
|
||||
playerscript.mouseClicked=Mouse Click
|
||||
playerscript.startItem=Item Start
|
||||
playerscript.usingItem=Using Item
|
||||
playerscript.stopItem=Item Stop
|
||||
playerscript.finishItem=Item Finish
|
||||
playerscript.fall=Fall
|
||||
|
||||
item.npcWand.name=Npc Wand
|
||||
item.npcMobCloner.name=Mob Cloner
|
||||
|
||||
Reference in new issue
Block a user