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:
luisc committed 2021-10-12 02:57:32 -05:00
1 parent 6c8c7671b8
commit 6752f8baec
38 files changed
+763 -249

No files matched your search

+3 -2
View File
@@ -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");
+63 -26
View File
@@ -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