From 7c81228f98f6be832f732486d83c81de268d42ac Mon Sep 17 00:00:00 2001 From: TheTurkeyDev Date: Tue, 18 May 2021 00:19:42 -0400 Subject: [PATCH] Added Connect 4 reward Implemented reward settings Added the ability to specify cache block blacklist --- .../chanceCubes/config/CCubesSettings.java | 3 + .../java/chanceCubes/config/ConfigLoader.java | 73 ++-- .../global/GlobalCCRewardRegistry.java | 4 +- .../chanceCubes/rewards/DefaultRewards.java | 43 +-- .../rewards/IChanceCubeReward.java | 6 +- .../rewards/defaultRewards/AnvilRain.java | 8 +- .../defaultRewards/ArmorStandArmorReward.java | 15 +- .../defaultRewards/BaseCustomReward.java | 67 ++-- .../rewards/defaultRewards/BasicReward.java | 5 +- .../defaultRewards/BookOfMemesReward.java | 4 +- .../defaultRewards/BossBaseReward.java | 12 +- .../defaultRewards/BossBlazeReward.java | 5 +- .../defaultRewards/BossMimicReward.java | 4 +- .../defaultRewards/BossRavagerReward.java | 5 +- .../defaultRewards/BossSlimeQueenReward.java | 4 +- .../defaultRewards/BossWitchReward.java | 3 +- .../defaultRewards/CakeIsALieReward.java | 3 +- .../ChanceCubeRenameReward.java | 9 +- .../defaultRewards/ClearInventoryReward.java | 5 +- .../defaultRewards/CoinFlipReward.java | 4 +- .../defaultRewards/Connect4Reward.java | 329 ++++++++++++++++++ .../defaultRewards/CountDownReward.java | 5 +- .../CreeperSurroundedReward.java | 7 +- .../defaultRewards/CursedHeadReward.java | 4 +- .../defaultRewards/CustomUserReward.java | 4 +- .../defaultRewards/DidYouKnowReward.java | 4 +- .../defaultRewards/DigBuildReward.java | 5 +- .../rewards/defaultRewards/DoubleRainbow.java | 5 +- .../defaultRewards/HerobrineReward.java | 7 +- .../defaultRewards/InventoryChestReward.java | 4 +- .../defaultRewards/ItemChestReward.java | 5 +- .../defaultRewards/ItemOfDestinyReward.java | 3 +- .../rewards/defaultRewards/ItemRenamer.java | 4 +- .../defaultRewards/JarGuessReward.java | 3 +- .../rewards/defaultRewards/JukeBoxReward.java | 5 +- .../defaultRewards/MagicFeetReward.java | 5 +- .../defaultRewards/MatchingReward.java | 14 +- .../rewards/defaultRewards/MathReward.java | 5 +- .../rewards/defaultRewards/MazeReward.java | 5 +- .../defaultRewards/MobTowerReward.java | 8 +- .../defaultRewards/MontyHallReward.java | 5 +- .../defaultRewards/OneIsLuckyReward.java | 5 +- .../defaultRewards/QuestionsReward.java | 3 +- .../RainingCatsAndCogsReward.java | 3 +- .../defaultRewards/SkyblockReward.java | 4 +- .../defaultRewards/StreamerReward.java | 5 +- .../defaultRewards/SurroundedReward.java | 5 +- .../defaultRewards/TableFlipReward.java | 5 +- .../defaultRewards/TicTacToeReward.java | 49 +-- .../defaultRewards/TrollTNTReward.java | 7 +- .../defaultRewards/WaitForItReward.java | 9 +- .../defaultRewards/WheelSpinReward.java | 21 +- .../rewards/defaultRewards/WitherReward.java | 7 +- .../WolvesToCreepersReward.java | 4 +- .../defaultRewards/ZombieCopyCatReward.java | 5 +- .../giantRewards/BeaconArenaReward.java | 4 +- .../rewards/giantRewards/BioDomeReward.java | 8 +- .../giantRewards/BlockInfectionReward.java | 4 +- .../giantRewards/BlockThrowerReward.java | 4 +- .../rewards/giantRewards/ChunkFlipReward.java | 5 +- .../giantRewards/ChunkReverserReward.java | 4 +- .../giantRewards/FireworkShowReward.java | 5 +- .../giantRewards/FloorIsLavaReward.java | 4 +- .../giantRewards/FluidSphereReward.java | 4 +- .../giantRewards/MixedFluidSphereReward.java | 4 +- .../rewards/giantRewards/OrePillarReward.java | 8 +- .../rewards/giantRewards/OreSphereReward.java | 8 +- .../rewards/giantRewards/PotionsReward.java | 5 +- .../giantRewards/RandomExplosionReward.java | 3 +- .../giantRewards/SphereSnakeReward.java | 5 +- .../rewards/giantRewards/TNTSlingReward.java | 5 +- .../giantRewards/ThrowablesReward.java | 5 +- src/main/java/chanceCubes/util/GameTurn.java | 6 + src/main/java/chanceCubes/util/HTTPUtil.java | 1 - src/main/java/chanceCubes/util/Point.java | 18 + .../chanceCubes/util/RewardBlockCache.java | 13 +- 76 files changed, 657 insertions(+), 316 deletions(-) create mode 100644 src/main/java/chanceCubes/rewards/defaultRewards/Connect4Reward.java create mode 100644 src/main/java/chanceCubes/util/GameTurn.java create mode 100644 src/main/java/chanceCubes/util/Point.java diff --git a/src/main/java/chanceCubes/config/CCubesSettings.java b/src/main/java/chanceCubes/config/CCubesSettings.java index 78dc642d..fcc30608 100644 --- a/src/main/java/chanceCubes/config/CCubesSettings.java +++ b/src/main/java/chanceCubes/config/CCubesSettings.java @@ -3,6 +3,7 @@ import chanceCubes.rewards.IChanceCubeReward; import chanceCubes.util.NonreplaceableBlockOverride; import net.minecraft.block.BlockState; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.ForgeConfigSpec.BooleanValue; import net.minecraftforge.common.ForgeConfigSpec.ConfigValue; import net.minecraftforge.common.ForgeConfigSpec.IntValue; @@ -46,6 +47,8 @@ public class CCubesSettings public static List nonReplaceableBlocksOverrides = new ArrayList<>(); public static List backupNRB = new ArrayList<>(); + public static ConfigValue> blockRestoreBlacklist; + public static boolean testRewards; public static boolean testCustomRewards; public static int testingRewardIndex = 0; diff --git a/src/main/java/chanceCubes/config/ConfigLoader.java b/src/main/java/chanceCubes/config/ConfigLoader.java index 5c31cdea..0c980e1a 100644 --- a/src/main/java/chanceCubes/config/ConfigLoader.java +++ b/src/main/java/chanceCubes/config/ConfigLoader.java @@ -1,37 +1,39 @@ package chanceCubes.config; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.io.Writer; -import java.util.ArrayList; - +import chanceCubes.CCubesCore; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonObject; import com.google.gson.JsonParser; -import org.apache.commons.lang3.tuple.Pair; - -import chanceCubes.CCubesCore; import net.minecraftforge.common.ForgeConfigSpec; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.config.ModConfig.ModConfigEvent; import net.minecraftforge.fml.loading.FMLPaths; +import org.apache.commons.lang3.tuple.Pair; import org.apache.logging.log4j.Level; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.Writer; +import java.util.ArrayList; + @Mod.EventBusSubscriber(modid = CCubesCore.MODID, bus = Mod.EventBusSubscriber.Bus.MOD) public class ConfigLoader { + private static final Gson gson = new GsonBuilder().setPrettyPrinting().create(); + public static final ForgeConfigSpec configSpec; public static final ConfigLoader CONFIG; public static File globalDisableConfig; private static JsonObject globalDisableConfigJson; - private static final Gson gson = new GsonBuilder().setPrettyPrinting().create(); + public static File rewardSettingsConfig; + private static JsonObject rewardSettingsJson; static { @@ -64,10 +66,10 @@ public ConfigLoader(ForgeConfigSpec.Builder builder) // @formatter:off CCubesSettings.rangeMin = builder .comment("The minimum chance range value. Changes the range of chance that the chance block can pick from. i.e. If you have your rangemin set to 10 and range max set to 15. A chance cube with a chance value of 0 can get rewards of -10 to 15 in chance value.") - .defineInRange("chanceRangeMin", 10, 0, 100); + .defineInRange("ChanceRangeMin", 10, 0, 100); CCubesSettings.rangeMax = builder .comment("The maximum chance range value. Changes the range of chance that the chance block can pick from. i.e. If you have your rangemin set to 10 and range max set to 15. A chance cube with a chance value of 0 can get rewards of -10 to 15 in chance value.") - .defineInRange("chanceRangeMax", 10, 0, 100); + .defineInRange("ChanceRangeMax", 10, 0, 100); CCubesSettings.d20UseNormalChances = builder .comment("Set to true if the D20's should have any chance value from -100 to 100. Set to false to have the D20's only have a chance value of either -100 or 100") @@ -75,11 +77,11 @@ public ConfigLoader(ForgeConfigSpec.Builder builder) CCubesSettings.rewardsEqualChance = builder .comment("Set to true if the mod should ignore chance values and give each reward and equal chance to be picked") - .define("rewardsEqualChance", false); + .define("RewardsEqualChance", false); CCubesSettings.disableGiantCC = builder .comment("Set to true Giant Chance Cubes should be disabled") - .define("disableGiantCC", false); + .define("DisableGiantCC", false); CCubesSettings.enableHardCodedRewards = builder .comment("Set to true if the default rewards should be loaded, false if they shouldn't") @@ -87,20 +89,20 @@ public ConfigLoader(ForgeConfigSpec.Builder builder) CCubesSettings.pendantUses = builder .comment("Number of uses for a pendant") - .defineInRange("pendantUses", 32, 0, 1000); + .defineInRange("PendantUses", 32, 0, 1000); CCubesSettings.oreGeneration = builder .comment("True if Chance Cubes should generate like ores with in the world. false if they should not") .define("GenerateAsOre", true); CCubesSettings.oreGenAmount = builder .comment("Amount of chance cubes to try and spawn, per chunk, as an ore") - .defineInRange("oreGenAmount", 4, 1, 100); + .defineInRange("OreGenAmount", 4, 1, 100); CCubesSettings.surfaceGeneration = builder .comment("true if Chance Cubes should generate on the surface of the world. false if they should not") .define("GenerateOnSurface", true); CCubesSettings.surfaceGenAmount = builder .comment("Chance of a chunk to have a chance cube spawned on the surface. The math is 1/(surfaceGenerationAmount), so increase to make more rare, and decrese to make more common.") - .defineInRange("surfaceGenerationAmount", 100, 0, Integer.MAX_VALUE); + .defineInRange("SurfaceGenerationAmount", 100, 0, Integer.MAX_VALUE); CCubesSettings.blockedWorlds = builder @@ -110,6 +112,10 @@ public ConfigLoader(ForgeConfigSpec.Builder builder) .comment("True if Chance Cubes should generate as chest loot in the world. false if they should not") .define("ChestLoot", true); + CCubesSettings.blockRestoreBlacklist = builder + .comment("Blocks that should not be replaced when rewards are \"restored\" after a reward is over, i.e don't remove graves when the boss dome get's cleared") + .defineList("BlockRestoreBlacklist", new ArrayList<>(), input -> (input != null && !input.equals(""))); + CCubesSettings.dropHeight = builder .comment("How many blocks above the Chance Cube that a block that will fall should be dropped from") .defineInRange("FallingBlockDropHeight", 20, 0, 256); @@ -159,14 +165,28 @@ public static void onConfigLoad(ModConfigEvent event) gson.toJson(globalDisableConfigJson, writer); } } - else + } catch(IOException e) + { + CCubesCore.logger.log(Level.ERROR, "Chance Cubes was unable to create the global rewards config file!"); + } + + rewardSettingsConfig = new File(folder, "reward_settings.json"); + try + { + if(rewardSettingsConfig.createNewFile()) { - reload(); + rewardSettingsJson = new JsonObject(); + try(Writer writer = new FileWriter(rewardSettingsConfig)) + { + gson.toJson(rewardSettingsJson, writer); + } } } catch(IOException e) { - CCubesCore.logger.log(Level.ERROR, "Chance Cubes was unable to create the global rewards Config file!"); + CCubesCore.logger.log(Level.ERROR, "Chance Cubes was unable to create the reward settings config file!"); } + + reload(); } public static void reload() @@ -174,9 +194,11 @@ public static void reload() try { globalDisableConfigJson = new JsonParser().parse(new FileReader(globalDisableConfig)).getAsJsonObject(); + rewardSettingsJson = new JsonParser().parse(new FileReader(rewardSettingsConfig)).getAsJsonObject(); } catch(FileNotFoundException e) { - CCubesCore.logger.log(Level.ERROR, "Chance Cubes could not load the global rewards Config file!"); + CCubesCore.logger.log(Level.ERROR, "Chance Cubes could not load the global rewards and/or the reward settings config file!"); + e.printStackTrace(); } } @@ -195,4 +217,9 @@ public static boolean getRewardConfigStatus(String reward, boolean defaultVal) } return defaultVal; } + + public static JsonObject getRewardSettings(String reward) + { + return rewardSettingsJson.has(reward) ? rewardSettingsJson.getAsJsonObject(reward) : new JsonObject(); + } } \ No newline at end of file diff --git a/src/main/java/chanceCubes/registry/global/GlobalCCRewardRegistry.java b/src/main/java/chanceCubes/registry/global/GlobalCCRewardRegistry.java index 0f19336d..aaf5dc84 100644 --- a/src/main/java/chanceCubes/registry/global/GlobalCCRewardRegistry.java +++ b/src/main/java/chanceCubes/registry/global/GlobalCCRewardRegistry.java @@ -6,6 +6,7 @@ import chanceCubes.registry.player.PlayerCCRewardRegistry; import chanceCubes.rewards.IChanceCubeReward; import chanceCubes.rewards.defaultRewards.CustomUserReward; +import com.google.gson.JsonObject; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.server.MinecraftServer; @@ -173,8 +174,7 @@ else if(CCubesSettings.testCustomRewards) public static void triggerReward(IChanceCubeReward reward, ServerWorld world, BlockPos pos, PlayerEntity player) { - //TODO: Find another way to implement this - Map settings = new HashMap<>(); + JsonObject settings = ConfigLoader.getRewardSettings(reward.getName()); reward.trigger(world, pos, player, settings); } diff --git a/src/main/java/chanceCubes/rewards/DefaultRewards.java b/src/main/java/chanceCubes/rewards/DefaultRewards.java index 4ea6e76c..6a82dfb6 100644 --- a/src/main/java/chanceCubes/rewards/DefaultRewards.java +++ b/src/main/java/chanceCubes/rewards/DefaultRewards.java @@ -152,7 +152,7 @@ public static void loadDefaultRewards() GlobalCCRewardRegistry.DEFAULT.registerReward(new BaseCustomReward(CCubesCore.MODID + ":half_heart", -30) { @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { player.setHealth(1f); } @@ -161,7 +161,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { player.experienceLevel = 0; player.experienceTotal = 0; @@ -173,7 +173,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { LightningBoltEntity lightningboltentity = EntityType.LIGHTNING_BOLT.create(world); lightningboltentity.moveForced(Vector3d.copyCenteredHorizontally(player.getPosition())); @@ -186,7 +186,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { ItemEntity cookie; for(double xx = 1; xx > -1; xx -= 0.25) @@ -204,7 +204,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { RewardsUtil.sendMessageToPlayer(player, "Selecting random potion effect to apply..."); @@ -226,7 +226,7 @@ public void callback() GlobalCCRewardRegistry.DEFAULT.registerReward(new BaseCustomReward(CCubesCore.MODID + ":arrow_spray", -15) { @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { ArrowEntity arrow; for(double xx = 1; xx > -1; xx -= 0.25) @@ -245,7 +245,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { PotionEntity pot; for(double rad = -Math.PI; rad <= Math.PI; rad += (Math.PI / 10)) @@ -262,7 +262,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { if(world.isRemote) return; @@ -293,7 +293,7 @@ public void callback() GlobalCCRewardRegistry.DEFAULT.registerReward(new BaseCustomReward(CCubesCore.MODID + ":disco", 40) { @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { for(int xx = -4; xx < 5; xx++) for(int zz = -4; zz < 5; zz++) @@ -316,7 +316,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { for(int i = 30; i > 0; i--) RewardsUtil.placeBlock(Blocks.AIR.getDefaultState(), world, pos.add(0, i, 0)); @@ -334,7 +334,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { for(int xx = pos.getX() - 3; xx <= pos.getX() + 3; xx++) for(int zz = pos.getZ() - 3; zz <= pos.getZ() + 3; zz++) @@ -362,7 +362,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { player.inventory.dropAllItems(); @@ -392,7 +392,7 @@ else if(i == 1) GlobalCCRewardRegistry.DEFAULT.registerReward(new BaseCustomReward(CCubesCore.MODID + ":nuke", -75) { @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { RewardsUtil.sendMessageToNearPlayers(world, pos, 32, "May death rain upon them"); world.addEntity(new TNTEntity(world, pos.getX() - 6, pos.getY() + 65, pos.getZ() - 6, player)); @@ -417,7 +417,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { int xChange = ((world.rand.nextInt(50) + 20) + pos.getX()) - 35; int zChange = ((world.rand.nextInt(50) + 20) + pos.getZ()) - 35; @@ -442,7 +442,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { for(int i = 0; i < player.inventory.mainInventory.size(); i++) { @@ -458,7 +458,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { int px = (int) Math.floor(player.getPosX()); int py = (int) Math.floor(player.getPosY()) + 1; @@ -485,7 +485,7 @@ public void callback() GlobalCCRewardRegistry.DEFAULT.registerReward(new BaseCustomReward(CCubesCore.MODID + ":torches_to_creepers", -40) { @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { for(int yy = -32; yy <= 32; yy++) { @@ -511,7 +511,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { int x = RewardsUtil.rand.nextInt(1000) + 200; int z = RewardsUtil.rand.nextInt(1000) + 200; @@ -529,7 +529,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { final BlockPos worldPos = new BlockPos(Math.floor(player.getPosX()), Math.floor(player.getPosY()) - 1, Math.floor(player.getPosZ())); final RewardBlockCache cache = new RewardBlockCache(world, worldPos, new BlockPos(worldPos.getX(), worldPos.getY() + 1, worldPos.getZ())); @@ -555,7 +555,7 @@ public void callback() GlobalCCRewardRegistry.DEFAULT.registerReward(new BaseCustomReward(CCubesCore.MODID + ":saw_nothing_diamond", 0) { @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { ItemEntity itemEnt = new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.DIAMOND, 1)); itemEnt.setInfinitePickupDelay(); @@ -576,7 +576,7 @@ public void callback() GlobalCCRewardRegistry.DEFAULT.registerReward(new BaseCustomReward(CCubesCore.MODID + ":hand_enchant", 20) { @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { ItemStack toEnchant; if(!player.getHeldItemMainhand().isEmpty()) @@ -652,6 +652,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings); + void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings); /** * @return How "lucky" this block is (can be negative). 0 would indicate an "average" reward. Range -100 to 100. diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/AnvilRain.java b/src/main/java/chanceCubes/rewards/defaultRewards/AnvilRain.java index 4cb4bfa3..01280f8b 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/AnvilRain.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/AnvilRain.java @@ -5,13 +5,12 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class AnvilRain extends BaseCustomReward { @@ -21,10 +20,11 @@ public AnvilRain() } @Override - public void trigger(ServerWorld world, BlockPos position, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos position, PlayerEntity player, JsonObject settings) { final RewardBlockCache cache = new RewardBlockCache(world, position, player.getPosition()); - for(int i = 0; i < super.getSettingAsInt(settings, "num_anvils", 5, 0, 100); i++) + int numAnvils = super.getSettingAsInt(settings, "numAnvils", 5, 0, 100); + for(int i = 0; i < numAnvils; i++) { int xx = RewardsUtil.rand.nextInt(9) - 4; int zz = RewardsUtil.rand.nextInt(9) - 4; diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/ArmorStandArmorReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/ArmorStandArmorReward.java index 64a9581b..e7615e79 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/ArmorStandArmorReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/ArmorStandArmorReward.java @@ -2,6 +2,7 @@ import chanceCubes.CCubesCore; import chanceCubes.util.RewardsUtil; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.entity.EntityType; import net.minecraft.entity.item.ArmorStandEntity; @@ -15,8 +16,6 @@ import net.minecraft.world.server.ServerWorld; import org.apache.commons.lang3.ArrayUtils; -import java.util.Map; - public class ArmorStandArmorReward extends BaseCustomReward { @@ -51,7 +50,7 @@ public ArmorStandArmorReward() // @formatter:on @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { ArmorStandEntity armorStand = EntityType.ARMOR_STAND.create(world); String[] allNames = ArrayUtils.addAll(names, super.getSettingAsStringList(settings, "names", new String[0])); @@ -60,7 +59,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings, String key, boolean defaultVal) + public boolean getSettingAsBoolean(JsonObject settings, String key, boolean defaultVal) { - if(settings.containsKey(key)) + if(settings.has(key)) { try { - return (boolean) settings.get(key); + return settings.get(key).getAsBoolean(); } catch(Exception e) { - CCubesCore.logger.log(Level.ERROR, key + " setting failed! Failed to convert " + settings.get(key) + " to a boolean!"); + CCubesCore.logger.log(Level.ERROR, key + " setting failed! Failed to convert " + settings.get(key).toString() + " to a boolean!"); return defaultVal; } } return defaultVal; } - public int getSettingAsInt(Map settings, String key, int defaultVal, int min, int max) + public int getSettingAsInt(JsonObject settings, String key, int defaultVal, int min, int max) { return Math.max(Math.min(getSettingAsInt(settings, key, defaultVal), max), min); } - public int getSettingAsInt(Map settings, String key, int defaultVal) + public int getSettingAsInt(JsonObject settings, String key, int defaultVal) { - if(settings.containsKey(key)) - return getSettingAsNumber(settings, key, defaultVal).intValue(); - return defaultVal; + return getSettingAsNumber(settings, key, defaultVal).intValue(); } - public double getSettingAsDouble(Map settings, String key, double defaultVal, double min, double max) + public double getSettingAsDouble(JsonObject settings, String key, double defaultVal, double min, double max) { return Math.max(Math.min(getSettingAsDouble(settings, key, defaultVal), max), min); } - public double getSettingAsDouble(Map settings, String key, double defaultVal) + public double getSettingAsDouble(JsonObject settings, String key, double defaultVal) { - if(settings.containsKey(key)) - return getSettingAsNumber(settings, key, defaultVal).intValue(); - return defaultVal; + return getSettingAsNumber(settings, key, defaultVal).intValue(); } - public Number getSettingAsNumber(Map settings, String key, Number defaultVal) + public Number getSettingAsNumber(JsonObject settings, String key, Number defaultVal) { - if(settings.containsKey(key)) + if(settings.has(key)) { try { - return (Number) settings.get(key); + return settings.get(key).getAsNumber(); } catch(Exception e) { - CCubesCore.logger.log(Level.ERROR, key + " setting failed! Failed to convert " + settings.get(key) + " to a number!"); + CCubesCore.logger.log(Level.ERROR, key + " setting failed! Failed to convert " + settings.get(key).toString() + " to a number!"); return defaultVal; } } return defaultVal; } - public String getSettingAsString(Map settings, String key, String defaultVal) + public String getSettingAsString(JsonObject settings, String key, String defaultVal) { - if(settings.containsKey(key)) + if(settings.has(key)) { try { - return (String) settings.get(key); + return settings.get(key).getAsString(); } catch(Exception e) { - CCubesCore.logger.log(Level.ERROR, key + " setting failed! Failed to convert " + settings.get(key) + " to a string!"); + CCubesCore.logger.log(Level.ERROR, key + " setting failed! Failed to convert " + settings.get(key).toString() + " to a string!"); return defaultVal; } } return defaultVal; } - public String[] getSettingAsStringList(Map settings, String key, String[] defaultVal) + public String[] getSettingAsStringList(JsonObject settings, String key, String[] defaultVal) { - if(settings.containsKey(key)) + if(settings.has(key)) { try { - return (String[]) settings.get(key); + JsonArray arr = settings.get(key).getAsJsonArray(); + String[] toReturn = new String[arr.size()]; + for(int i = 0; i < arr.size(); i++) + toReturn[i] = arr.get(i).getAsString(); + return toReturn; } catch(Exception e) { - CCubesCore.logger.log(Level.ERROR, key + " setting failed! Failed to convert " + settings.get(key) + " to a string list!"); + CCubesCore.logger.log(Level.ERROR, key + " setting failed! Failed to convert " + settings.get(key).toString() + " to a string list!"); return defaultVal; } } return defaultVal; } - public ItemStack[] getSettingAsItemStackList(Map settings, String key, ItemStack[] defaultVal) + public ItemStack[] getSettingAsItemStackList(JsonObject settings, String key, ItemStack[] defaultVal) { - if(settings.containsKey(key)) + if(settings.has(key)) { - JsonObject[] stackObjects; + JsonArray stackObjects; try { - stackObjects = (JsonObject[]) settings.get(key); + stackObjects = settings.get(key).getAsJsonArray(); } catch(Exception e) { - CCubesCore.logger.log(Level.ERROR, key + " setting failed! Failed to convert " + settings.get(key) + " to a JSON list!"); + CCubesCore.logger.log(Level.ERROR, key + " setting failed! Failed to convert " + settings.get(key).toString() + " to a Json array!"); return defaultVal; } List stacks = new ArrayList<>(); - for(JsonObject obj : stackObjects) + for(JsonElement obj : stackObjects) { ItemStack stack; try diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/BasicReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/BasicReward.java index 92cce3d3..1db66d08 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/BasicReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/BasicReward.java @@ -1,12 +1,11 @@ package chanceCubes.rewards.defaultRewards; import chanceCubes.rewards.rewardtype.IRewardType; +import com.google.gson.JsonObject; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class BasicReward extends BaseCustomReward { private IRewardType[] rewards; @@ -18,7 +17,7 @@ public BasicReward(String name, int chance, IRewardType... rewards) } @Override - public void trigger(ServerWorld world, BlockPos position, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos position, PlayerEntity player, JsonObject settings) { if(rewards != null) for(IRewardType reward : rewards) diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/BookOfMemesReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/BookOfMemesReward.java index 8f249015..afdc3441 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/BookOfMemesReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/BookOfMemesReward.java @@ -2,6 +2,7 @@ import chanceCubes.CCubesCore; import chanceCubes.util.RewardsUtil; +import com.google.gson.JsonObject; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; @@ -9,7 +10,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Map; public class BookOfMemesReward extends BaseCustomReward { @@ -31,7 +31,7 @@ public BookOfMemesReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { List allMemes = new ArrayList<>(memes); allMemes.addAll(Arrays.asList(super.getSettingAsStringList(settings, "memes", new String[0]))); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/BossBaseReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/BossBaseReward.java index c09eb0e2..e070b21d 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/BossBaseReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/BossBaseReward.java @@ -6,6 +6,7 @@ import chanceCubes.util.Scheduler; import chanceCubes.util.Task; import com.google.common.collect.Multimap; +import com.google.gson.JsonObject; import net.minecraft.entity.Entity; import net.minecraft.entity.ai.attributes.Attribute; import net.minecraft.entity.ai.attributes.AttributeModifier; @@ -26,7 +27,6 @@ import java.util.Arrays; import java.util.Collection; import java.util.List; -import java.util.Map; public abstract class BossBaseReward extends BaseCustomReward { @@ -39,7 +39,7 @@ public BossBaseReward(String bossName) } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { BattleWrapper battleWrapper = new BattleWrapper(); @@ -93,7 +93,7 @@ public void callback() }); } - public void startBossFight(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings, BattleWrapper battleWrapper) + public void startBossFight(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings, BattleWrapper battleWrapper) { spawnBoss(world, pos, player, settings, battleWrapper); Scheduler.scheduleTask(new Task("boss_fight_tracker", -1, 5) @@ -167,11 +167,11 @@ protected void trackedPlayers(BattleWrapper battleWrapper, PlayerEntity... playe battleWrapper.trackedPlayers.addAll(Arrays.asList(player)); } - public abstract void spawnBoss(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings, BattleWrapper battleWrapper); + public abstract void spawnBoss(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings, BattleWrapper battleWrapper); public abstract void onBossFightEnd(ServerWorld world, BlockPos pos, PlayerEntity player); - public double getBossHealthDynamic(PlayerEntity player, Map settings) + public double getBossHealthDynamic(PlayerEntity player, JsonObject settings) { double maxDamage = 3; for(ItemStack stack : player.inventory.mainInventory) @@ -188,7 +188,7 @@ public double getBossHealthDynamic(PlayerEntity player, Map sett double prePofileHealth = maxDamage * 15.0; - double profileMult = super.getSettingAsDouble(settings, "boss_health_multiplier", 1.0, 0.0, 10.0); + double profileMult = super.getSettingAsDouble(settings, "bossHealthMultiplier", 1.0, 0.0, 10.0); return prePofileHealth * profileMult; } diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/BossBlazeReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/BossBlazeReward.java index 0373e6c7..b84a1dbe 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/BossBlazeReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/BossBlazeReward.java @@ -3,6 +3,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.entity.EntityType; import net.minecraft.entity.ai.attributes.Attributes; @@ -16,8 +17,6 @@ import net.minecraft.world.World; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class BossBlazeReward extends BossBaseReward { public BossBlazeReward() @@ -26,7 +25,7 @@ public BossBlazeReward() } @Override - public void spawnBoss(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings, BattleWrapper battleWrapper) + public void spawnBoss(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings, BattleWrapper battleWrapper) { BlazeEntity blaze = EntityType.BLAZE.create(world); blaze.setCustomName(new StringTextComponent("Demonic Blaze")); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/BossMimicReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/BossMimicReward.java index 980be9ad..13f70572 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/BossMimicReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/BossMimicReward.java @@ -1,5 +1,6 @@ package chanceCubes.rewards.defaultRewards; +import com.google.gson.JsonObject; import net.minecraft.entity.EntityType; import net.minecraft.entity.ai.attributes.Attributes; import net.minecraft.entity.monster.ZombieEntity; @@ -11,7 +12,6 @@ import net.minecraft.world.server.ServerWorld; import java.util.List; -import java.util.Map; public class BossMimicReward extends BossBaseReward { @@ -21,7 +21,7 @@ public BossMimicReward() } @Override - public void spawnBoss(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings, BattleWrapper battleWrapper) + public void spawnBoss(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings, BattleWrapper battleWrapper) { ZombieEntity mimic = EntityType.ZOMBIE.create(world); mimic.setCustomName(new StringTextComponent("Mimic")); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/BossRavagerReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/BossRavagerReward.java index 2e5d19e1..70a5ffa8 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/BossRavagerReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/BossRavagerReward.java @@ -6,6 +6,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.entity.EntityType; @@ -20,8 +21,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class BossRavagerReward extends BossBaseReward { public BossRavagerReward() @@ -30,7 +29,7 @@ public BossRavagerReward() } @Override - public void spawnBoss(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings, BattleWrapper battleWrapper) + public void spawnBoss(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings, BattleWrapper battleWrapper) { RavagerEntity ravager = EntityType.RAVAGER.create(world); ravager.setPositionAndUpdate(pos.getX(), pos.getY(), pos.getZ()); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/BossSlimeQueenReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/BossSlimeQueenReward.java index d3c4bb00..292dc952 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/BossSlimeQueenReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/BossSlimeQueenReward.java @@ -3,6 +3,7 @@ import chanceCubes.CCubesCore; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.entity.EntityType; import net.minecraft.entity.ai.attributes.Attributes; import net.minecraft.entity.monster.SlimeEntity; @@ -17,7 +18,6 @@ import org.apache.logging.log4j.Level; import java.util.List; -import java.util.Map; public class BossSlimeQueenReward extends BossBaseReward { @@ -27,7 +27,7 @@ public BossSlimeQueenReward() } @Override - public void spawnBoss(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings, BattleWrapper battleWrapper) + public void spawnBoss(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings, BattleWrapper battleWrapper) { SlimeEntity queen = EntityType.SLIME.create(world); queen.setCustomName(new StringTextComponent("Slime Queen")); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/BossWitchReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/BossWitchReward.java index c4803bc1..27b1d56a 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/BossWitchReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/BossWitchReward.java @@ -4,6 +4,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.enchantment.Enchantments; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; @@ -42,7 +43,7 @@ public BossWitchReward() } @Override - public void spawnBoss(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings, BattleWrapper battleWrapper) + public void spawnBoss(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings, BattleWrapper battleWrapper) { WitchEntity witch = EntityType.WITCH.create(world); witch.setCustomName(new StringTextComponent("Evil Witch")); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/CakeIsALieReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/CakeIsALieReward.java index 564a8697..a0259ac4 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/CakeIsALieReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/CakeIsALieReward.java @@ -4,6 +4,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.block.CakeBlock; import net.minecraft.entity.EntityType; @@ -24,7 +25,7 @@ public CakeIsALieReward() } @Override - public void trigger(final ServerWorld world, final BlockPos pos, final PlayerEntity player, Map settings) + public void trigger(final ServerWorld world, final BlockPos pos, final PlayerEntity player, JsonObject settings) { RewardsUtil.sendMessageToNearPlayers(world, pos, 32, "But is it a lie?"); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/ChanceCubeRenameReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/ChanceCubeRenameReward.java index 5ae854cc..eb516954 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/ChanceCubeRenameReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/ChanceCubeRenameReward.java @@ -3,6 +3,7 @@ import chanceCubes.CCubesCore; import chanceCubes.blocks.CCubesBlocks; import chanceCubes.util.RewardsUtil; +import com.google.gson.JsonObject; import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -11,8 +12,6 @@ import net.minecraft.world.server.ServerWorld; import org.apache.commons.lang3.ArrayUtils; -import java.util.Map; - public class ChanceCubeRenameReward extends BaseCustomReward { @@ -29,12 +28,12 @@ public ChanceCubeRenameReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { ItemStack stack = new ItemStack(CCubesBlocks.CHANCE_CUBE, 2); - String[] allChanceSyn = ArrayUtils.addAll(chanceSyn, super.getSettingAsStringList(settings, "chance_syn", new String[0])); + String[] allChanceSyn = ArrayUtils.addAll(chanceSyn, super.getSettingAsStringList(settings, "chanceSynonym", new String[0])); String name = allChanceSyn[RewardsUtil.rand.nextInt(allChanceSyn.length)]; - String[] allCubeSyn = ArrayUtils.addAll(cubeSyn, super.getSettingAsStringList(settings, "cube_syn", new String[0])); + String[] allCubeSyn = ArrayUtils.addAll(cubeSyn, super.getSettingAsStringList(settings, "cubeSynonym", new String[0])); String adj = allCubeSyn[RewardsUtil.rand.nextInt(allCubeSyn.length)]; String newName = name + " " + adj; diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/ClearInventoryReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/ClearInventoryReward.java index 0e0f5d29..25556e29 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/ClearInventoryReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/ClearInventoryReward.java @@ -5,6 +5,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; @@ -13,8 +14,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class ClearInventoryReward extends BaseCustomReward { @@ -24,7 +23,7 @@ public ClearInventoryReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, JsonObject settings) { boolean cubes = false; final PlayerInventory inv = new PlayerInventory(player); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/CoinFlipReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/CoinFlipReward.java index 55605f29..0bea55d9 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/CoinFlipReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/CoinFlipReward.java @@ -4,6 +4,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.item.TNTEntity; import net.minecraft.entity.player.PlayerEntity; @@ -17,7 +18,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; public class CoinFlipReward extends BaseCustomReward { @@ -29,7 +29,7 @@ public CoinFlipReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, JsonObject settings) { if(inFlip.contains(player)) return; diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/Connect4Reward.java b/src/main/java/chanceCubes/rewards/defaultRewards/Connect4Reward.java new file mode 100644 index 00000000..a8718886 --- /dev/null +++ b/src/main/java/chanceCubes/rewards/defaultRewards/Connect4Reward.java @@ -0,0 +1,329 @@ +package chanceCubes.rewards.defaultRewards; + +import chanceCubes.CCubesCore; +import chanceCubes.util.GameTurn; +import chanceCubes.util.Point; +import chanceCubes.util.RewardBlockCache; +import chanceCubes.util.RewardsUtil; +import chanceCubes.util.Scheduler; +import chanceCubes.util.Task; +import com.google.gson.JsonObject; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.LadderBlock; +import net.minecraft.entity.item.ItemEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraft.world.server.ServerWorld; + +import java.util.ArrayList; +import java.util.List; + +public class Connect4Reward extends BaseCustomReward +{ + private static int WIDTH = 7; + private static int HEIGHT = 6; + + public Connect4Reward() + { + super(CCubesCore.MODID + ":connect_4", 0); + } + + @Override + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) + { + int mistakeChance = super.getSettingAsInt(settings, "mistakeChance", 3, 0, 100); + RewardsUtil.sendMessageToPlayer(player, "Lets play Connect 4!"); + RewardsUtil.sendMessageToPlayer(player, "Beat the Computer to get 5 Diamonds!"); + + RewardBlockCache cache = new RewardBlockCache(world, pos, player.getPosition()); + + BlockPos playerPos = pos.add(3, 0, 0); + player.setLocationAndAngles(playerPos.getX(), playerPos.getY(), playerPos.getZ(), 0, 0); + player.world.addEntity(new ItemEntity(player.world, playerPos.getX(), playerPos.getY(), playerPos.getZ(), new ItemStack(Blocks.RED_CONCRETE_POWDER, 21))); + + for(int x = -5; x < 6; x++) + for(int z = -6; z < 7; z++) + for(int y = 0; y < 9; y++) + cache.cacheBlock(new BlockPos(x, y, z), Blocks.AIR.getDefaultState()); + + for(int x = -3; x < 4; x++) + for(int z = -4; z < 5; z++) + if(z == -4 || z == 4 || x == 0) + world.setBlockState(pos.add(x, 0, z), Blocks.BEDROCK.getDefaultState()); + + for(int y = 0; y < 8; y++) + { + for(int x = -1; x < 2; x++) + { + world.setBlockState(pos.add(x, y, -4), Blocks.BEDROCK.getDefaultState()); + world.setBlockState(pos.add(x, y, 4), Blocks.BEDROCK.getDefaultState()); + } + } + + for(int x = -1; x < 2; x++) + for(int z = -4; z < 5; z++) + if(z == -4 || z == 4 || x == -1 || x == 1) + world.setBlockState(pos.add(x, 7, z), Blocks.BEDROCK.getDefaultState()); + + for(int y = 1; y < 7; y++) + { + for(int z = -3; z < 4; z++) + { + world.setBlockState(pos.add(-1, y, z), Blocks.GLASS.getDefaultState()); + world.setBlockState(pos.add(1, y, z), Blocks.GLASS.getDefaultState()); + } + } + + for(int y = 0; y < 8; y++) + { + world.setBlockState(pos.add(0, y, -5), Blocks.LADDER.getDefaultState()); + world.setBlockState(pos.add(0, y, 5), Blocks.LADDER.getDefaultState().with(LadderBlock.FACING, Direction.SOUTH)); + } + + world.setBlockState(pos.add(-2, 1, -4), Blocks.BEDROCK.getDefaultState()); + world.setBlockState(pos.add(2, 1, -4), Blocks.BEDROCK.getDefaultState()); + world.setBlockState(pos.add(-2, 1, 4), Blocks.BEDROCK.getDefaultState()); + world.setBlockState(pos.add(2, 1, 4), Blocks.BEDROCK.getDefaultState()); + + Scheduler.scheduleTask(new Task("Connect_4_Game", 10000, 5) + { + Board board = new Board(); + + @Override + public void callback() + { + cache.restoreBlocks(player); + } + + @Override + public void update() + { + for(int z = -3; z < 4; z++) + { + for(int y = 1; y < 7; y++) + { + if(board.board[((y - 1) * WIDTH) + (z + 3)] != 0 || (y - 2 >= 0 && board.board[((y - 2) * WIDTH) + (z + 3)] == 0)) + continue; + BlockPos pos2 = pos.add(0, y, z); + if(!world.isAirBlock(pos2) && world.getBlockState(pos2).getBlock().equals(Blocks.RED_CONCRETE_POWDER)) + makeMove(z + 3, y - 1); + } + } + } + + private void makeMove(int x, int y) + { + board.placeMove(x, y, GameTurn.PLAYER); + board.updateWorldView(world, pos); + + boolean playerWon = board.hasWon(x, y, GameTurn.PLAYER); + + if(!board.isTie() && !playerWon) + { + //Make CPU Move + board.minimax(0, GameTurn.CPU, null, mistakeChance); + board.placeMove(board.computersMove.x, board.computersMove.y, GameTurn.CPU); + world.setBlockState(pos.add(0, 8, board.computersMove.x - 3), Blocks.YELLOW_CONCRETE_POWDER.getDefaultState()); + } + + boolean gameOver = false; + if(playerWon) + { + RewardsUtil.sendMessageToPlayer(player, "You Won!"); + player.world.addEntity(new ItemEntity(player.world, player.getPosX(), player.getPosY(), player.getPosZ(), new ItemStack(Items.DIAMOND, 5))); + gameOver = true; + } + else if(board.hasWon(board.computersMove.x, board.computersMove.y, GameTurn.CPU)) + { + RewardsUtil.sendMessageToPlayer(player, "The Computer won! Better luck next time!"); + gameOver = true; + } + else if(board.isTie()) + { + RewardsUtil.sendMessageToPlayer(player, "You tied! Better luck next time!"); + gameOver = true; + } + + if(gameOver) + { + Task superTask = this; + Scheduler.scheduleTask(new Task("Connect_4_Game_End_Delay", 40) + { + @Override + public void callback() + { + superTask.delayLeft = 0; + } + }); + } + + } + }); + } + + private static class Board + { + public int[] board = new int[HEIGHT * WIDTH]; + public Point computersMove; + + public boolean isTie() + { + return getAvailableStates().isEmpty(); + } + + public void placeMove(int x, int y, GameTurn turn) + { + board[(WIDTH * y) + x] = turn == GameTurn.PLAYER ? 2 : 1; + } + + private boolean hasWon(int placedX, int placedY, GameTurn playerTurn) + { + //Horizontal Check + int turn = playerTurn == GameTurn.PLAYER ? 2 : 1; + int y = placedY * WIDTH; + for(int i = Math.max(0, placedX - 3); i <= placedX; i++) + { + int adj = i + y; + if(adj >= 0 && adj < WIDTH * HEIGHT && i + 3 < WIDTH) + { + if(board[adj] == turn && board[adj + 1] == turn && board[adj + 2] == turn && board[adj + 3] == turn) + return true; + } + } + + //Verticle Check + for(int i = Math.max(0, placedY - 3); i <= placedY; i++) + { + int adj = placedX + (i * WIDTH); + if(adj >= 0 && adj < WIDTH * HEIGHT && i + 3 < HEIGHT) + { + if(board[adj] == turn && board[adj + WIDTH] == turn && board[adj + (2 * WIDTH)] == turn && board[adj + (3 * WIDTH)] == turn) + return true; + } + } + + //Ascending Diag + for(int i = -3; i <= 0; i++) + { + int adjX = placedX + i; + int adjY = placedY + i; + int adj = adjX + (adjY * WIDTH); + if(adj >= 0 && adj < WIDTH * HEIGHT && adjX + 3 < WIDTH && adjY + 3 < HEIGHT) + { + if(board[adj] == turn && board[adj + WIDTH + 1] == turn && board[adj + (2 * WIDTH) + 2] == turn && board[adj + (3 * WIDTH) + 3] == turn) + return true; + } + } + + //Descending Diag + for(int i = -3; i <= 0; i++) + { + int adjX = placedX + i; + int adjY = placedY - i; + int adj = adjX + (adjY * WIDTH); + if(adj >= 0 && adj < WIDTH * HEIGHT && adjX + 3 < WIDTH && adjY - 3 >= 0) + { + if(board[adj] == turn && board[adj - WIDTH + 1] == turn && board[adj - (2 * WIDTH) + 2] == turn && board[adj - (3 * WIDTH) + 3] == turn) + return true; + } + } + + return false; + } + + public List getAvailableStates() + { + List availablePoints = new ArrayList<>(); + for(int j = 0; j < 6; ++j) + for(int i = 0; i < 7; ++i) + if(board[(j * WIDTH) + i] == 0 && (j == 0 || board[((j - 1) * WIDTH) + i] != 0)) + availablePoints.add(new Point(i, j)); + return availablePoints; + } + + public int minimax(int depth, GameTurn turn, Point lastPlaced, int mistakeChance) + { + if(lastPlaced != null) + { + if(turn == GameTurn.PLAYER && hasWon(lastPlaced.x, lastPlaced.y, GameTurn.CPU)) + return 1 - depth; + if(turn == GameTurn.CPU && hasWon(lastPlaced.x, lastPlaced.y, GameTurn.PLAYER)) + return -1; + } + if(depth > 7) + return 0; + + List pointsAvailable = getAvailableStates(); + if(pointsAvailable.isEmpty()) + return 0; + + if(depth == 0 && RewardsUtil.rand.nextInt(100) < mistakeChance) + { + this.computersMove = pointsAvailable.get(RewardsUtil.rand.nextInt(pointsAvailable.size())); + return 0; + } + + int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE; + for(int i = 0; i < pointsAvailable.size(); ++i) + { + Point point = pointsAvailable.get(i); + placeMove(point.x, point.y, turn); + + int currentScore = minimax(depth + 1, turn == GameTurn.CPU ? GameTurn.PLAYER : GameTurn.CPU, point, mistakeChance); + if(turn == GameTurn.CPU) + { + max = Math.max(currentScore, max); + + if(currentScore >= 0 && depth == 0) + computersMove = point; + + if(currentScore == 1) + { + board[(point.y * WIDTH) + point.x] = 0; + break; + } + + if(i == pointsAvailable.size() - 1 && max < 0 && depth == 0) + computersMove = point; + } + else if(turn == GameTurn.PLAYER) + { + min = Math.min(currentScore, min); + if(min == -1) + { + board[(point.y * WIDTH) + point.x] = 0; + computersMove = point; + break; + } + } + board[(point.y * WIDTH) + point.x] = 0; + } + return turn == GameTurn.CPU ? max : min; + } + + public void updateWorldView(World world, BlockPos pos) + { + for(int z = -3; z < 4; z++) + for(int y = 1; y < 7; y++) + world.setBlockState(pos.add(0, y, z), getStateForBoardVal(board[((y - 1) * WIDTH) + (z + 3)])); + } + + public BlockState getStateForBoardVal(int val) + { + switch(val) + { + case 1: + return Blocks.YELLOW_CONCRETE_POWDER.getDefaultState(); + case 2: + return Blocks.RED_CONCRETE_POWDER.getDefaultState(); + default: + return Blocks.AIR.getDefaultState(); + } + } + } +} diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/CountDownReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/CountDownReward.java index 6f3f9878..4f4c3056 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/CountDownReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/CountDownReward.java @@ -4,6 +4,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.entity.EntityType; import net.minecraft.entity.item.ItemEntity; @@ -20,8 +21,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class CountDownReward extends BaseCustomReward { public CountDownReward() @@ -30,7 +29,7 @@ public CountDownReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { Scheduler.scheduleTask(new Task("Countdown_Reward_Delay", 80, 20) { diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/CreeperSurroundedReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/CreeperSurroundedReward.java index c76b547d..50ddfed8 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/CreeperSurroundedReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/CreeperSurroundedReward.java @@ -2,6 +2,7 @@ import chanceCubes.CCubesCore; import chanceCubes.util.RewardsUtil; +import com.google.gson.JsonObject; import net.minecraft.block.BlockState; import net.minecraft.entity.EntityType; import net.minecraft.entity.monster.CreeperEntity; @@ -11,8 +12,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class CreeperSurroundedReward extends BaseCustomReward { public CreeperSurroundedReward() @@ -21,9 +20,9 @@ public CreeperSurroundedReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { - final int chargedChance = super.getSettingAsInt(settings, "charged_chance", 10, 0, 100); + final int chargedChance = super.getSettingAsInt(settings, "chargedChance", 10, 0, 100); int px = (int) player.getPosX(); int pz = (int) player.getPosZ(); player.addPotionEffect(new EffectInstance(Effects.BLINDNESS, 100, 1, true, false)); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/CursedHeadReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/CursedHeadReward.java index c7c4c364..0ec8a5f3 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/CursedHeadReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/CursedHeadReward.java @@ -4,6 +4,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.enchantment.Enchantments; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.EquipmentSlotType; @@ -15,7 +16,6 @@ import java.util.Arrays; import java.util.List; -import java.util.Map; public class CursedHeadReward extends BaseCustomReward { @@ -27,7 +27,7 @@ public CursedHeadReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { String username = HEAD_NAMES.get(RewardsUtil.rand.nextInt(HEAD_NAMES.size())); ItemStack head = new ItemStack(Items.PLAYER_HEAD); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/CustomUserReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/CustomUserReward.java index 08b9f88a..5205321b 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/CustomUserReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/CustomUserReward.java @@ -30,7 +30,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; import java.util.Map.Entry; import java.util.UUID; @@ -50,7 +49,6 @@ public static void getCustomUserReward(UUID uuid) try { users = HTTPUtil.makeAPIReq("GET", "chancecubes/userlist"); - System.out.println(users.toString()); } catch(Exception e) { e.printStackTrace(); @@ -143,7 +141,7 @@ public CustomUserReward(String un, UUID uuid, String type, List rew } @Override - public void trigger(final ServerWorld world, final BlockPos pos, final PlayerEntity player, Map settings) + public void trigger(final ServerWorld world, final BlockPos pos, final PlayerEntity player, JsonObject settings) { if(!UsernameCache.getLastKnownUsername(uuid).equalsIgnoreCase(player.getName().getUnformattedComponentText())) diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/DidYouKnowReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/DidYouKnowReward.java index d1c7fd55..30465eab 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/DidYouKnowReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/DidYouKnowReward.java @@ -2,13 +2,13 @@ import chanceCubes.CCubesCore; import chanceCubes.util.RewardsUtil; +import com.google.gson.JsonObject; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; import java.util.ArrayList; import java.util.List; -import java.util.Map; public class DidYouKnowReward extends BaseCustomReward { @@ -26,7 +26,7 @@ public DidYouKnowReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { String fact = "Did you know?\n" + dyk.get(RewardsUtil.rand.nextInt(dyk.size())); String command = "/summon minecraft:item ~ ~ ~ {Item:{id:\"minecraft:written_book\",Count:1b,tag:{title:\"Did You know?\",author:\"Chance Cubes\",generation:2,pages:['{\"text\":\"" + fact + "\",\"color\":\"black\"}']}}}"; diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/DigBuildReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/DigBuildReward.java index 1a817560..75da9e41 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/DigBuildReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/DigBuildReward.java @@ -5,6 +5,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -13,8 +14,6 @@ import net.minecraft.world.Explosion; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class DigBuildReward extends BaseCustomReward { @@ -24,7 +23,7 @@ public DigBuildReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { int min = super.getSettingAsInt(settings, "min", 5, 0, 100); int max = super.getSettingAsInt(settings, "max", 25, 0, 100); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/DoubleRainbow.java b/src/main/java/chanceCubes/rewards/defaultRewards/DoubleRainbow.java index 9b79897c..b31fce72 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/DoubleRainbow.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/DoubleRainbow.java @@ -3,14 +3,13 @@ import chanceCubes.CCubesCore; import chanceCubes.rewards.rewardparts.OffsetBlock; import chanceCubes.util.RewardsUtil; +import com.google.gson.JsonObject; import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class DoubleRainbow extends BaseCustomReward { private static Block[] colors = new Block[]{Blocks.RED_WOOL, Blocks.ORANGE_WOOL, Blocks.YELLOW_WOOL, Blocks.GREEN_WOOL, Blocks.BLUE_WOOL, Blocks.PURPLE_WOOL}; @@ -22,7 +21,7 @@ public DoubleRainbow() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { RewardsUtil.sendMessageToNearPlayers(world, pos, 32, "Double Rainbow!"); OffsetBlock b; diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/HerobrineReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/HerobrineReward.java index a643e5ee..7bae5343 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/HerobrineReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/HerobrineReward.java @@ -4,14 +4,13 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class HerobrineReward extends BaseCustomReward { private String[] leaveSayings = new String[]{"I will be back for you.", "Another day, another time.", "No, you are not ready for my wrath.", "Perhaps tomorrow you will be worthy of my challenge", "I sense that I am needed else where. You escape..... For now....", "If only you were worth my time."}; @@ -23,9 +22,9 @@ public HerobrineReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { - int realChance = super.getSettingAsInt(settings, "is_real", 20, 0, 100); + int realChance = super.getSettingAsInt(settings, "isReal", 20, 0, 100); boolean real = RewardsUtil.rand.nextInt(100) < realChance; Scheduler.scheduleTask(new Task("Herobrine Reward", 280, 40) { diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/InventoryChestReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/InventoryChestReward.java index 5c06fcb8..c134bd1f 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/InventoryChestReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/InventoryChestReward.java @@ -2,6 +2,7 @@ import chanceCubes.CCubesCore; import chanceCubes.util.RewardsUtil; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -12,7 +13,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; public class InventoryChestReward extends BaseCustomReward { @@ -22,7 +22,7 @@ public InventoryChestReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, JsonObject settings) { final List stacks = new ArrayList<>(); for(ItemStack stack : player.inventory.mainInventory) diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/ItemChestReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/ItemChestReward.java index 57ad5c7f..4ba18f69 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/ItemChestReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/ItemChestReward.java @@ -4,6 +4,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.player.PlayerEntity; @@ -13,8 +14,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class ItemChestReward extends BaseCustomReward { public ItemChestReward() @@ -35,7 +34,7 @@ public ItemChestReward() //@formatter:on @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { world.setBlockState(pos, Blocks.CHEST.getDefaultState()); ChestTileEntity chest = (ChestTileEntity) world.getTileEntity(pos); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/ItemOfDestinyReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/ItemOfDestinyReward.java index 7bee4e1e..b1b8defa 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/ItemOfDestinyReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/ItemOfDestinyReward.java @@ -5,6 +5,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.player.PlayerEntity; @@ -24,7 +25,7 @@ public ItemOfDestinyReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, JsonObject settings) { final ItemEntity item = new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(RewardsUtil.getRandomItem(), 1)); item.setPickupDelay(100000); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/ItemRenamer.java b/src/main/java/chanceCubes/rewards/defaultRewards/ItemRenamer.java index 41e1fb07..44e8bae9 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/ItemRenamer.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/ItemRenamer.java @@ -2,6 +2,7 @@ import chanceCubes.CCubesCore; import chanceCubes.util.RewardsUtil; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -11,7 +12,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; public class ItemRenamer extends BaseCustomReward { @@ -34,7 +34,7 @@ public ItemRenamer() // @formatter:on @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { List stacks = new ArrayList<>(); for(ItemStack stack : player.inventory.mainInventory) diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/JarGuessReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/JarGuessReward.java index 09083d53..4014c93b 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/JarGuessReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/JarGuessReward.java @@ -5,6 +5,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.entity.EntityType; import net.minecraft.entity.passive.BatEntity; @@ -32,7 +33,7 @@ public JarGuessReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, JsonObject settings) { if(inGuess.containsKey(player)) return; diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/JukeBoxReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/JukeBoxReward.java index caa80f9e..a8d27e46 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/JukeBoxReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/JukeBoxReward.java @@ -2,6 +2,7 @@ import chanceCubes.CCubesCore; import chanceCubes.util.RewardsUtil; +import com.google.gson.JsonObject; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.JukeboxBlock; @@ -12,8 +13,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class JukeBoxReward extends BaseCustomReward { private ItemStack[] discs = new ItemStack[]{new ItemStack(Items.MUSIC_DISC_11), new ItemStack(Items.MUSIC_DISC_13), new ItemStack(Items.MUSIC_DISC_BLOCKS), new ItemStack(Items.MUSIC_DISC_CAT), new ItemStack(Items.MUSIC_DISC_CHIRP), new ItemStack(Items.MUSIC_DISC_FAR), new ItemStack(Items.MUSIC_DISC_MALL), new ItemStack(Items.MUSIC_DISC_MELLOHI), new ItemStack(Items.MUSIC_DISC_STAL), new ItemStack(Items.MUSIC_DISC_STRAD), new ItemStack(Items.MUSIC_DISC_WAIT), new ItemStack(Items.MUSIC_DISC_WARD)}; @@ -24,7 +23,7 @@ public JukeBoxReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { RewardsUtil.placeBlock(Blocks.JUKEBOX.getDefaultState(), world, pos); BlockState iblockstate = world.getBlockState(pos); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/MagicFeetReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/MagicFeetReward.java index cd96d174..7d435ea1 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/MagicFeetReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/MagicFeetReward.java @@ -4,14 +4,13 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.Block; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.network.play.server.STitlePacket; import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class MagicFeetReward extends BaseCustomReward { public MagicFeetReward() @@ -20,7 +19,7 @@ public MagicFeetReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { int duration = super.getSettingAsInt(settings, "duration", 300, 0, Integer.MAX_VALUE); RewardsUtil.sendMessageToPlayer(player, " You've got magic feet!!!"); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/MatchingReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/MatchingReward.java index 89e0c5e5..70bac1a1 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/MatchingReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/MatchingReward.java @@ -6,6 +6,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.entity.item.ItemEntity; @@ -16,8 +17,6 @@ import net.minecraft.world.Explosion; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class MatchingReward extends BaseCustomReward { private static final Block[] blocks = {Blocks.WHITE_WOOL, Blocks.ORANGE_WOOL, Blocks.ORANGE_WOOL, Blocks.MAGENTA_WOOL, Blocks.MAGENTA_WOOL, Blocks.LIGHT_BLUE_WOOL, Blocks.LIGHT_BLUE_WOOL, Blocks.LIME_WOOL, Blocks.LIME_WOOL}; @@ -28,7 +27,7 @@ public MatchingReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { RewardBlockCache cache = new RewardBlockCache(world, pos, player.getPosition()); for(int i = 0; i < 500; i++) @@ -46,11 +45,11 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map inQuestion = new HashMap<>(); @Override - public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, JsonObject settings) { if(inQuestion.containsKey(player)) return; @@ -75,7 +76,7 @@ else if(((xx == -1 || xx == 1) && (zz == -1 || zz == 1) && yy == 2)) inQuestion.put(player, new RewardInfo(num1 + num2, tnt, cache)); - int duration = super.getSettingAsInt(settings, "ans_duration", 100, 20, 2400); + int duration = super.getSettingAsInt(settings, "answerDuration", 100, 20, 2400); Scheduler.scheduleTask(new Task("Math", duration, 20) { diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/MazeReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/MazeReward.java index 9bd25692..00165602 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/MazeReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/MazeReward.java @@ -6,6 +6,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.player.PlayerEntity; @@ -14,8 +15,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class MazeReward extends BaseCustomReward { public MazeReward() @@ -24,7 +23,7 @@ public MazeReward() } @Override - public void trigger(final ServerWorld world, final BlockPos pos, final PlayerEntity player, Map settings) + public void trigger(final ServerWorld world, final BlockPos pos, final PlayerEntity player, JsonObject settings) { RewardsUtil.sendMessageToPlayer(player, "Generating maze..... May be some lag..."); final MazeGenerator gen = new MazeGenerator(world, pos, player.getPosition()); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/MobTowerReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/MobTowerReward.java index 2c192a17..408ea5b4 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/MobTowerReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/MobTowerReward.java @@ -2,6 +2,7 @@ import chanceCubes.CCubesCore; import chanceCubes.util.RewardsUtil; +import com.google.gson.JsonObject; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.player.PlayerEntity; @@ -10,7 +11,6 @@ import java.util.Arrays; import java.util.List; -import java.util.Map; public class MobTowerReward extends BaseCustomReward { @@ -28,11 +28,11 @@ public MobTowerReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { RewardsUtil.sendMessageToPlayer(player, "How did they end up like that? O.o"); - int minHeight = super.getSettingAsInt(settings, "min_height", 7, 0, 20); - int maxHeight = minHeight - super.getSettingAsInt(settings, "max_height", 13, 1, 50); + int minHeight = super.getSettingAsInt(settings, "minHeight", 7, 0, 20); + int maxHeight = minHeight - super.getSettingAsInt(settings, "maxHeight", 13, 1, 50); if(maxHeight < 1) maxHeight = 1; int height = RewardsUtil.rand.nextInt(maxHeight) + minHeight; diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/MontyHallReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/MontyHallReward.java index 8bf83ae2..136f2342 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/MontyHallReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/MontyHallReward.java @@ -5,6 +5,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.StoneButtonBlock; @@ -18,8 +19,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class MontyHallReward extends BaseCustomReward { public MontyHallReward() @@ -28,7 +27,7 @@ public MontyHallReward() } @Override - public void trigger(final ServerWorld world, final BlockPos pos, PlayerEntity player, Map settings) + public void trigger(final ServerWorld world, final BlockPos pos, PlayerEntity player, JsonObject settings) { RewardsUtil.sendMessageToPlayer(player, "Which button do you press?"); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/OneIsLuckyReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/OneIsLuckyReward.java index f559b6f8..8d2341b5 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/OneIsLuckyReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/OneIsLuckyReward.java @@ -6,6 +6,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.tileentity.SignTileEntity; @@ -13,8 +14,6 @@ import net.minecraft.util.text.StringTextComponent; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class OneIsLuckyReward extends BaseCustomReward { public OneIsLuckyReward() @@ -23,7 +22,7 @@ public OneIsLuckyReward() } @Override - public void trigger(final ServerWorld world, final BlockPos pos, PlayerEntity player, Map settings) + public void trigger(final ServerWorld world, final BlockPos pos, PlayerEntity player, JsonObject settings) { RewardsUtil.sendMessageToNearPlayers(world, pos, 32, "A Lucky Block Salute"); SignTileEntity sign = new SignTileEntity(); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/QuestionsReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/QuestionsReward.java index 8c673032..ac670937 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/QuestionsReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/QuestionsReward.java @@ -6,6 +6,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -45,7 +46,7 @@ public void addQuestionAnswer(String q, String a) } @Override - public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, JsonObject settings) { if(inQuestion.containsKey(player)) return; diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/RainingCatsAndCogsReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/RainingCatsAndCogsReward.java index ddcecce6..f429e553 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/RainingCatsAndCogsReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/RainingCatsAndCogsReward.java @@ -4,6 +4,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.entity.EntityType; import net.minecraft.entity.passive.TameableEntity; import net.minecraft.entity.player.PlayerEntity; @@ -25,7 +26,7 @@ public RainingCatsAndCogsReward() } @Override - public void trigger(final ServerWorld world, BlockPos position, PlayerEntity player, Map settings) + public void trigger(final ServerWorld world, BlockPos position, PlayerEntity player, JsonObject settings) { RewardsUtil.sendMessageToNearPlayers(world, position, 36, "It's raining Cats and dogs!"); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/SkyblockReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/SkyblockReward.java index 9ae161c2..7f88c6a5 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/SkyblockReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/SkyblockReward.java @@ -2,6 +2,7 @@ import chanceCubes.CCubesCore; import chanceCubes.util.RewardsUtil; +import com.google.gson.JsonObject; import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.block.ChestBlock; @@ -14,7 +15,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; import java.util.Random; public class SkyblockReward extends BaseCustomReward @@ -36,7 +36,7 @@ public SkyblockReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { if(world.isRemote()) return; diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/StreamerReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/StreamerReward.java index e7787991..39dd103c 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/StreamerReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/StreamerReward.java @@ -31,7 +31,6 @@ import java.net.Socket; import java.net.SocketException; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -137,7 +136,7 @@ public void update() winner = opt; RewardsUtil.sendMessageToPlayer(player, winner.display + " Has won!"); - winner.reward.trigger(world, player.getPosition(), player, new HashMap<>()); + winner.reward.trigger(world, player.getPosition(), player, new JsonObject()); disconnect(); } } @@ -285,7 +284,7 @@ public ChatInvadeReward(String channel) } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { try { diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/SurroundedReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/SurroundedReward.java index c7d5683d..d2d8a5f2 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/SurroundedReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/SurroundedReward.java @@ -1,6 +1,7 @@ package chanceCubes.rewards.defaultRewards; import chanceCubes.CCubesCore; +import com.google.gson.JsonObject; import net.minecraft.block.BlockState; import net.minecraft.entity.EntityType; import net.minecraft.entity.monster.EndermanEntity; @@ -8,8 +9,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class SurroundedReward extends BaseCustomReward { public SurroundedReward() @@ -18,7 +17,7 @@ public SurroundedReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { int px = (int) player.getPosX(); int pz = (int) player.getPosZ(); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/TableFlipReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/TableFlipReward.java index f091d39f..7e15a3aa 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/TableFlipReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/TableFlipReward.java @@ -4,6 +4,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.block.SlabBlock; import net.minecraft.block.StairsBlock; @@ -15,8 +16,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class TableFlipReward extends BaseCustomReward { public TableFlipReward() @@ -25,7 +24,7 @@ public TableFlipReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { RewardsUtil.sendMessageToAllPlayers(world, "(╯°□°)╯︵ ┻━┻)"); diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/TicTacToeReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/TicTacToeReward.java index 6e57f973..e9b8cd5f 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/TicTacToeReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/TicTacToeReward.java @@ -1,10 +1,13 @@ package chanceCubes.rewards.defaultRewards; import chanceCubes.CCubesCore; +import chanceCubes.util.GameTurn; +import chanceCubes.util.Point; import chanceCubes.util.RewardBlockCache; import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.player.PlayerEntity; @@ -15,7 +18,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; public class TicTacToeReward extends BaseCustomReward { @@ -25,7 +27,7 @@ public TicTacToeReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { int mistakeChance = super.getSettingAsInt(settings, "mistakeChance", 3, 0, 100); RewardsUtil.sendMessageToPlayer(player, "Lets play Tic-Tac-Toe!"); @@ -62,7 +64,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map getAvailableStates() return availablePoints; } - public void placeMove(int x, int y, int player) + public void placeMove(int x, int y, GameTurn turn) { - board[x][y] = player; + board[x][y] = turn == GameTurn.PLAYER ? 2 : 1; } - public int minimax(int depth, Turn turn, int mistakeChance) + public int minimax(int depth, GameTurn turn, int mistakeChance) { //Game status... if(hasCPUWon()) @@ -196,10 +187,10 @@ public int minimax(int depth, Turn turn, int mistakeChance) for(int i = 0; i < pointsAvailable.size(); ++i) { Point point = pointsAvailable.get(i); - if(turn == Turn.CPU) + placeMove(point.x, point.y, turn); + if(turn == GameTurn.CPU) { - placeMove(point.x, point.y, 1); - int currentScore = minimax(depth + 1, Turn.PLAYER, mistakeChance); + int currentScore = minimax(depth + 1, GameTurn.PLAYER, mistakeChance); max = Math.max(currentScore, max); if(currentScore >= 0 && depth == 0) @@ -214,10 +205,9 @@ public int minimax(int depth, Turn turn, int mistakeChance) if(i == pointsAvailable.size() - 1 && max < 0 && depth == 0) computersMove = point; } - else if(turn == Turn.PLAYER) + else if(turn == GameTurn.PLAYER) { - placeMove(point.x, point.y, 2); - int currentScore = minimax(depth + 1, Turn.CPU, mistakeChance); + int currentScore = minimax(depth + 1, GameTurn.CPU, mistakeChance); min = Math.min(currentScore, min); if(min == -1) { @@ -227,12 +217,7 @@ else if(turn == Turn.PLAYER) } board[point.x][point.y] = 0; } - return turn == Turn.CPU ? max : min; + return turn == GameTurn.CPU ? max : min; } } - - public enum Turn - { - CPU, PLAYER; - } } diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/TrollTNTReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/TrollTNTReward.java index 2c38d24a..0336fc77 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/TrollTNTReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/TrollTNTReward.java @@ -4,6 +4,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.entity.item.TNTEntity; import net.minecraft.entity.player.PlayerEntity; @@ -12,8 +13,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class TrollTNTReward extends BaseCustomReward { public TrollTNTReward() @@ -22,7 +21,7 @@ public TrollTNTReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, JsonObject settings) { for(int x = -1; x < 2; x++) { @@ -36,7 +35,7 @@ public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, world.addEntity(entitytntprimed); world.playSound(player, player.getPosX(), player.getPosY(), player.getPosZ(), SoundEvents.ENTITY_TNT_PRIMED, SoundCategory.BLOCKS, 1.0F, 1.0F); - int outOf = super.getSettingAsInt(settings, "real_out_of", 5, 1, 1000); + int outOf = super.getSettingAsInt(settings, "realOutOf", 5, 1, 1000); if(RewardsUtil.rand.nextInt(outOf) != 1) { diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/WaitForItReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/WaitForItReward.java index 88c81f86..61a635fe 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/WaitForItReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/WaitForItReward.java @@ -4,6 +4,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.entity.EntityType; import net.minecraft.entity.item.TNTEntity; @@ -15,8 +16,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class WaitForItReward extends BaseCustomReward { public WaitForItReward() @@ -25,12 +24,12 @@ public WaitForItReward() } @Override - public void trigger(final ServerWorld world, BlockPos pos, final PlayerEntity player, Map settings) + public void trigger(final ServerWorld world, BlockPos pos, final PlayerEntity player, JsonObject settings) { RewardsUtil.sendMessageToPlayer(player, "Wait for it......."); - int minDuration = super.getSettingAsInt(settings, "min_duration", 1000, 0, Integer.MAX_VALUE - 1); - int maxDuration = minDuration - super.getSettingAsInt(settings, "max_duration", 5000, 1, Integer.MAX_VALUE); + int minDuration = super.getSettingAsInt(settings, "minDuration", 1000, 0, Integer.MAX_VALUE - 1); + int maxDuration = minDuration - super.getSettingAsInt(settings, "maxDuration", 5000, 1, Integer.MAX_VALUE); if(maxDuration < 1) maxDuration = 1; diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/WheelSpinReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/WheelSpinReward.java index ef79853e..4d85d332 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/WheelSpinReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/WheelSpinReward.java @@ -1,7 +1,9 @@ package chanceCubes.rewards.defaultRewards; import chanceCubes.CCubesCore; +import chanceCubes.config.ConfigLoader; import chanceCubes.registry.global.GlobalCCRewardRegistry; +import chanceCubes.rewards.IChanceCubeReward; import chanceCubes.rewards.rewardparts.ItemPart; import chanceCubes.rewards.rewardparts.OffsetBlock; import chanceCubes.rewards.rewardtype.BlockRewardType; @@ -12,6 +14,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.HorizontalBlock; @@ -36,9 +39,7 @@ import net.minecraft.world.server.ServerWorld; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; public class WheelSpinReward extends BaseCustomReward { @@ -51,7 +52,7 @@ public class WheelSpinReward extends BaseCustomReward rewards.add(new RewardTrigger(new BaseCustomReward("tnt", 0) { @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { for(int i = 0; i < 5; i++) { @@ -66,7 +67,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { GlobalCCRewardRegistry.DEFAULT.triggerRandomReward(world, pos, player, 0); } @@ -74,7 +75,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { GlobalCCRewardRegistry.DEFAULT.triggerRandomReward(world, pos, player, -50); } @@ -82,7 +83,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { GlobalCCRewardRegistry.DEFAULT.triggerRandomReward(world, pos, player, 50); } @@ -97,7 +98,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { int xChange = ((world.rand.nextInt(50) + 20) + pos.getX()) - 35; int zChange = ((world.rand.nextInt(50) + 20) + pos.getZ()) - 35; @@ -129,7 +130,7 @@ public WheelSpinReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, JsonObject settings) { ArmorStandEntity armorStand = EntityType.ARMOR_STAND.create(world); armorStand.setPositionAndRotation(pos.getX() + 0.8, pos.getY() + 1.15, pos.getZ() + 1.5, 0, 0); @@ -299,7 +300,9 @@ public void callback() { armorStand.remove(); cache.restoreBlocks(player); - rewardsChosen[rewardPicked].reward.trigger(world, pos, player, new HashMap<>()); + IChanceCubeReward reward = rewardsChosen[rewardPicked].reward; + JsonObject settingsJson = ConfigLoader.getRewardSettings(reward.getName()); + reward.trigger(world, pos, player, settingsJson); } }); } diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/WitherReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/WitherReward.java index 3f0b13a0..7fd9f4ee 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/WitherReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/WitherReward.java @@ -4,6 +4,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.boss.WitherEntity; @@ -12,8 +13,6 @@ import net.minecraft.util.text.StringTextComponent; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class WitherReward extends BaseCustomReward { public WitherReward() @@ -22,9 +21,9 @@ public WitherReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, final PlayerEntity player, JsonObject settings) { - int realOutOf = super.getSettingAsInt(settings, "real_out_of", 10, 1, Integer.MAX_VALUE); + int realOutOf = super.getSettingAsInt(settings, "realOutOf", 10, 1, Integer.MAX_VALUE); final WitherEntity wither = EntityType.WITHER.create(world); wither.setLocationAndAngles(pos.getX() + 0.5D, pos.getY() + 1D, pos.getZ() + 1.5D, 90.0F, 0.0F); wither.renderYawOffset = 90.0F; diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/WolvesToCreepersReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/WolvesToCreepersReward.java index 90bc84d1..08737e12 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/WolvesToCreepersReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/WolvesToCreepersReward.java @@ -4,6 +4,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; @@ -16,7 +17,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; public class WolvesToCreepersReward extends BaseCustomReward { @@ -26,7 +26,7 @@ public WolvesToCreepersReward() } @Override - public void trigger(final ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(final ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { final List wolves = new ArrayList<>(); for(int i = 0; i < 10; i++) diff --git a/src/main/java/chanceCubes/rewards/defaultRewards/ZombieCopyCatReward.java b/src/main/java/chanceCubes/rewards/defaultRewards/ZombieCopyCatReward.java index 74a308e1..7b74a0e5 100644 --- a/src/main/java/chanceCubes/rewards/defaultRewards/ZombieCopyCatReward.java +++ b/src/main/java/chanceCubes/rewards/defaultRewards/ZombieCopyCatReward.java @@ -1,6 +1,7 @@ package chanceCubes.rewards.defaultRewards; import chanceCubes.CCubesCore; +import com.google.gson.JsonObject; import net.minecraft.entity.EntityType; import net.minecraft.entity.monster.ZombieEntity; import net.minecraft.entity.player.PlayerEntity; @@ -10,8 +11,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class ZombieCopyCatReward extends BaseCustomReward { public ZombieCopyCatReward() @@ -20,7 +19,7 @@ public ZombieCopyCatReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { ZombieEntity zombie = EntityType.ZOMBIE.create(world); zombie.setLocationAndAngles(pos.getX(), pos.getY(), pos.getZ(), 0, 0); diff --git a/src/main/java/chanceCubes/rewards/giantRewards/BeaconArenaReward.java b/src/main/java/chanceCubes/rewards/giantRewards/BeaconArenaReward.java index 89fbdfed..6ec254aa 100644 --- a/src/main/java/chanceCubes/rewards/giantRewards/BeaconArenaReward.java +++ b/src/main/java/chanceCubes/rewards/giantRewards/BeaconArenaReward.java @@ -4,6 +4,7 @@ import chanceCubes.rewards.defaultRewards.BaseCustomReward; import chanceCubes.rewards.rewardparts.OffsetBlock; import chanceCubes.util.RewardsUtil; +import com.google.gson.JsonObject; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -13,7 +14,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; public class BeaconArenaReward extends BaseCustomReward { @@ -30,7 +30,7 @@ public BeaconArenaReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { List blocks = new ArrayList<>(); spawnWall(blocks); diff --git a/src/main/java/chanceCubes/rewards/giantRewards/BioDomeReward.java b/src/main/java/chanceCubes/rewards/giantRewards/BioDomeReward.java index e8919856..fcffc310 100644 --- a/src/main/java/chanceCubes/rewards/giantRewards/BioDomeReward.java +++ b/src/main/java/chanceCubes/rewards/giantRewards/BioDomeReward.java @@ -3,12 +3,12 @@ import chanceCubes.CCubesCore; import chanceCubes.rewards.biodomeGen.BioDomeGen; import chanceCubes.rewards.defaultRewards.BaseCustomReward; +import com.google.gson.JsonObject; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; import java.util.Arrays; -import java.util.Map; public class BioDomeReward extends BaseCustomReward { @@ -18,10 +18,10 @@ public BioDomeReward() } @Override - public void trigger(final ServerWorld world, final BlockPos pos, PlayerEntity player, Map settings) + public void trigger(final ServerWorld world, final BlockPos pos, PlayerEntity player, JsonObject settings) { - String[] blacklist = super.getSettingAsStringList(settings, "biomes_blacklist", new String[0]); - boolean spawnEntities = super.getSettingAsBoolean(settings, "spawn_entities", true); + String[] blacklist = super.getSettingAsStringList(settings, "biomesBlacklist", new String[0]); + boolean spawnEntities = super.getSettingAsBoolean(settings, "spawnEntities", true); (new BioDomeGen(player, Arrays.asList(blacklist))).genRandomDome(pos, world, 25, spawnEntities); } } \ No newline at end of file diff --git a/src/main/java/chanceCubes/rewards/giantRewards/BlockInfectionReward.java b/src/main/java/chanceCubes/rewards/giantRewards/BlockInfectionReward.java index cfc3ff2d..fe5f5f72 100644 --- a/src/main/java/chanceCubes/rewards/giantRewards/BlockInfectionReward.java +++ b/src/main/java/chanceCubes/rewards/giantRewards/BlockInfectionReward.java @@ -4,6 +4,7 @@ import chanceCubes.rewards.defaultRewards.BaseCustomReward; import chanceCubes.rewards.rewardparts.OffsetBlock; import chanceCubes.util.RewardsUtil; +import com.google.gson.JsonObject; import net.minecraft.block.AirBlock; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -14,7 +15,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; public class BlockInfectionReward extends BaseCustomReward { @@ -33,7 +33,7 @@ public BlockInfectionReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { int delay = 0; int delayShorten = 20; diff --git a/src/main/java/chanceCubes/rewards/giantRewards/BlockThrowerReward.java b/src/main/java/chanceCubes/rewards/giantRewards/BlockThrowerReward.java index 808129cd..4c5df56f 100644 --- a/src/main/java/chanceCubes/rewards/giantRewards/BlockThrowerReward.java +++ b/src/main/java/chanceCubes/rewards/giantRewards/BlockThrowerReward.java @@ -6,6 +6,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.FlowingFluidBlock; @@ -27,7 +28,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; public class BlockThrowerReward extends BaseCustomReward { @@ -37,7 +37,7 @@ public BlockThrowerReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { for(int x = -20; x < 21; x++) { diff --git a/src/main/java/chanceCubes/rewards/giantRewards/ChunkFlipReward.java b/src/main/java/chanceCubes/rewards/giantRewards/ChunkFlipReward.java index 1f0c6bce..0b4b66f2 100644 --- a/src/main/java/chanceCubes/rewards/giantRewards/ChunkFlipReward.java +++ b/src/main/java/chanceCubes/rewards/giantRewards/ChunkFlipReward.java @@ -8,6 +8,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; @@ -16,8 +17,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class ChunkFlipReward extends BaseCustomReward { public ChunkFlipReward() @@ -26,7 +25,7 @@ public ChunkFlipReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { int z = (pos.getZ() >> 4) << 4; int x = (pos.getX() >> 4) << 4; diff --git a/src/main/java/chanceCubes/rewards/giantRewards/ChunkReverserReward.java b/src/main/java/chanceCubes/rewards/giantRewards/ChunkReverserReward.java index e8ad5379..5c3475c7 100644 --- a/src/main/java/chanceCubes/rewards/giantRewards/ChunkReverserReward.java +++ b/src/main/java/chanceCubes/rewards/giantRewards/ChunkReverserReward.java @@ -5,6 +5,7 @@ import chanceCubes.rewards.rewardparts.OffsetBlock; import chanceCubes.util.CustomEntry; import chanceCubes.util.RewardsUtil; +import com.google.gson.JsonObject; import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; @@ -13,7 +14,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; import java.util.Map.Entry; public class ChunkReverserReward extends BaseCustomReward @@ -49,7 +49,7 @@ public ChunkReverserReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { RewardsUtil.sendMessageToPlayer(player, "Initiating Block Inverter"); List blocks = new ArrayList<>(); diff --git a/src/main/java/chanceCubes/rewards/giantRewards/FireworkShowReward.java b/src/main/java/chanceCubes/rewards/giantRewards/FireworkShowReward.java index dc2c7b03..06dbec88 100644 --- a/src/main/java/chanceCubes/rewards/giantRewards/FireworkShowReward.java +++ b/src/main/java/chanceCubes/rewards/giantRewards/FireworkShowReward.java @@ -5,13 +5,12 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.projectile.FireworkRocketEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class FireworkShowReward extends BaseCustomReward { public FireworkShowReward() @@ -20,7 +19,7 @@ public FireworkShowReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { RewardsUtil.executeCommand(world, player, pos, "/time set 15000"); stage1(world, pos, player); diff --git a/src/main/java/chanceCubes/rewards/giantRewards/FloorIsLavaReward.java b/src/main/java/chanceCubes/rewards/giantRewards/FloorIsLavaReward.java index 62621a46..208a87fd 100644 --- a/src/main/java/chanceCubes/rewards/giantRewards/FloorIsLavaReward.java +++ b/src/main/java/chanceCubes/rewards/giantRewards/FloorIsLavaReward.java @@ -5,6 +5,7 @@ import chanceCubes.rewards.defaultRewards.BaseCustomReward; import chanceCubes.rewards.rewardparts.OffsetBlock; import chanceCubes.util.RewardsUtil; +import com.google.gson.JsonObject; import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; @@ -13,7 +14,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; public class FloorIsLavaReward extends BaseCustomReward { @@ -23,7 +23,7 @@ public FloorIsLavaReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { RewardsUtil.sendMessageToPlayer(player, "Quick! The Floor is lava!"); List blocks = new ArrayList<>(); diff --git a/src/main/java/chanceCubes/rewards/giantRewards/FluidSphereReward.java b/src/main/java/chanceCubes/rewards/giantRewards/FluidSphereReward.java index 6643de1b..edeea6a5 100644 --- a/src/main/java/chanceCubes/rewards/giantRewards/FluidSphereReward.java +++ b/src/main/java/chanceCubes/rewards/giantRewards/FluidSphereReward.java @@ -4,6 +4,7 @@ import chanceCubes.rewards.defaultRewards.BaseCustomReward; import chanceCubes.rewards.rewardparts.OffsetBlock; import chanceCubes.util.RewardsUtil; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.fluid.Fluid; @@ -12,7 +13,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; public class FluidSphereReward extends BaseCustomReward { @@ -22,7 +22,7 @@ public FluidSphereReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { List blocks = new ArrayList<>(); diff --git a/src/main/java/chanceCubes/rewards/giantRewards/MixedFluidSphereReward.java b/src/main/java/chanceCubes/rewards/giantRewards/MixedFluidSphereReward.java index 36645c9b..e9b4fc57 100644 --- a/src/main/java/chanceCubes/rewards/giantRewards/MixedFluidSphereReward.java +++ b/src/main/java/chanceCubes/rewards/giantRewards/MixedFluidSphereReward.java @@ -4,6 +4,7 @@ import chanceCubes.rewards.defaultRewards.BaseCustomReward; import chanceCubes.rewards.rewardparts.OffsetBlock; import chanceCubes.util.RewardsUtil; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.fluid.Fluid; @@ -12,7 +13,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; public class MixedFluidSphereReward extends BaseCustomReward { @@ -22,7 +22,7 @@ public MixedFluidSphereReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { List blocks = new ArrayList<>(); diff --git a/src/main/java/chanceCubes/rewards/giantRewards/OrePillarReward.java b/src/main/java/chanceCubes/rewards/giantRewards/OrePillarReward.java index 4d1c9575..7e0fe903 100644 --- a/src/main/java/chanceCubes/rewards/giantRewards/OrePillarReward.java +++ b/src/main/java/chanceCubes/rewards/giantRewards/OrePillarReward.java @@ -4,6 +4,7 @@ import chanceCubes.rewards.defaultRewards.BaseCustomReward; import chanceCubes.rewards.rewardparts.OffsetBlock; import chanceCubes.util.RewardsUtil; +import com.google.gson.JsonObject; import net.minecraft.block.Block; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.math.BlockPos; @@ -12,7 +13,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Map; public class OrePillarReward extends BaseCustomReward { @@ -22,10 +22,10 @@ public OrePillarReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { - List whiteList = Arrays.asList(super.getSettingAsStringList(settings, "white_list", new String[0])); - List blackList = Arrays.asList(super.getSettingAsStringList(settings, "black_list", new String[0])); + List whiteList = Arrays.asList(super.getSettingAsStringList(settings, "whiteList", new String[0])); + List blackList = Arrays.asList(super.getSettingAsStringList(settings, "blackList", new String[0])); List blocks = new ArrayList<>(); diff --git a/src/main/java/chanceCubes/rewards/giantRewards/OreSphereReward.java b/src/main/java/chanceCubes/rewards/giantRewards/OreSphereReward.java index 9c8b5810..f21ff02f 100644 --- a/src/main/java/chanceCubes/rewards/giantRewards/OreSphereReward.java +++ b/src/main/java/chanceCubes/rewards/giantRewards/OreSphereReward.java @@ -4,6 +4,7 @@ import chanceCubes.rewards.defaultRewards.BaseCustomReward; import chanceCubes.rewards.rewardparts.OffsetBlock; import chanceCubes.util.RewardsUtil; +import com.google.gson.JsonObject; import net.minecraft.block.Block; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.math.BlockPos; @@ -12,7 +13,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Map; public class OreSphereReward extends BaseCustomReward { @@ -22,11 +22,11 @@ public OreSphereReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { List blocks = new ArrayList<>(); - List whiteList = Arrays.asList(super.getSettingAsStringList(settings, "white_list", new String[0])); + List whiteList = Arrays.asList(super.getSettingAsStringList(settings, "whiteList", new String[0])); Block ore; if(whiteList.size() > 0) @@ -35,7 +35,7 @@ public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map blackList = Arrays.asList(super.getSettingAsStringList(settings, "black_list", new String[0])); + List blackList = Arrays.asList(super.getSettingAsStringList(settings, "blackList", new String[0])); ore = RewardsUtil.getRandomOre(blackList); } diff --git a/src/main/java/chanceCubes/rewards/giantRewards/PotionsReward.java b/src/main/java/chanceCubes/rewards/giantRewards/PotionsReward.java index d196e708..6ef6ab0a 100644 --- a/src/main/java/chanceCubes/rewards/giantRewards/PotionsReward.java +++ b/src/main/java/chanceCubes/rewards/giantRewards/PotionsReward.java @@ -5,6 +5,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.projectile.PotionEntity; import net.minecraft.item.ItemStack; @@ -15,8 +16,6 @@ import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class PotionsReward extends BaseCustomReward { private PotionEntity pot; @@ -27,7 +26,7 @@ public PotionsReward() } @Override - public void trigger(final ServerWorld world, final BlockPos pos, final PlayerEntity player, Map settings) + public void trigger(final ServerWorld world, final BlockPos pos, final PlayerEntity player, JsonObject settings) { RewardsUtil.sendMessageToPlayer(player, new TranslationTextComponent("chancecubes.reward.raining_potions")); throwPoitonCircle(world, pos, player); diff --git a/src/main/java/chanceCubes/rewards/giantRewards/RandomExplosionReward.java b/src/main/java/chanceCubes/rewards/giantRewards/RandomExplosionReward.java index 23f4e445..0b6dcafc 100644 --- a/src/main/java/chanceCubes/rewards/giantRewards/RandomExplosionReward.java +++ b/src/main/java/chanceCubes/rewards/giantRewards/RandomExplosionReward.java @@ -5,6 +5,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.Blocks; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; @@ -28,7 +29,7 @@ public RandomExplosionReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { world.playSound(null, pos.getX(), pos.getY(), pos.getZ(), SoundEvents.AMBIENT_CAVE, SoundCategory.BLOCKS, 1f, 1f); Scheduler.scheduleTask(new Task("Random Explosion", 300, 2) diff --git a/src/main/java/chanceCubes/rewards/giantRewards/SphereSnakeReward.java b/src/main/java/chanceCubes/rewards/giantRewards/SphereSnakeReward.java index 45154ba7..3bde1356 100644 --- a/src/main/java/chanceCubes/rewards/giantRewards/SphereSnakeReward.java +++ b/src/main/java/chanceCubes/rewards/giantRewards/SphereSnakeReward.java @@ -5,14 +5,13 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class SphereSnakeReward extends BaseCustomReward { @@ -29,7 +28,7 @@ public SphereSnakeReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { BlockState state = whitelist[RewardsUtil.rand.nextInt(whitelist.length)]; int[] posChange = {0, 0, 0}; diff --git a/src/main/java/chanceCubes/rewards/giantRewards/TNTSlingReward.java b/src/main/java/chanceCubes/rewards/giantRewards/TNTSlingReward.java index 21259967..126fe808 100644 --- a/src/main/java/chanceCubes/rewards/giantRewards/TNTSlingReward.java +++ b/src/main/java/chanceCubes/rewards/giantRewards/TNTSlingReward.java @@ -4,13 +4,12 @@ import chanceCubes.rewards.defaultRewards.BaseCustomReward; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.entity.item.TNTEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class TNTSlingReward extends BaseCustomReward { public TNTSlingReward() @@ -19,7 +18,7 @@ public TNTSlingReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { Scheduler.scheduleTask(new Task("Throw TNT", 250, 10) { diff --git a/src/main/java/chanceCubes/rewards/giantRewards/ThrowablesReward.java b/src/main/java/chanceCubes/rewards/giantRewards/ThrowablesReward.java index 3c209255..9ed71d16 100644 --- a/src/main/java/chanceCubes/rewards/giantRewards/ThrowablesReward.java +++ b/src/main/java/chanceCubes/rewards/giantRewards/ThrowablesReward.java @@ -5,6 +5,7 @@ import chanceCubes.util.RewardsUtil; import chanceCubes.util.Scheduler; import chanceCubes.util.Task; +import com.google.gson.JsonObject; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.item.TNTEntity; @@ -13,8 +14,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; -import java.util.Map; - public class ThrowablesReward extends BaseCustomReward { public ThrowablesReward() @@ -23,7 +22,7 @@ public ThrowablesReward() } @Override - public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, Map settings) + public void trigger(ServerWorld world, BlockPos pos, PlayerEntity player, JsonObject settings) { Scheduler.scheduleTask(new Task("Throw TNT", 250, 5) { diff --git a/src/main/java/chanceCubes/util/GameTurn.java b/src/main/java/chanceCubes/util/GameTurn.java new file mode 100644 index 00000000..de1906b6 --- /dev/null +++ b/src/main/java/chanceCubes/util/GameTurn.java @@ -0,0 +1,6 @@ +package chanceCubes.util; + +public enum GameTurn +{ + CPU, PLAYER; +} diff --git a/src/main/java/chanceCubes/util/HTTPUtil.java b/src/main/java/chanceCubes/util/HTTPUtil.java index 5d413afb..bbaba63b 100644 --- a/src/main/java/chanceCubes/util/HTTPUtil.java +++ b/src/main/java/chanceCubes/util/HTTPUtil.java @@ -15,7 +15,6 @@ public class HTTPUtil { public static final String API_URL = "https://api.theturkey.dev/"; - //public static final String API_URL = "https://api.test.local/"; private static JsonParser json = new JsonParser(); @SafeVarargs diff --git a/src/main/java/chanceCubes/util/Point.java b/src/main/java/chanceCubes/util/Point.java new file mode 100644 index 00000000..edc7a3f3 --- /dev/null +++ b/src/main/java/chanceCubes/util/Point.java @@ -0,0 +1,18 @@ +package chanceCubes.util; + +public class Point +{ + public int x, y; + + public Point(int x, int y) + { + this.x = x; + this.y = y; + } + + @Override + public String toString() + { + return "(" + x + "," + y + ")"; + } +} \ No newline at end of file diff --git a/src/main/java/chanceCubes/util/RewardBlockCache.java b/src/main/java/chanceCubes/util/RewardBlockCache.java index 8e6c6375..6bd58e77 100644 --- a/src/main/java/chanceCubes/util/RewardBlockCache.java +++ b/src/main/java/chanceCubes/util/RewardBlockCache.java @@ -1,11 +1,12 @@ package chanceCubes.util; +import chanceCubes.config.CCubesSettings; import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; import net.minecraft.entity.Entity; import net.minecraft.inventory.IInventory; import net.minecraft.nbt.CompoundNBT; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -19,7 +20,6 @@ public class RewardBlockCache protected List storedBlocks = new ArrayList<>(); protected Map storedTE = new HashMap<>(); - private BlockPos origin; private BlockPos playerloc; private World world; @@ -69,15 +69,12 @@ public void cacheBlock(BlockPos offset, BlockState newState, int update) public void restoreBlocks(Entity player) { - this.restoreBlocks(player, false); - } - - public void restoreBlocks(Entity player, boolean replaceChanged) - { + List blockedRestoreBlocks = CCubesSettings.blockRestoreBlacklist.get(); for(StoredBlockData storedBlock : storedBlocks) { BlockPos worldPos = origin.add(storedBlock.pos); - if(world.getBlockState(worldPos).getBlock().equals(storedBlock.placedState.getBlock()) || world.getBlockState(worldPos).getBlock().equals(Blocks.AIR) || replaceChanged) + ResourceLocation res = world.getBlockState(worldPos).getBlock().getRegistryName(); + if(res == null || !blockedRestoreBlocks.contains(res.toString())) { RewardsUtil.placeBlock(storedBlock.oldState, world, worldPos, true); TileEntity tile = world.getTileEntity(worldPos);