diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index 7b19fc433..5d27c249a 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -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"); diff --git a/src/main/java/noppes/npcs/EventHooks.java b/src/main/java/noppes/npcs/EventHooks.java index 7040a7403..47a1c7078 100644 --- a/src/main/java/noppes/npcs/EventHooks.java +++ b/src/main/java/noppes/npcs/EventHooks.java @@ -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 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); diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index 8cf1ec88e..4f46d54bb 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -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; + } } diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index c10242985..36709bdb6 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -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) diff --git a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java index 20b837e37..9f73fdaab 100644 --- a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java +++ b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java @@ -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()) { diff --git a/src/main/java/noppes/npcs/client/ClientTickHandler.java b/src/main/java/noppes/npcs/client/ClientTickHandler.java index cb965a6c3..f12b44967 100644 --- a/src/main/java/noppes/npcs/client/ClientTickHandler.java +++ b/src/main/java/noppes/npcs/client/ClientTickHandler.java @@ -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()){ diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java b/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java index a2678f8a6..d8ac18fad 100644 --- a/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java +++ b/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java @@ -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) { diff --git a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java index f8b59d746..e1a1b95e2 100644 --- a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java +++ b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java @@ -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 } diff --git a/src/main/java/noppes/npcs/constants/EnumScriptType.java b/src/main/java/noppes/npcs/constants/EnumScriptType.java index e66f9709b..6fb48d2bd 100644 --- a/src/main/java/noppes/npcs/constants/EnumScriptType.java +++ b/src/main/java/noppes/npcs/constants/EnumScriptType.java @@ -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; diff --git a/src/main/java/noppes/npcs/controllers/PlayerData.java b/src/main/java/noppes/npcs/controllers/PlayerData.java index 605a5723e..69634c971 100644 --- a/src/main/java/noppes/npcs/controllers/PlayerData.java +++ b/src/main/java/noppes/npcs/controllers/PlayerData.java @@ -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()); diff --git a/src/main/java/noppes/npcs/controllers/data/ForgeDataScript.java b/src/main/java/noppes/npcs/controllers/data/ForgeDataScript.java index d9bec4c3f..effccff93 100644 --- a/src/main/java/noppes/npcs/controllers/data/ForgeDataScript.java +++ b/src/main/java/noppes/npcs/controllers/data/ForgeDataScript.java @@ -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; diff --git a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java index 2eb18c6f5..7d69e39e5 100644 --- a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java +++ b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java @@ -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(); diff --git a/src/main/java/noppes/npcs/scripted/IAnimal.java b/src/main/java/noppes/npcs/scripted/IAnimal.java new file mode 100644 index 000000000..c5f8ade49 --- /dev/null +++ b/src/main/java/noppes/npcs/scripted/IAnimal.java @@ -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 extends IEntityLiving { +} diff --git a/src/main/java/noppes/npcs/scripted/IBlock.java b/src/main/java/noppes/npcs/scripted/IBlock.java new file mode 100644 index 000000000..9b1ce2f8a --- /dev/null +++ b/src/main/java/noppes/npcs/scripted/IBlock.java @@ -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(); +} diff --git a/src/main/java/noppes/npcs/scripted/ICustomNpc.java b/src/main/java/noppes/npcs/scripted/ICustomNpc.java index 814b3536b..43f3b15d4 100644 --- a/src/main/java/noppes/npcs/scripted/ICustomNpc.java +++ b/src/main/java/noppes/npcs/scripted/ICustomNpc.java @@ -18,7 +18,7 @@ import noppes.npcs.scripted.constants.EntityType; import noppes.npcs.scripted.roles.*; import noppes.npcs.util.ValueUtil; -public interface ICustomNpc { +public interface ICustomNpc extends IEntityLiving { /** * @return Returns the current npcs size 1-30 */ diff --git a/src/main/java/noppes/npcs/scripted/IEntity.java b/src/main/java/noppes/npcs/scripted/IEntity.java index 6a8d8f07f..39926aac2 100644 --- a/src/main/java/noppes/npcs/scripted/IEntity.java +++ b/src/main/java/noppes/npcs/scripted/IEntity.java @@ -322,5 +322,5 @@ public interface IEntity { * Expert users only * @return Returns minecrafts entity */ - public Entity getMCEntity(); + public T getMCEntity(); } diff --git a/src/main/java/noppes/npcs/scripted/IEntityLiving.java b/src/main/java/noppes/npcs/scripted/IEntityLiving.java new file mode 100644 index 000000000..cc321c196 --- /dev/null +++ b/src/main/java/noppes/npcs/scripted/IEntityLiving.java @@ -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 extends IEntityLivingBase { + boolean isNavigating(); + + void clearNavigation(); + + void navigateTo(double var1, double var3, double var5, double var7); + + T getMCEntity(); +} diff --git a/src/main/java/noppes/npcs/scripted/IEntityLivingBase.java b/src/main/java/noppes/npcs/scripted/IEntityLivingBase.java index 953c3dc2d..14a4dec97 100644 --- a/src/main/java/noppes/npcs/scripted/IEntityLivingBase.java +++ b/src/main/java/noppes/npcs/scripted/IEntityLivingBase.java @@ -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 extends IEntity { /** * @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 diff --git a/src/main/java/noppes/npcs/scripted/IMonster.java b/src/main/java/noppes/npcs/scripted/IMonster.java new file mode 100644 index 000000000..2da043c5c --- /dev/null +++ b/src/main/java/noppes/npcs/scripted/IMonster.java @@ -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 extends IEntityLiving { +} diff --git a/src/main/java/noppes/npcs/scripted/IPixelmon.java b/src/main/java/noppes/npcs/scripted/IPixelmon.java new file mode 100644 index 000000000..7458347b3 --- /dev/null +++ b/src/main/java/noppes/npcs/scripted/IPixelmon.java @@ -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 extends IAnimal { +} diff --git a/src/main/java/noppes/npcs/scripted/IPlayer.java b/src/main/java/noppes/npcs/scripted/IPlayer.java index 6e35dd1e8..60e454082 100644 --- a/src/main/java/noppes/npcs/scripted/IPlayer.java +++ b/src/main/java/noppes/npcs/scripted/IPlayer.java @@ -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 extends IEntityLivingBase { /** * @return Returns the displayed name of the player */ diff --git a/src/main/java/noppes/npcs/scripted/IPos.java b/src/main/java/noppes/npcs/scripted/IPos.java new file mode 100644 index 000000000..581a62d8d --- /dev/null +++ b/src/main/java/noppes/npcs/scripted/IPos.java @@ -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); +} diff --git a/src/main/java/noppes/npcs/scripted/NpcAPI.java b/src/main/java/noppes/npcs/scripted/NpcAPI.java index ef2eaf454..327e155ba 100644 --- a/src/main/java/noppes/npcs/scripted/NpcAPI.java +++ b/src/main/java/noppes/npcs/scripted/NpcAPI.java @@ -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); diff --git a/src/main/java/noppes/npcs/scripted/ScriptAnimal.java b/src/main/java/noppes/npcs/scripted/ScriptAnimal.java index 232d230bd..585fd777a 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptAnimal.java +++ b/src/main/java/noppes/npcs/scripted/ScriptAnimal.java @@ -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 extends ScriptLiving implements IAnimal { - public ScriptAnimal(EntityAnimal entity) { + public ScriptAnimal(T entity) { super(entity); } diff --git a/src/main/java/noppes/npcs/scripted/ScriptBlock.java b/src/main/java/noppes/npcs/scripted/ScriptBlock.java new file mode 100644 index 000000000..e74850582 --- /dev/null +++ b/src/main/java/noppes/npcs/scripted/ScriptBlock.java @@ -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 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; + } +} diff --git a/src/main/java/noppes/npcs/scripted/ScriptBlockPos.java b/src/main/java/noppes/npcs/scripted/ScriptBlockPos.java new file mode 100644 index 000000000..3dcb87c1a --- /dev/null +++ b/src/main/java/noppes/npcs/scripted/ScriptBlockPos.java @@ -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); + } +} diff --git a/src/main/java/noppes/npcs/scripted/ScriptEntity.java b/src/main/java/noppes/npcs/scripted/ScriptEntity.java index 1b2d70959..c95abd0e8 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptEntity.java +++ b/src/main/java/noppes/npcs/scripted/ScriptEntity.java @@ -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 implements IEntity{ + protected T entity; private Map tempData = new HashMap(); - 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; } } diff --git a/src/main/java/noppes/npcs/scripted/ScriptLiving.java b/src/main/java/noppes/npcs/scripted/ScriptLiving.java index 2809ebc24..8abbfd8ee 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptLiving.java +++ b/src/main/java/noppes/npcs/scripted/ScriptLiving.java @@ -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 extends ScriptLivingBase implements IEntityLiving { - private EntityLiving entity; - public ScriptLiving(EntityLiving entity) { + private T entity; + public ScriptLiving(T entity) { super(entity); this.entity = entity; } diff --git a/src/main/java/noppes/npcs/scripted/ScriptLivingBase.java b/src/main/java/noppes/npcs/scripted/ScriptLivingBase.java index 776c3f0f1..ace51679e 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptLivingBase.java +++ b/src/main/java/noppes/npcs/scripted/ScriptLivingBase.java @@ -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 extends ScriptEntity 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; } diff --git a/src/main/java/noppes/npcs/scripted/ScriptMonster.java b/src/main/java/noppes/npcs/scripted/ScriptMonster.java index 12f504a66..60cccd200 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptMonster.java +++ b/src/main/java/noppes/npcs/scripted/ScriptMonster.java @@ -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 extends ScriptLiving implements IMonster { - public ScriptMonster(EntityMob entity) { + public ScriptMonster(T entity) { super(entity); } diff --git a/src/main/java/noppes/npcs/scripted/ScriptNpc.java b/src/main/java/noppes/npcs/scripted/ScriptNpc.java index 5e5582db4..073c1af98 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptNpc.java +++ b/src/main/java/noppes/npcs/scripted/ScriptNpc.java @@ -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 extends ScriptLiving implements ICustomNpc { protected EntityCustomNpc npc; - - public ScriptNpc(EntityNPCInterface npc){ + + public ScriptNpc(T npc){ super(npc); this.npc = (EntityCustomNpc)npc; } diff --git a/src/main/java/noppes/npcs/scripted/ScriptPixelmon.java b/src/main/java/noppes/npcs/scripted/ScriptPixelmon.java index f3d1ef628..57400dfcb 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptPixelmon.java +++ b/src/main/java/noppes/npcs/scripted/ScriptPixelmon.java @@ -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 extends ScriptAnimal 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; } diff --git a/src/main/java/noppes/npcs/scripted/ScriptPlayer.java b/src/main/java/noppes/npcs/scripted/ScriptPlayer.java index c9a4c6995..b34f0b1cc 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptPlayer.java +++ b/src/main/java/noppes/npcs/scripted/ScriptPlayer.java @@ -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 extends ScriptLivingBase implements IPlayer { + protected T player; + public ScriptPlayer(T player){ super(player); this.player = player; } diff --git a/src/main/java/noppes/npcs/scripted/event/PlayerEvent.java b/src/main/java/noppes/npcs/scripted/event/PlayerEvent.java index a4f2f9b9f..cb0247ac9 100644 --- a/src/main/java/noppes/npcs/scripted/event/PlayerEvent.java +++ b/src/main/java/noppes/npcs/scripted/event/PlayerEvent.java @@ -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; + } + } } diff --git a/src/main/java/noppes/npcs/scripted/roles/ScriptJobHealer.java b/src/main/java/noppes/npcs/scripted/roles/ScriptJobHealer.java index 8c6c934ce..13bceb0f5 100644 --- a/src/main/java/noppes/npcs/scripted/roles/ScriptJobHealer.java +++ b/src/main/java/noppes/npcs/scripted/roles/ScriptJobHealer.java @@ -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 diff --git a/src/main/java/noppes/npcs/scripted/roles/ScriptRoleFollower.java b/src/main/java/noppes/npcs/scripted/roles/ScriptRoleFollower.java index 3b65007c6..fa105d022 100644 --- a/src/main/java/noppes/npcs/scripted/roles/ScriptRoleFollower.java +++ b/src/main/java/noppes/npcs/scripted/roles/ScriptRoleFollower.java @@ -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); } diff --git a/src/main/java/noppes/npcs/scripted/wrapper/WrapperNpcAPI.java b/src/main/java/noppes/npcs/scripted/wrapper/WrapperNpcAPI.java index ad2243075..455e53a87 100644 --- a/src/main/java/noppes/npcs/scripted/wrapper/WrapperNpcAPI.java +++ b/src/main/java/noppes/npcs/scripted/wrapper/WrapperNpcAPI.java @@ -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; diff --git a/src/main/resources/assets/customnpcs/lang/en_US.lang b/src/main/resources/assets/customnpcs/lang/en_US.lang index 88d48c094..bb3254e55 100644 --- a/src/main/resources/assets/customnpcs/lang/en_US.lang +++ b/src/main/resources/assets/customnpcs/lang/en_US.lang @@ -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