diff --git a/src/main/java/de/piinguiin/lootbox/LootboxPlugin.java b/src/main/java/de/piinguiin/lootbox/LootboxPlugin.java index 8afe90b..9b1ebf3 100644 --- a/src/main/java/de/piinguiin/lootbox/LootboxPlugin.java +++ b/src/main/java/de/piinguiin/lootbox/LootboxPlugin.java @@ -1,10 +1,14 @@ package de.piinguiin.lootbox; +import de.piinguiin.lootbox.io.FileManager; +import de.piinguiin.lootbox.types.LootboxManager; import org.bukkit.plugin.java.JavaPlugin; public class LootboxPlugin extends JavaPlugin { private static LootboxPlugin plugin; + private static FileManager fileManager; + private static LootboxManager lootboxManager; @Override public void onEnable() { @@ -14,6 +18,8 @@ public void onEnable() { private void init() { plugin = this; + fileManager = new FileManager(); + lootboxManager = new LootboxManager(); log("finished initialization."); } @@ -21,6 +27,14 @@ public static LootboxPlugin getPlugin() { return plugin; } + public static FileManager getFileManager() { + return fileManager; + } + + public static LootboxManager getLootboxManager() { + return lootboxManager; + } + private static void log(String message) { plugin.getLogger().info(message); } diff --git a/src/main/java/de/piinguiin/lootbox/animation/CosmicAnimation.java b/src/main/java/de/piinguiin/lootbox/animation/CosmicAnimation.java deleted file mode 100644 index 3024dd4..0000000 --- a/src/main/java/de/piinguiin/lootbox/animation/CosmicAnimation.java +++ /dev/null @@ -1,11 +0,0 @@ -package de.piinguiin.lootbox.animation; - -import de.piinguiin.lootbox.impl.Animation; - -public class CosmicAnimation extends Animation { - - @Override - public void tick() { - - } -} diff --git a/src/main/java/de/piinguiin/lootbox/animation/DefaultAnimation.java b/src/main/java/de/piinguiin/lootbox/animation/DefaultAnimation.java deleted file mode 100644 index 8d1f319..0000000 --- a/src/main/java/de/piinguiin/lootbox/animation/DefaultAnimation.java +++ /dev/null @@ -1,11 +0,0 @@ -package de.piinguiin.lootbox.animation; - -import de.piinguiin.lootbox.impl.Animation; - -public class DefaultAnimation extends Animation { - - @Override - public void tick() { - - } -} diff --git a/src/main/java/de/piinguiin/lootbox/animation/GalacticAnimation.java b/src/main/java/de/piinguiin/lootbox/animation/GalacticAnimation.java deleted file mode 100644 index 5155ecb..0000000 --- a/src/main/java/de/piinguiin/lootbox/animation/GalacticAnimation.java +++ /dev/null @@ -1,11 +0,0 @@ -package de.piinguiin.lootbox.animation; - -import de.piinguiin.lootbox.impl.Animation; - -public class GalacticAnimation extends Animation { - - @Override - public void tick() { - - } -} diff --git a/src/main/java/de/piinguiin/lootbox/animation/MoonAnimation.java b/src/main/java/de/piinguiin/lootbox/animation/MoonAnimation.java deleted file mode 100644 index 66e7aa4..0000000 --- a/src/main/java/de/piinguiin/lootbox/animation/MoonAnimation.java +++ /dev/null @@ -1,11 +0,0 @@ -package de.piinguiin.lootbox.animation; - -import de.piinguiin.lootbox.impl.Animation; - -public class MoonAnimation extends Animation { - - @Override - public void tick() { - - } -} diff --git a/src/main/java/de/piinguiin/lootbox/animations/combined/CosmicCombinedAnimation.java b/src/main/java/de/piinguiin/lootbox/animations/combined/CosmicCombinedAnimation.java new file mode 100644 index 0000000..c35c0cb --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/animations/combined/CosmicCombinedAnimation.java @@ -0,0 +1,13 @@ +package de.piinguiin.lootbox.animations.combined; + +import de.piinguiin.lootbox.api.combined.AbstractCombinedAnimation; + +import java.util.Collections; + +public class CosmicCombinedAnimation extends AbstractCombinedAnimation { + + public CosmicCombinedAnimation() { + this(Collections.unmodifiableList(/*falling | explosion | head rotation | give*/)); + } + +} \ No newline at end of file diff --git a/src/main/java/de/piinguiin/lootbox/animations/combined/GalacticCombinedAnimation.java b/src/main/java/de/piinguiin/lootbox/animations/combined/GalacticCombinedAnimation.java new file mode 100644 index 0000000..a39f03e --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/animations/combined/GalacticCombinedAnimation.java @@ -0,0 +1,13 @@ +package de.piinguiin.lootbox.animations.combined; + +import de.piinguiin.lootbox.api.combined.AbstractCombinedAnimation; + +import java.util.Collections; + +public class GalacticCombinedAnimation extends AbstractCombinedAnimation { + + public GalacticCombinedAnimation() { + this(Collections.unmodifiableList(/*falling | explosion | head rotation | give*/)); + } + +} \ No newline at end of file diff --git a/src/main/java/de/piinguiin/lootbox/animations/combined/MoonCombinedAnimation.java b/src/main/java/de/piinguiin/lootbox/animations/combined/MoonCombinedAnimation.java new file mode 100644 index 0000000..5f4a454 --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/animations/combined/MoonCombinedAnimation.java @@ -0,0 +1,14 @@ +package de.piinguiin.lootbox.animations.combined; + +import de.piinguiin.lootbox.animations.falling.DefaultFallingAnimation; +import de.piinguiin.lootbox.api.combined.AbstractCombinedAnimation; + +import java.util.Arrays; + +public final class MoonCombinedAnimation extends AbstractCombinedAnimation { + + public MoonCombinedAnimation() { + super(Arrays.asList(new DefaultFallingAnimation())); + } + +} diff --git a/src/main/java/de/piinguiin/lootbox/animations/explosion/DefaultExplosionAnimation.java b/src/main/java/de/piinguiin/lootbox/animations/explosion/DefaultExplosionAnimation.java new file mode 100644 index 0000000..0035f4a --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/animations/explosion/DefaultExplosionAnimation.java @@ -0,0 +1,17 @@ +package de.piinguiin.lootbox.animations.explosion; + +import de.piinguiin.lootbox.api.AbstractAnimation; +import org.bukkit.Location; + +public class DefaultExplosionAnimation extends AbstractAnimation implements ExplosionAnimation { + + @Override + public void tick() { + + } + + @Override + public void start(final Location location) { + + } +} diff --git a/src/main/java/de/piinguiin/lootbox/animations/explosion/ExplosionAnimation.java b/src/main/java/de/piinguiin/lootbox/animations/explosion/ExplosionAnimation.java new file mode 100644 index 0000000..9940745 --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/animations/explosion/ExplosionAnimation.java @@ -0,0 +1,9 @@ +package de.piinguiin.lootbox.animations.explosion; + +import de.piinguiin.lootbox.api.Animation; + +public interface ExplosionAnimation extends Animation { + + +} + diff --git a/src/main/java/de/piinguiin/lootbox/animations/falling/DefaultFallingAnimation.java b/src/main/java/de/piinguiin/lootbox/animations/falling/DefaultFallingAnimation.java new file mode 100644 index 0000000..d30af28 --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/animations/falling/DefaultFallingAnimation.java @@ -0,0 +1,27 @@ +package de.piinguiin.lootbox.animations.falling; + +import de.piinguiin.lootbox.api.AbstractAnimation; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.BlockFace; + +public final class DefaultFallingAnimation extends AbstractAnimation implements FallingAnimation { + + @Override + public void tick() { + if (isAirDownwards()) { + //TODO spawn particle + currentLocation.subtract(0, 0.2, 0); //TODO configure substraction vector + } else finish(); + } + + @Override + public void start(final Location location) { + currentLocation = location; + } + + private boolean isAirDownwards() { + return currentLocation.getBlock().getRelative(BlockFace.DOWN).getType().equals(Material.AIR); + } + +} diff --git a/src/main/java/de/piinguiin/lootbox/animations/falling/FallingAnimation.java b/src/main/java/de/piinguiin/lootbox/animations/falling/FallingAnimation.java new file mode 100644 index 0000000..bcacf7d --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/animations/falling/FallingAnimation.java @@ -0,0 +1,8 @@ +package de.piinguiin.lootbox.animations.falling; + +import de.piinguiin.lootbox.api.Animation; + +public interface FallingAnimation extends Animation { + + +} diff --git a/src/main/java/de/piinguiin/lootbox/animations/giving/DefaultGivingAnimation.java b/src/main/java/de/piinguiin/lootbox/animations/giving/DefaultGivingAnimation.java new file mode 100644 index 0000000..aae8016 --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/animations/giving/DefaultGivingAnimation.java @@ -0,0 +1,6 @@ +package de.piinguiin.lootbox.animations.giving; + +public class DefaultGivingAnimation implements GivingAnimation { + + +} diff --git a/src/main/java/de/piinguiin/lootbox/animations/giving/GivingAnimation.java b/src/main/java/de/piinguiin/lootbox/animations/giving/GivingAnimation.java new file mode 100644 index 0000000..ec0171e --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/animations/giving/GivingAnimation.java @@ -0,0 +1,4 @@ +package de.piinguiin.lootbox.animations.giving; + +public interface GivingAnimation { +} diff --git a/src/main/java/de/piinguiin/lootbox/animations/headspin/DefaultHeadSpinAnimation.java b/src/main/java/de/piinguiin/lootbox/animations/headspin/DefaultHeadSpinAnimation.java new file mode 100644 index 0000000..a4a5825 --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/animations/headspin/DefaultHeadSpinAnimation.java @@ -0,0 +1,4 @@ +package de.piinguiin.lootbox.animations.headspin; + +public class DefaultHeadSpinAnimation implements HeadSpinAnimation { +} diff --git a/src/main/java/de/piinguiin/lootbox/animations/headspin/HeadSpinAnimation.java b/src/main/java/de/piinguiin/lootbox/animations/headspin/HeadSpinAnimation.java new file mode 100644 index 0000000..2ea7181 --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/animations/headspin/HeadSpinAnimation.java @@ -0,0 +1,4 @@ +package de.piinguiin.lootbox.animations.headspin; + +public interface HeadSpinAnimation { +} diff --git a/src/main/java/de/piinguiin/lootbox/api/AbstractAnimation.java b/src/main/java/de/piinguiin/lootbox/api/AbstractAnimation.java new file mode 100644 index 0000000..3929e01 --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/api/AbstractAnimation.java @@ -0,0 +1,26 @@ +package de.piinguiin.lootbox.api; + +import org.bukkit.Location; + +public abstract class AbstractAnimation implements Animation { + + protected Location currentLocation; + @SuppressWarnings("WeakerAccess") + protected boolean finished; + + @Override + public void finish() { + finished = true; + } + + @Override + public final boolean isFinished() { + return finished; + } + + @Override + public final Location getCurrentLocation() { + return currentLocation; + } + +} diff --git a/src/main/java/de/piinguiin/lootbox/api/Animation.java b/src/main/java/de/piinguiin/lootbox/api/Animation.java new file mode 100644 index 0000000..7f8c94b --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/api/Animation.java @@ -0,0 +1,16 @@ +package de.piinguiin.lootbox.api; + +import de.piinguiin.lootbox.api.finishable.Finishable; +import org.bukkit.Location; + +public interface Animation extends Finishable { + + void tick(); + + void start(Location location); + + boolean isFinished(); + + Location getCurrentLocation(); + +} diff --git a/src/main/java/de/piinguiin/lootbox/api/IAnimation.java b/src/main/java/de/piinguiin/lootbox/api/IAnimation.java deleted file mode 100644 index e8eb51e..0000000 --- a/src/main/java/de/piinguiin/lootbox/api/IAnimation.java +++ /dev/null @@ -1,7 +0,0 @@ -package de.piinguiin.lootbox.api; - -public interface IAnimation { - - public void tick(); - -} diff --git a/src/main/java/de/piinguiin/lootbox/api/ILootbox.java b/src/main/java/de/piinguiin/lootbox/api/Lootbox.java similarity index 77% rename from src/main/java/de/piinguiin/lootbox/api/ILootbox.java rename to src/main/java/de/piinguiin/lootbox/api/Lootbox.java index 851f6d1..0678535 100644 --- a/src/main/java/de/piinguiin/lootbox/api/ILootbox.java +++ b/src/main/java/de/piinguiin/lootbox/api/Lootbox.java @@ -3,13 +3,14 @@ import de.piinguiin.lootbox.particle.ParticleEffect; import de.piinguiin.lootbox.prizes.LootboxPrize; import org.bukkit.Color; +import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import java.util.List; -public interface ILootbox { +public interface Lootbox { - String getName(); + String getId(); String getDisplayName(); @@ -26,4 +27,7 @@ public interface ILootbox { int getBuyingPrice(); boolean isMergable(); + + void startAnimation(Player player, Lootbox lootbox); + } diff --git a/src/main/java/de/piinguiin/lootbox/api/combined/AbstractCombinedAnimation.java b/src/main/java/de/piinguiin/lootbox/api/combined/AbstractCombinedAnimation.java new file mode 100644 index 0000000..f34716a --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/api/combined/AbstractCombinedAnimation.java @@ -0,0 +1,47 @@ +package de.piinguiin.lootbox.api.combined; + +import de.piinguiin.lootbox.api.AbstractAnimation; +import de.piinguiin.lootbox.api.Animation; +import org.bukkit.Location; + +import java.util.List; + +public abstract class AbstractCombinedAnimation extends AbstractAnimation implements CombinedAnimation { + + private final List animations; + private int currentAnimationPosition; + + public AbstractCombinedAnimation(final List animations) { + this.animations = animations; + this.currentAnimationPosition = 0; + } + + @Override + public final void start(final Location location) { + startNext(location); + } + + @Override + public final void tick() { + if (currentAnimationPosition < animations.size()) { + final Animation currentAnimation = animations.get(currentAnimationPosition); + if (currentAnimation.isFinished()) { + currentLocation = currentAnimation.getCurrentLocation(); + startNext(currentLocation); + } + } else finish(); + } + + @Override + public final List getAnimations() { + return animations; + } + + private void startNext(final Location location) { + final Animation nextAnimation = animations.get(currentAnimationPosition); + nextAnimation.start(location); + this.currentAnimationPosition++; + } + + +} diff --git a/src/main/java/de/piinguiin/lootbox/api/combined/CombinedAnimation.java b/src/main/java/de/piinguiin/lootbox/api/combined/CombinedAnimation.java new file mode 100644 index 0000000..6d6875c --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/api/combined/CombinedAnimation.java @@ -0,0 +1,11 @@ +package de.piinguiin.lootbox.api.combined; + +import de.piinguiin.lootbox.api.Animation; + +import java.util.List; + +public interface CombinedAnimation extends Animation { + + List getAnimations(); + +} diff --git a/src/main/java/de/piinguiin/lootbox/api/finishable/DefaultFinishable.java b/src/main/java/de/piinguiin/lootbox/api/finishable/DefaultFinishable.java new file mode 100644 index 0000000..7dd845b --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/api/finishable/DefaultFinishable.java @@ -0,0 +1,12 @@ +package de.piinguiin.lootbox.api.finishable; + +public interface DefaultFinishable extends Finishable { + + @Override + default void finish() { + + //TODO explosion and head place + + } + +} diff --git a/src/main/java/de/piinguiin/lootbox/api/finishable/Finishable.java b/src/main/java/de/piinguiin/lootbox/api/finishable/Finishable.java new file mode 100644 index 0000000..996413d --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/api/finishable/Finishable.java @@ -0,0 +1,7 @@ +package de.piinguiin.lootbox.api.finishable; + +public interface Finishable { + + void finish(); + +} diff --git a/src/main/java/de/piinguiin/lootbox/factories/AnimationFactory.java b/src/main/java/de/piinguiin/lootbox/factories/AnimationFactory.java index e1d7893..e873009 100644 --- a/src/main/java/de/piinguiin/lootbox/factories/AnimationFactory.java +++ b/src/main/java/de/piinguiin/lootbox/factories/AnimationFactory.java @@ -1,32 +1,34 @@ package de.piinguiin.lootbox.factories; -import de.piinguiin.lootbox.animation.CosmicAnimation; -import de.piinguiin.lootbox.animation.DefaultAnimation; -import de.piinguiin.lootbox.animation.GalacticAnimation; -import de.piinguiin.lootbox.animation.MoonAnimation; -import de.piinguiin.lootbox.api.IAnimation; -import de.piinguiin.lootbox.api.ILootbox; + +import de.piinguiin.lootbox.animations.combined.CosmicCombinedAnimation; +import de.piinguiin.lootbox.animations.combined.GalacticCombinedAnimation; +import de.piinguiin.lootbox.animations.combined.MoonCombinedAnimation; +import de.piinguiin.lootbox.api.Animation; +import de.piinguiin.lootbox.api.Lootbox; import de.piinguiin.lootbox.types.CosmicLootbox; import de.piinguiin.lootbox.types.GalacticLootbox; import de.piinguiin.lootbox.types.MoonLootbox; +import org.jetbrains.annotations.Nullable; public class AnimationFactory { - public static IAnimation getAnimationFromLootbox(ILootbox lootbox){ + @Nullable + public static Animation getAnimationFromLootbox(final Lootbox lootbox) { - if(lootbox instanceof MoonLootbox){ - return new MoonAnimation(); + if (lootbox instanceof MoonLootbox) { + return new MoonCombinedAnimation(); } - if(lootbox instanceof GalacticLootbox){ - return new GalacticAnimation(); + if (lootbox instanceof GalacticLootbox) { + return new GalacticCombinedAnimation(); } - if(lootbox instanceof CosmicLootbox){ - return new CosmicAnimation(); + if (lootbox instanceof CosmicLootbox) { + return new CosmicCombinedAnimation(); } - return new DefaultAnimation(); + return null; } } diff --git a/src/main/java/de/piinguiin/lootbox/factories/LootboxFactory.java b/src/main/java/de/piinguiin/lootbox/factories/LootboxFactory.java index 8d71e1f..e170dcf 100644 --- a/src/main/java/de/piinguiin/lootbox/factories/LootboxFactory.java +++ b/src/main/java/de/piinguiin/lootbox/factories/LootboxFactory.java @@ -1,12 +1,11 @@ package de.piinguiin.lootbox.factories; -import de.piinguiin.lootbox.api.ILootbox; -import de.piinguiin.lootbox.types.MoonLootbox; +import de.piinguiin.lootbox.api.Lootbox; public class LootboxFactory { - public static ILootbox getLootboxFromBSON(){ - return new MoonLootbox(); + public static Lootbox getLootboxFromGSON(String id){ + return null; } } diff --git a/src/main/java/de/piinguiin/lootbox/impl/Animation.java b/src/main/java/de/piinguiin/lootbox/impl/Animation.java deleted file mode 100644 index 9dc0a36..0000000 --- a/src/main/java/de/piinguiin/lootbox/impl/Animation.java +++ /dev/null @@ -1,8 +0,0 @@ -package de.piinguiin.lootbox.impl; - -import de.piinguiin.lootbox.api.IAnimation; - -public abstract class Animation implements IAnimation { - - public abstract void tick(); -} diff --git a/src/main/java/de/piinguiin/lootbox/impl/BukkitTaskAnimation.java b/src/main/java/de/piinguiin/lootbox/impl/BukkitTaskAnimation.java new file mode 100644 index 0000000..28a01c4 --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/impl/BukkitTaskAnimation.java @@ -0,0 +1,44 @@ +package de.piinguiin.lootbox.impl; + +import de.piinguiin.lootbox.LootboxPlugin; +import de.piinguiin.lootbox.api.Animation; +import org.bukkit.Location; +import org.bukkit.scheduler.BukkitRunnable; +import org.bukkit.scheduler.BukkitTask; + +public abstract class BukkitTaskAnimation implements Animation { + + protected final Location startLocation; + protected int ticks; + private BukkitTask task; + + + public BukkitTaskAnimation(final int ticks, final Location startLocation) { + this.ticks = ticks; + this.startLocation = startLocation.clone(); + } + + + @Override + public final void start(final Location location) { + + task = new BukkitRunnable() { + + @Override + public void run() { + + if (ticks > 0) { + tick(); + ticks--; + } else finish(); + + } + }.runTaskTimer(LootboxPlugin.getPlugin(), 0, 5); + + } + + @Override + public void finish() { + task.cancel(); + } +} diff --git a/src/main/java/de/piinguiin/lootbox/impl/Lootbox.java b/src/main/java/de/piinguiin/lootbox/impl/Lootbox.java index 5d066b2..f6628c5 100644 --- a/src/main/java/de/piinguiin/lootbox/impl/Lootbox.java +++ b/src/main/java/de/piinguiin/lootbox/impl/Lootbox.java @@ -1,27 +1,29 @@ package de.piinguiin.lootbox.impl; -import de.piinguiin.lootbox.api.ILootbox; +import de.piinguiin.lootbox.api.Animation; +import de.piinguiin.lootbox.factories.AnimationFactory; import de.piinguiin.lootbox.particle.ParticleEffect; import de.piinguiin.lootbox.prizes.LootboxPrize; import de.piinguiin.lootbox.utils.item.SkullMaker; import org.bukkit.Color; +import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import java.util.List; -public abstract class Lootbox implements ILootbox { +public class Lootbox implements de.piinguiin.lootbox.api.Lootbox { - String name,displayName,skinUrl; - List particleEffects; - List fallingColors; - List prizes; - ItemStack head; - int buyPrice; - boolean mergable; + private String id,displayName,skinUrl; + private List particleEffects; + private List fallingColors; + private List prizes; + private ItemStack head; + private int buyPrice; + private boolean mergable; - public Lootbox(String name, String displayName, String skinUrl, List particleEffects, + public Lootbox(String id, String displayName, String skinUrl, List particleEffects, List fallingColors, List prizes, int buyPrice, boolean mergable) { - this.name = name; + this.id = id; this.displayName = displayName; this.skinUrl = skinUrl; this.particleEffects = particleEffects; @@ -38,8 +40,8 @@ private void buildHeadItem(){ } @Override - public String getName() { - return name; + public String getId() { + return id; } @Override @@ -81,4 +83,13 @@ public int getBuyingPrice() { public boolean isMergable() { return mergable; } + + @Override + public void startAnimation(Player player, de.piinguiin.lootbox.api.Lootbox lootbox) { + + Animation animation = AnimationFactory.getAnimationFromLootbox(lootbox); + + + + } } diff --git a/src/main/java/de/piinguiin/lootbox/io/FileManager.java b/src/main/java/de/piinguiin/lootbox/io/FileManager.java new file mode 100644 index 0000000..a4fe49c --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/io/FileManager.java @@ -0,0 +1,7 @@ +package de.piinguiin.lootbox.io; + +public class FileManager { + + + +} diff --git a/src/main/java/de/piinguiin/lootbox/io/files/JsonFileBase.java b/src/main/java/de/piinguiin/lootbox/io/files/JsonFileBase.java new file mode 100644 index 0000000..d2a4ebc --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/io/files/JsonFileBase.java @@ -0,0 +1,4 @@ +package de.piinguiin.lootbox.io.files; + +public class JsonFileBase { +} diff --git a/src/main/java/de/piinguiin/lootbox/io/files/YamlFileBase.java b/src/main/java/de/piinguiin/lootbox/io/files/YamlFileBase.java new file mode 100644 index 0000000..4a23edc --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/io/files/YamlFileBase.java @@ -0,0 +1,4 @@ +package de.piinguiin.lootbox.io.files; + +public class YamlFileBase { +} diff --git a/src/main/java/de/piinguiin/lootbox/types/CosmicLootbox.java b/src/main/java/de/piinguiin/lootbox/types/CosmicLootbox.java index 9ffe089..869cc6c 100644 --- a/src/main/java/de/piinguiin/lootbox/types/CosmicLootbox.java +++ b/src/main/java/de/piinguiin/lootbox/types/CosmicLootbox.java @@ -10,14 +10,14 @@ public class CosmicLootbox extends Lootbox { - public CosmicLootbox(String name, String displayName, String skinUrl, List particleEffects, + public CosmicLootbox(String id, String displayName, String skinUrl, List particleEffects, List fallingColors, List prizes, int buyPrice, boolean mergable) { - super(name, displayName, skinUrl, particleEffects, fallingColors, prizes, buyPrice, mergable); + super(id, displayName, skinUrl, particleEffects, fallingColors, prizes, buyPrice, mergable); } @Override - public String getName() { - return super.getName(); + public String getId() { + return super.getId(); } @Override diff --git a/src/main/java/de/piinguiin/lootbox/types/GalacticLootbox.java b/src/main/java/de/piinguiin/lootbox/types/GalacticLootbox.java index 3264e69..ec5c04f 100644 --- a/src/main/java/de/piinguiin/lootbox/types/GalacticLootbox.java +++ b/src/main/java/de/piinguiin/lootbox/types/GalacticLootbox.java @@ -10,14 +10,14 @@ public class GalacticLootbox extends Lootbox { - public GalacticLootbox(String name, String displayName, String skinUrl, List particleEffects, + public GalacticLootbox(String id, String displayName, String skinUrl, List particleEffects, List fallingColors, List prizes, int buyPrice, boolean mergable) { - super(name, displayName, skinUrl, particleEffects, fallingColors, prizes, buyPrice, mergable); + super(id, displayName, skinUrl, particleEffects, fallingColors, prizes, buyPrice, mergable); } @Override - public String getName() { - return super.getName(); + public String getId() { + return super.getId(); } @Override diff --git a/src/main/java/de/piinguiin/lootbox/types/LootboxManager.java b/src/main/java/de/piinguiin/lootbox/types/LootboxManager.java new file mode 100644 index 0000000..9d05dbd --- /dev/null +++ b/src/main/java/de/piinguiin/lootbox/types/LootboxManager.java @@ -0,0 +1,52 @@ +package de.piinguiin.lootbox.types; + +import com.sun.istack.internal.Nullable; +import de.piinguiin.lootbox.api.Lootbox; +import de.piinguiin.lootbox.factories.LootboxFactory; +import org.bukkit.entity.Player; + +import java.util.HashMap; + +public class LootboxManager { + + private HashMap lootboxes; + private HashMap runningLootboxOpening; + + public LootboxManager(){ + this.lootboxes = new HashMap<>(); + this.runningLootboxOpening = new HashMap<>(); + loadLootboxes(); + } + + private void loadLootboxes(){ + + Lootbox moon = LootboxFactory.getLootboxFromGSON("Moon"); + Lootbox galactic = LootboxFactory.getLootboxFromGSON("Galatic"); + Lootbox cosmic = LootboxFactory.getLootboxFromGSON("Cosmic"); + + this.lootboxes.put("Moon",moon); + this.lootboxes.put("Galatic",galactic); + this.lootboxes.put("Cosmic",cosmic); + + } + + public HashMap getLootboxes() { + return lootboxes; + } + + @Nullable + public Lootbox getLootbox(String id){ + return this.lootboxes.getOrDefault(id,null); + } + + public void startLootbox(Lootbox lootbox, Player player){ + + this.runningLootboxOpening.put(lootbox,player); + + } + + public void stopLootbox(Lootbox lootbox){ + this.runningLootboxOpening.remove(lootbox); + } + +} diff --git a/src/main/java/de/piinguiin/lootbox/types/MoonLootbox.java b/src/main/java/de/piinguiin/lootbox/types/MoonLootbox.java index a6129c3..b7a8ec7 100644 --- a/src/main/java/de/piinguiin/lootbox/types/MoonLootbox.java +++ b/src/main/java/de/piinguiin/lootbox/types/MoonLootbox.java @@ -10,53 +10,9 @@ public class MoonLootbox extends Lootbox { - public MoonLootbox(String name, String displayName, String skinUrl, List particleEffects, + public MoonLootbox(String id, String displayName, String skinUrl, List particleEffects, List fallingColors, List prizes, int buyPrice, boolean mergable) { - super(name, displayName, skinUrl, particleEffects, fallingColors, prizes, buyPrice, mergable); + super(id, displayName, skinUrl, particleEffects, fallingColors, prizes, buyPrice, mergable); } - @Override - public String getName() { - return super.getName(); - } - - @Override - public String getDisplayName() { - return super.getDisplayName(); - } - - @Override - public String getSkinURL() { - return super.getSkinURL(); - } - - @Override - public ItemStack getHeadItem() { - return super.getHeadItem(); - } - - @Override - public List getParticleEffects() { - return super.getParticleEffects(); - } - - @Override - public List getFallingColors() { - return super.getFallingColors(); - } - - @Override - public List getPrizes() { - return super.getPrizes(); - } - - @Override - public int getBuyingPrice() { - return super.getBuyingPrice(); - } - - @Override - public boolean isMergable() { - return super.isMergable(); - } } diff --git a/src/test/resources/combined-animations.json b/src/test/resources/combined-animations.json new file mode 100644 index 0000000..6dd18ac --- /dev/null +++ b/src/test/resources/combined-animations.json @@ -0,0 +1,8 @@ +{ + "NAME": [ + "falling", + "explosion", + "head-rotation", + "give" + ] +} \ No newline at end of file