From 7e22d8beea7cafb961b3a3e6a190dcaf0352d9d8 Mon Sep 17 00:00:00 2001 From: Timo Ley Date: Thu, 30 Apr 2020 13:18:06 +0200 Subject: [PATCH] Added Locate abilities --- .../infinity/abilities/AbilityLocate.java | 16 ++++++++ .../infinity/command/GeneratedCommand.java | 26 ++++++++++++ .../anvil/infinity/items/ItemSpaceStone.java | 2 + .../anvil/infinity/registry/Abilities.java | 1 + .../infinity/worldgen/StoneTempleGen.java | 13 +++++- .../anvil/infinity/worldgen/WorldData.java | 41 +++++++++++++++++++ 6 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 src/main/java/anvil/infinity/abilities/AbilityLocate.java diff --git a/src/main/java/anvil/infinity/abilities/AbilityLocate.java b/src/main/java/anvil/infinity/abilities/AbilityLocate.java new file mode 100644 index 0000000..ae624e2 --- /dev/null +++ b/src/main/java/anvil/infinity/abilities/AbilityLocate.java @@ -0,0 +1,16 @@ +package anvil.infinity.abilities; + +import lucraft.mods.lucraftcore.superpowers.abilities.AbilityConstant; +import net.minecraft.entity.EntityLivingBase; + +public class AbilityLocate extends AbilityConstant { + + public AbilityLocate(EntityLivingBase entity) { + super(entity); + } + + @Override + public void updateTick() { + + } +} diff --git a/src/main/java/anvil/infinity/command/GeneratedCommand.java b/src/main/java/anvil/infinity/command/GeneratedCommand.java index 6b1d427..4a205d3 100644 --- a/src/main/java/anvil/infinity/command/GeneratedCommand.java +++ b/src/main/java/anvil/infinity/command/GeneratedCommand.java @@ -1,9 +1,16 @@ package anvil.infinity.command; +import anvil.infinity.abilities.AbilityLocate; +import anvil.infinity.compat.CompatHandler; +import anvil.infinity.config.ModConfig; import anvil.infinity.worldgen.WorldData; +import lucraft.mods.heroesexpansion.superpowers.HESuperpowers; +import lucraft.mods.lucraftcore.superpowers.SuperpowerHandler; +import lucraft.mods.lucraftcore.superpowers.abilities.Ability; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.server.MinecraftServer; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentString; @@ -21,14 +28,33 @@ public class GeneratedCommand extends CommandBase { @Override public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException { + boolean locate = false; + if (sender instanceof EntityLivingBase) { + locate = Ability.hasAbility((EntityLivingBase) sender, AbilityLocate.class); + if (CompatHandler.isHeroesExpansion) { + locate = locate || SuperpowerHandler.hasSuperpower((EntityLivingBase) sender, HESuperpowers.GOD_OF_THUNDER); + } + } WorldData data = WorldData.get(server.getWorld(0)); ITextComponent msg = new TextComponentString("Generated: "); msg.appendText("\n Space Stone: " + data.space); + if (locate) + msg.appendText("\n X: " + data.spacex + "\n Z: " + data.spacez + "\n Dim: " + ModConfig.Worldgen.spaceDim); msg.appendText("\n Power Stone: " + data.power); + if (locate) + msg.appendText("\n X: " + data.powerx + "\n Z: " + data.powerz + "\n Dim: " + ModConfig.Worldgen.powerDim); msg.appendText("\n Mind Stone: " + data.mind); + if (locate) + msg.appendText("\n X: " + data.mindx + "\n Z: " + data.mindz + "\n Dim: " + ModConfig.Worldgen.mindDim); msg.appendText("\n Soul Stone: " + data.soul); + if (locate) + msg.appendText("\n X: " + data.soulx + "\n Z: " + data.soulz + "\n Dim: " + ModConfig.Worldgen.soulDim); msg.appendText("\n Time Stone: " + data.time); + if (locate) + msg.appendText("\n X: " + data.timex + "\n Z: " + data.timez + "\n Dim: " + ModConfig.Worldgen.timeDim); msg.appendText("\n Reality Stone: " + data.reality); + if (locate) + msg.appendText("\n X: " + data.realityx + "\n Z: " + data.realityz + "\n Dim: " + ModConfig.Worldgen.realityDim); sender.sendMessage(msg); } } diff --git a/src/main/java/anvil/infinity/items/ItemSpaceStone.java b/src/main/java/anvil/infinity/items/ItemSpaceStone.java index 9ab0da7..c3b33d0 100644 --- a/src/main/java/anvil/infinity/items/ItemSpaceStone.java +++ b/src/main/java/anvil/infinity/items/ItemSpaceStone.java @@ -1,5 +1,6 @@ package anvil.infinity.items; +import anvil.infinity.abilities.AbilityLocate; import anvil.infinity.api.AbilityAdderHandler; import anvil.infinity.compat.CompatHandler; import anvil.infinity.helpers.GauntelHelper; @@ -36,6 +37,7 @@ public class ItemSpaceStone extends ItemInfinityStone { abilities.put("portal", CompatHandler.HeroesExpension.getAbilityPortal(entity).setDataValue(Ability.BAR_COLOR, EnumAbilityBarColor.LIGHT_BLUE)); abilities.put("grab_entity", CompatHandler.HeroesExpension.getAbilityGrabEntity(entity).setDataValue(Ability.BAR_COLOR, EnumAbilityBarColor.LIGHT_BLUE)); abilities.put("forcefield", CompatHandler.HeroesExpension.getAbilityForcefield(entity).setMaxCooldown(60).setDataValue(Ability.BAR_COLOR, EnumAbilityBarColor.LIGHT_BLUE)); + abilities.put("locate", new AbilityLocate(entity)); if (GauntelHelper.hasPowerStone(entity)) { abilities.put("blackhole", CompatHandler.HeroesExpension.getAbilityBlackhole(entity).setMaxCooldown(6000).setDataValue(Ability.BAR_COLOR, EnumAbilityBarColor.LIGHT_BLUE)); diff --git a/src/main/java/anvil/infinity/registry/Abilities.java b/src/main/java/anvil/infinity/registry/Abilities.java index 44f469b..a2b9178 100644 --- a/src/main/java/anvil/infinity/registry/Abilities.java +++ b/src/main/java/anvil/infinity/registry/Abilities.java @@ -19,6 +19,7 @@ public class Abilities { e.getRegistry().register(new AbilityEntry(AbilitySaturation.class, new ResourceLocation(Infinity.MOD_ID, "saturation"))); e.getRegistry().register(new AbilityEntry(AbilityFastForward.class, new ResourceLocation(Infinity.MOD_ID, "fast_forward"))); e.getRegistry().register(new AbilityEntry(AbilityStopTime.class, new ResourceLocation(Infinity.MOD_ID, "stop_time"))); + e.getRegistry().register(new AbilityEntry(AbilityLocate.class, new ResourceLocation(Infinity.MOD_ID, "locate"))); } diff --git a/src/main/java/anvil/infinity/worldgen/StoneTempleGen.java b/src/main/java/anvil/infinity/worldgen/StoneTempleGen.java index 0306138..84f3153 100644 --- a/src/main/java/anvil/infinity/worldgen/StoneTempleGen.java +++ b/src/main/java/anvil/infinity/worldgen/StoneTempleGen.java @@ -17,7 +17,6 @@ import net.minecraft.util.Rotation; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkPos; import net.minecraft.util.text.TextComponentString; -import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; import net.minecraft.world.WorldServer; @@ -38,6 +37,8 @@ public class StoneTempleGen extends WorldGenerator { gen(world, position, Items.MIND_STONE); WorldData data = WorldData.get(world); data.mind = true; + data.mindx = position.getX(); + data.mindz = position.getZ(); data.markDirty(); sendMessage("Mind", world); return true; @@ -45,6 +46,8 @@ public class StoneTempleGen extends WorldGenerator { gen(world, position, Items.SPACE_STONE); WorldData data = WorldData.get(world); data.space = true; + data.spacex = position.getX(); + data.spacez = position.getZ(); data.markDirty(); sendMessage("Space", world); return true; @@ -52,6 +55,8 @@ public class StoneTempleGen extends WorldGenerator { gen(world, position, Items.REALITY_STONE); WorldData data = WorldData.get(world); data.reality = true; + data.realityx = position.getX(); + data.realityz = position.getZ(); data.markDirty(); sendMessage("Reality", world); return true; @@ -59,6 +64,8 @@ public class StoneTempleGen extends WorldGenerator { gen(world, position, Items.TIME_STONE); WorldData data = WorldData.get(world); data.time = true; + data.timex = position.getX(); + data.timez = position.getZ(); data.markDirty(); sendMessage("Time", world); return true; @@ -66,6 +73,8 @@ public class StoneTempleGen extends WorldGenerator { gen(world, position, Items.SOUL_STONE); WorldData data = WorldData.get(world); data.soul = true; + data.soulx = position.getX(); + data.soulz = position.getZ(); data.markDirty(); sendMessage("Soul", world); return true; @@ -73,6 +82,8 @@ public class StoneTempleGen extends WorldGenerator { gen(world, position, Items.POWER_STONE); WorldData data = WorldData.get(world); data.power = true; + data.powerx = position.getX(); + data.powerz = position.getZ(); data.markDirty(); sendMessage("Power", world); return true; diff --git a/src/main/java/anvil/infinity/worldgen/WorldData.java b/src/main/java/anvil/infinity/worldgen/WorldData.java index 98e85d6..0c4b34b 100644 --- a/src/main/java/anvil/infinity/worldgen/WorldData.java +++ b/src/main/java/anvil/infinity/worldgen/WorldData.java @@ -24,6 +24,20 @@ public class WorldData extends WorldSavedData { public boolean time; public boolean mind; + public int powerx; + public int spacex; + public int realityx; + public int soulx; + public int timex; + public int mindx; + + public int powerz; + public int spacez; + public int realityz; + public int soulz; + public int timez; + public int mindz; + @Override public void readFromNBT(NBTTagCompound nbt) { power = nbt.getBoolean("power"); @@ -33,6 +47,19 @@ public class WorldData extends WorldSavedData { time = nbt.getBoolean("time"); mind = nbt.getBoolean("mind"); + powerx = nbt.getInteger("powerX"); + spacex = nbt.getInteger("spaceX"); + realityx = nbt.getInteger("realityX"); + soulx = nbt.getInteger("soulX"); + timex = nbt.getInteger("timeX"); + mindx = nbt.getInteger("mindX"); + + powerz = nbt.getInteger("powerZ"); + spacez = nbt.getInteger("spaceZ"); + realityz = nbt.getInteger("realityZ"); + soulz = nbt.getInteger("soulZ"); + timez = nbt.getInteger("timeZ"); + mindz = nbt.getInteger("mindZ"); } @Override @@ -44,6 +71,20 @@ public class WorldData extends WorldSavedData { compound.setBoolean("time", time); compound.setBoolean("mind", mind); + compound.setInteger("powerX", powerx); + compound.setInteger("spaceX", spacex); + compound.setInteger("realityX", realityx); + compound.setInteger("soulX", soulx); + compound.setInteger("timeX", timex); + compound.setInteger("mindX", mindx); + + compound.setInteger("powerZ", powerz); + compound.setInteger("spaceZ", spacez); + compound.setInteger("realityZ", realityz); + compound.setInteger("soulZ", soulz); + compound.setInteger("timeZ", timez); + compound.setInteger("mindZ", mindz); + return compound; }