Bläddra i källkod

code cleanup - removed Vespilans stuff, which didnt fit, new items (scepter, cherry saplings), new improved textures (saplings, crates), loads of new icons

Kajetan Johannes Hammerle 6 år sedan
förälder
incheckning
8a133cf696
100 ändrade filer med 650 tillägg och 1649 borttagningar
  1. 0 16
      src/main/java/me/km/ClientEvents.java
  2. 4 8
      src/main/java/me/km/ClientProxy.java
  3. 1 1
      src/main/java/me/km/DamageUtils.java
  4. 2 7
      src/main/java/me/km/KajetansMod.java
  5. 1 10
      src/main/java/me/km/ObjectRegistry.java
  6. 1 1
      src/main/java/me/km/api/SimpleConfig.java
  7. 16 39
      src/main/java/me/km/api/Utils.java
  8. 6 18
      src/main/java/me/km/blocks/ModBlocks.java
  9. 3 3
      src/main/java/me/km/blocks/leaves/BlockCherryLeaves.java
  10. 0 28
      src/main/java/me/km/blocks/leaves/BlockRedCrystalLeaves.java
  11. 0 28
      src/main/java/me/km/blocks/leaves/BlockWhiteCrystalLeaves.java
  12. 0 15
      src/main/java/me/km/capabilities/CapabilitiesEvents.java
  13. 0 39
      src/main/java/me/km/capabilities/ChestKeyProvider.java
  14. 0 27
      src/main/java/me/km/capabilities/ChestKeyStorage.java
  15. 0 39
      src/main/java/me/km/capabilities/DefenseProvider.java
  16. 0 23
      src/main/java/me/km/capabilities/DefenseStorage.java
  17. 0 39
      src/main/java/me/km/capabilities/GunLoadProvider.java
  18. 0 23
      src/main/java/me/km/capabilities/GunLoadStorage.java
  19. 0 10
      src/main/java/me/km/capabilities/IChestKey.java
  20. 0 7
      src/main/java/me/km/capabilities/IDefense.java
  21. 0 7
      src/main/java/me/km/capabilities/IGunLoad.java
  22. 0 37
      src/main/java/me/km/capabilities/ItemChestKey.java
  23. 0 23
      src/main/java/me/km/capabilities/ItemDefenseStats.java
  24. 0 28
      src/main/java/me/km/capabilities/ItemGunLoad.java
  25. 0 5
      src/main/java/me/km/commands/CommandTest.java
  26. 0 1
      src/main/java/me/km/dimensions/CommandWorld.java
  27. 0 2
      src/main/java/me/km/dimensions/WorldPreferences.java
  28. 0 57
      src/main/java/me/km/effects/CommandWand.java
  29. 0 1
      src/main/java/me/km/effects/Effect.java
  30. 0 4
      src/main/java/me/km/effects/EffectCause.java
  31. 5 0
      src/main/java/me/km/effects/passive/ContainerEvent.java
  32. 2 2
      src/main/java/me/km/effects/passive/EntityDamageEffects.java
  33. 1 1
      src/main/java/me/km/entities/EntityHuman.java
  34. 16 1
      src/main/java/me/km/entities/EntityItemProjectile.java
  35. 2 10
      src/main/java/me/km/environment/EnvironmentTick.java
  36. 2 4
      src/main/java/me/km/events/CustomEventCaller.java
  37. 11 1
      src/main/java/me/km/events/PlayerMoveData.java
  38. 39 112
      src/main/java/me/km/items/ModItems.java
  39. 1 18
      src/main/java/me/km/items/weapons/ItemBattleAxe.java
  40. 0 28
      src/main/java/me/km/items/weapons/ItemGreatSword.java
  41. 0 238
      src/main/java/me/km/items/weapons/ItemGun.java
  42. 11 0
      src/main/java/me/km/items/weapons/ItemScepter.java
  43. 179 0
      src/main/java/me/km/items/weapons/ItemSling.java
  44. 0 27
      src/main/java/me/km/items/weapons/ItemSpear.java
  45. 0 1
      src/main/java/me/km/items/weapons/ItemStick.java
  46. 0 132
      src/main/java/me/km/items/weapons/ItemWand.java
  47. 96 1
      src/main/java/me/km/networking/Icon.java
  48. 14 0
      src/main/java/me/km/permissions/PermissionManager.java
  49. 0 1
      src/main/java/me/km/permissions/Permissions.java
  50. 0 72
      src/main/java/me/km/plots/CommandPlot.java
  51. 0 96
      src/main/java/me/km/plots/ProtectionBuyPlot.java
  52. 3 18
      src/main/java/me/km/recipes/ModRecipes.java
  53. 2 2
      src/main/java/me/km/scrolls/CommandScroll.java
  54. 2 2
      src/main/java/me/km/skills/LeveledSkill.java
  55. 127 79
      src/main/java/me/km/snuviscript/MinecraftFunctions.java
  56. 18 16
      src/main/java/me/km/snuviscript/ScriptEvents.java
  57. 2 2
      src/main/java/me/km/snuviscript/ScriptVars.java
  58. 0 38
      src/main/java/me/km/sounds/Sounds.java
  59. 0 10
      src/main/resources/assets/km/blockstates/blue_crystal_leaves.json
  60. 0 7
      src/main/resources/assets/km/blockstates/blue_crystal_sapling.json
  61. 5 5
      src/main/resources/assets/km/blockstates/cherry_leaves.json
  62. 7 0
      src/main/resources/assets/km/blockstates/cherry_sapling.json
  63. 0 7
      src/main/resources/assets/km/blockstates/red_crystal_sapling.json
  64. 0 10
      src/main/resources/assets/km/blockstates/white_crystal_leaves.json
  65. 0 7
      src/main/resources/assets/km/blockstates/white_crystal_sapling.json
  66. 18 43
      src/main/resources/assets/km/lang/en_US.lang
  67. 0 6
      src/main/resources/assets/km/models/block/leaves/blue_crystal_leaves.json
  68. 1 1
      src/main/resources/assets/km/models/block/leaves/cherry_leaves.json
  69. 0 6
      src/main/resources/assets/km/models/block/leaves/white_crystal_leaves.json
  70. 0 6
      src/main/resources/assets/km/models/block/saplings/blue_crystal_sapling.json
  71. 6 0
      src/main/resources/assets/km/models/block/saplings/cherry_sapling.json
  72. 0 6
      src/main/resources/assets/km/models/block/saplings/red_crystal_sapling.json
  73. 0 6
      src/main/resources/assets/km/models/block/saplings/white_crystal_sapling.json
  74. 0 6
      src/main/resources/assets/km/models/item/blue_crystal_sapling.json
  75. 2 1
      src/main/resources/assets/km/models/item/bronze_battleaxe.json
  76. 1 1
      src/main/resources/assets/km/models/item/bronze_dagger.json
  77. 0 6
      src/main/resources/assets/km/models/item/bronze_greatsword.json
  78. 6 0
      src/main/resources/assets/km/models/item/bronze_scepter.json
  79. 0 6
      src/main/resources/assets/km/models/item/bronze_spear.json
  80. 0 6
      src/main/resources/assets/km/models/item/bronze_wand.json
  81. 6 0
      src/main/resources/assets/km/models/item/cherry_sapling.json
  82. 6 0
      src/main/resources/assets/km/models/item/cloth.json
  83. 1 1
      src/main/resources/assets/km/models/item/coarse_cloth.json
  84. 1 1
      src/main/resources/assets/km/models/item/copper_battleaxe.json
  85. 1 1
      src/main/resources/assets/km/models/item/copper_dagger.json
  86. 0 6
      src/main/resources/assets/km/models/item/copper_greatsword.json
  87. 6 0
      src/main/resources/assets/km/models/item/copper_scepter.json
  88. 0 6
      src/main/resources/assets/km/models/item/copper_spear.json
  89. 0 6
      src/main/resources/assets/km/models/item/copper_wand.json
  90. 1 1
      src/main/resources/assets/km/models/item/diamond_battleaxe.json
  91. 1 1
      src/main/resources/assets/km/models/item/diamond_dagger.json
  92. 0 6
      src/main/resources/assets/km/models/item/diamond_greatsword.json
  93. 6 0
      src/main/resources/assets/km/models/item/diamond_scepter.json
  94. 0 6
      src/main/resources/assets/km/models/item/diamond_spear.json
  95. 0 6
      src/main/resources/assets/km/models/item/diamond_wand.json
  96. 0 6
      src/main/resources/assets/km/models/item/emerald_wand.json
  97. 1 1
      src/main/resources/assets/km/models/item/gold_battleaxe.json
  98. 1 1
      src/main/resources/assets/km/models/item/gold_dagger.json
  99. 0 6
      src/main/resources/assets/km/models/item/gold_greatsword.json
  100. 6 0
      src/main/resources/assets/km/models/item/gold_scepter.json

+ 0 - 16
src/main/java/me/km/ClientEvents.java

@@ -20,22 +20,6 @@ import net.minecraftforge.fml.relauncher.SideOnly;
 @SideOnly(Side.CLIENT)
 public class ClientEvents 
 {   
-    /*@SubscribeEvent
-    public void preventChatMessage(ClientChatReceivedEvent e) 
-    {
-        if(e.getMessage() instanceof TextComponentTranslation)
-        {
-            TextComponentTranslation trans = (TextComponentTranslation) e.getMessage();
-            switch(trans.getKey())
-            {
-                case "commands.generic.permission":
-                {
-                    e.setMessage(new TextComponentString("[§5Perms§r] " + GlobalText.noPermission()));
-                }
-            }   
-        }
-    }*/
-
     @SubscribeEvent
     public void onClientTick(TickEvent.ClientTickEvent e)
     {

+ 4 - 8
src/main/java/me/km/ClientProxy.java

@@ -25,15 +25,11 @@ import net.minecraft.client.renderer.entity.Render;
 import net.minecraft.client.resources.FoliageColorReloadListener;
 import net.minecraft.client.resources.GrassColorReloadListener;
 import net.minecraft.entity.Entity;
-import net.minecraft.init.Blocks;
 import net.minecraft.item.Item;
-import net.minecraft.item.ItemBlock;
 import net.minecraft.item.ItemStack;
 import net.minecraft.util.ResourceLocation;
 import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.ColorizerFoliage;
 import net.minecraft.world.IBlockAccess;
-import net.minecraft.world.biome.BiomeColorHelper;
 import net.minecraftforge.client.model.ModelLoader;
 import net.minecraftforge.common.MinecraftForge;
 import net.minecraftforge.fluids.IFluidBlock;
@@ -98,20 +94,20 @@ public class ClientProxy extends CommonProxy
             return -16777216 | c.getRed() << 16 | c.getGreen() << 8 | c.getBlue();
         }, ModBlocks.cauldronOak, ModBlocks.cauldronAcacia, ModBlocks.cauldronBigOak, ModBlocks.cauldronBirch, ModBlocks.cauldronJungle, ModBlocks.cauldronSpruce);
 
-        bColors.registerBlockColorHandler((IBlockState state, IBlockAccess w, BlockPos pos, int ti) -> 
+        /*bColors.registerBlockColorHandler((IBlockState state, IBlockAccess w, BlockPos pos, int ti) -> 
             w != null && pos != null ? BiomeColorHelper.getFoliageColorAtPos(w, pos) : ColorizerFoliage.getFoliageColorBasic(), 
-                Blocks.LEAVES, ModBlocks.apricotLeaves, ModBlocks.pearLeaves, ModBlocks.plumLeaves);
+                Blocks.LEAVES, ModBlocks.apricotLeaves, ModBlocks.pearLeaves, ModBlocks.plumLeaves);*/
         
         ItemColors iColors = Minecraft.getMinecraft().getItemColors();
         iColors.registerItemColorHandler((ItemStack stack, int tintIndex) -> tintIndex > 0 ? -1 : ((ItemColoredSoup) stack.getItem()).getColor(stack), ModItems.coloredSoup);
         iColors.registerItemColorHandler((ItemStack stack, int tintIndex) -> tintIndex > 0 ? -1 : ((ItemGemStone) stack.getItem()).getColor(stack), 
                 ModItems.gemStone, ModItems.rawGemStone, ModItems.flawlessGemStone);
         
-        iColors.registerItemColorHandler((ItemStack stack, int tintIndex) ->
+        /*iColors.registerItemColorHandler((ItemStack stack, int tintIndex) ->
         {
             IBlockState iblockstate = ((ItemBlock) stack.getItem()).getBlock().getStateFromMeta(stack.getMetadata());
             return bColors.colorMultiplier(iblockstate, null, null, tintIndex);
-        }, ModBlocks.apricotLeaves, ModBlocks.pearLeaves, ModBlocks.plumLeaves);
+        }, ModBlocks.apricotLeaves, ModBlocks.pearLeaves, ModBlocks.plumLeaves);*/
     }
 
     @SideOnly(Side.CLIENT)

+ 1 - 1
src/main/java/me/km/capabilities/DamageUtils.java → src/main/java/me/km/DamageUtils.java

@@ -1,4 +1,4 @@
-package me.km.capabilities;
+package me.km;
 
 import net.minecraft.entity.EntityLivingBase;
 import net.minecraft.item.ItemStack;

+ 2 - 7
src/main/java/me/km/KajetansMod.java

@@ -1,11 +1,9 @@
 package me.km;
 
 import me.kcm.command.ModServerCommandManager;
-import me.km.capabilities.CapabilitiesEvents;
 import me.km.api.Module;
 import me.km.api.SimpleConfig;
 import me.km.blockprotections.BlockProtectionBank;
-import me.km.capabilities.DamageUtils;
 import me.km.chatmanager.ChatManager;
 import me.km.data.DataManager;
 import me.km.databank.DataBank;
@@ -69,7 +67,7 @@ public class KajetansMod
 
     public static final String MODID = "km";
     public static final String NAME = "Kajetans Mod";
-    public static final String VERSION = "0.0.28";
+    public static final String VERSION = "0.0.31";
 
     @Mod.Instance(MODID)
     public static KajetansMod instance;
@@ -94,7 +92,6 @@ public class KajetansMod
         GameRegistry.registerWorldGenerator(new ModWorldGeneration(), 3);
         
         DamageUtils.init();
-        CapabilitiesEvents.init();
         
         /*net.minecraftforge.common.MinecraftForge.EVENT_BUS.register(new Object()
             {
@@ -142,6 +139,7 @@ public class KajetansMod
         // configuration and error-dummy
         error = new Module("ERROR", "ERROR", TextFormatting.RED);
         conf = new SimpleConfig(error, "", "config", true);
+        
         debugMode = conf.getBoolean("debug", false);
         if(debugMode)
         {
@@ -157,9 +155,6 @@ public class KajetansMod
         }
         
         // Datenbankverbindung
-        System.out.println(conf.exists());
-        System.out.println(conf.getString("user", "root"));
-        System.out.println(conf.getString("password", ""));
         databank = new DataBank("DataBank", "DataBank", TextFormatting.RED, conf.getString("user", "root"), conf.getString("password", ""));
         if(!databank.openDataBankConnection())
         {

+ 1 - 10
src/main/java/me/km/ObjectRegistry.java

@@ -4,12 +4,10 @@ import me.km.blocks.ModBlocks;
 import me.km.fluids.ModFluids;
 import me.km.items.ModItems;
 import me.km.recipes.ModRecipes;
-import me.km.sounds.Sounds;
 import net.minecraft.block.Block;
 import net.minecraft.init.Blocks;
 import net.minecraft.item.Item;
 import net.minecraft.item.crafting.IRecipe;
-import net.minecraft.util.SoundEvent;
 import net.minecraftforge.event.RegistryEvent;
 import net.minecraftforge.fml.common.Mod;
 import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
@@ -28,10 +26,9 @@ public class ObjectRegistry
     public static void onBlockMissing(RegistryEvent.MissingMappings<Block> e) 
     {
         e.getMappings().stream()
-                .filter((missing) -> (missing.key.getResourcePath().equals("tallgrass")))
                 .forEach((missing) -> 
                 {
-                    missing.remap(Blocks.TALLGRASS);   
+                    missing.remap(Blocks.STONE);   
                 });
     }
 
@@ -73,10 +70,4 @@ public class ObjectRegistry
             recipes.forEach(key -> recipeRegistry.remove(key));
         }*/
     }
-    
-    @SubscribeEvent
-    public static void onSoundRegistry(RegistryEvent.Register<SoundEvent> e) 
-    {
-        Sounds.init(e.getRegistry());
-    }
 }

+ 1 - 1
src/main/java/me/km/api/SimpleConfig.java

@@ -32,7 +32,7 @@ public class SimpleConfig extends SnuviConfig
                 m.sendHelpListElementToConsole("line", function);
             }
         }, path, name);
-       
+        
         if(load && exists())
         {
             load();

+ 16 - 39
src/main/java/me/km/api/Utils.java

@@ -14,8 +14,10 @@ import me.km.entities.EntityItemProjectile;
 import me.km.exception.PlayerNotFoundException;
 import me.km.items.weapons.ItemDagger;
 import me.km.items.tools.ItemHammer;
+import me.km.items.weapons.ItemBattleAxe;
+import me.km.items.weapons.ItemSling;
+import me.km.items.weapons.ItemScepter;
 import me.km.items.weapons.ItemStick;
-import me.km.items.weapons.ItemWand;
 import net.minecraft.entity.Entity;
 import net.minecraft.entity.player.EntityPlayer;
 import net.minecraft.block.Block;
@@ -45,6 +47,7 @@ import net.minecraft.util.math.Vec3d;
 import net.minecraft.world.World;
 import net.minecraft.item.ItemStack;
 import net.minecraft.item.ItemSword; 
+import net.minecraft.item.ItemTool;
 import net.minecraft.nbt.NBTTagCompound;
 import net.minecraft.nbt.NBTUtil;
 import net.minecraft.network.play.server.SPacketEntityVelocity;
@@ -143,8 +146,7 @@ public class Utils
     
     public enum ToolTypes
     {
-        PICKAXE, AXE, HOE, SHOVEL, SWORD, MUSKET, DAGGER, HAMMER, STICK, WAND, SPEAR
-        // MUSKET, SPEAR
+        AXE, HAMMER, HOE, PICKAXE, SPADE, BATTLE_AXE, DAGGER, SLING, SCEPTER, SPEAR, STICK, SWORD
     }
     
     public static ToolTypes getToolType(ItemStack stack)
@@ -154,42 +156,17 @@ public class Utils
             return null;
         }
         Item item = stack.getItem();
-        if(item instanceof ItemHoe)
-        {
-            return ToolTypes.HOE;
-        }
-        else if(item instanceof ItemPickaxe)
-        {
-            return ToolTypes.PICKAXE;
-        }
-        else if(item instanceof ItemAxe)
-        {
-            return ToolTypes.AXE;
-        }
-        else if(item instanceof ItemSpade)
-        {
-            return ToolTypes.SHOVEL;
-        }
-        else if(item instanceof ItemSword)
-        {
-            return ToolTypes.SWORD;
-        }
-        else if(item instanceof ItemDagger)
-        {
-            return ToolTypes.DAGGER;
-        }
-        else if(item instanceof ItemHammer)
-        {
-            return ToolTypes.HAMMER;
-        }
-        else if(item instanceof ItemStick)
-        {
-            return ToolTypes.STICK;
-        }
-        else if(item instanceof ItemWand)
-        {
-            return ToolTypes.WAND;
-        }
+        if(item instanceof ItemAxe) return ToolTypes.AXE;
+        else if(item instanceof ItemHammer) return ToolTypes.HAMMER;
+        else if(item instanceof ItemHoe) return ToolTypes.HOE;
+        else if(item instanceof ItemPickaxe) return ToolTypes.PICKAXE;
+        else if(item instanceof ItemSpade) return ToolTypes.SPADE;
+        else if(item instanceof ItemBattleAxe) return ToolTypes.BATTLE_AXE;
+        else if(item instanceof ItemDagger) return ToolTypes.DAGGER;
+        else if(item instanceof ItemSling) return ToolTypes.SLING;
+        else if(item instanceof ItemScepter) return ToolTypes.SCEPTER;
+        else if(item instanceof ItemStick) return ToolTypes.STICK;
+        else if(item instanceof ItemSword) return ToolTypes.SWORD;
         return null;
     }
        

+ 6 - 18
src/main/java/me/km/blocks/ModBlocks.java

@@ -81,17 +81,13 @@ public class ModBlocks
     public static BlockModSlab gravelSlab;
     
     // leaves
-    public static BlockLeaves redCrystalLeaves;
-    public static BlockLeaves blueCrystalLeaves;
-    public static BlockLeaves whiteCrystalLeaves;
+    public static BlockLeaves cherryLeaves;
     public static BlockLeaves apricotLeaves;
     public static BlockLeaves pearLeaves;
     public static BlockLeaves plumLeaves;
     
     // saplings
-    public static BlockSapling redCrystalSapling;
-    public static BlockSapling blueCrystalSapling;
-    public static BlockSapling whiteCrystalSapling;
+    public static BlockSapling cherrySapling;
     public static BlockSapling apricotSapling;
     public static BlockSapling pearSapling;
     public static BlockSapling plumSapling;
@@ -159,17 +155,13 @@ public class ModBlocks
         gravelSlab = register(r, (BlockModSlab) new BlockModSlab(Material.SAND, "gravel_slab", "gravelSlab").setSoundType(SoundType.GROUND).setHardness(0.6F));
         
         // leaves
-        redCrystalLeaves = register(r, new BlockRedCrystalLeaves("red_crystal_leaves", "redCrystalLeaves"));
-        blueCrystalLeaves = register(r, new BlockBlueCrystalLeaves("blue_crystal_leaves", "blueCrystalLeaves"));
-        whiteCrystalLeaves = register(r, new BlockWhiteCrystalLeaves("white_crystal_leaves", "whiteCrystalLeaves"));
+        cherryLeaves = register(r, new BlockCherryLeaves("cherry_leaves", "cherryLeaves"));
         apricotLeaves = register(r, new BlockApricotLeaves("apricot_leaves", "apricotLeaves"));
         pearLeaves = register(r, new BlockPearLeaves("pear_leaves", "pearLeaves"));
         plumLeaves = register(r, new BlockPlumLeaves("plum_leaves", "plumLeaves"));
         
         // saplings
-        redCrystalSapling = register(r, new BlockSapling("red_crystal_sapling", "redCrystalSapling", BlockPlanks.EnumType.JUNGLE, redCrystalLeaves));
-        blueCrystalSapling = register(r, new BlockSapling("blue_crystal_sapling", "blueCrystalSapling", BlockPlanks.EnumType.OAK, blueCrystalLeaves));
-        whiteCrystalSapling = register(r, new BlockSapling("white_crystal_sapling", "whiteCrystalSapling", BlockPlanks.EnumType.SPRUCE, whiteCrystalLeaves));
+        cherrySapling = register(r, new BlockSapling("cherry_sapling", "cherrySapling", BlockPlanks.EnumType.OAK, cherryLeaves));
         apricotSapling = register(r, new BlockSapling("apricot_sapling", "apricotSapling", BlockPlanks.EnumType.OAK, apricotLeaves));
         pearSapling = register(r, new BlockSapling("pear_sapling", "pearSapling", BlockPlanks.EnumType.OAK, pearLeaves));
         plumSapling = register(r, new BlockSapling("plum_sapling", "plumSapling", BlockPlanks.EnumType.OAK, plumLeaves));
@@ -229,17 +221,13 @@ public class ModBlocks
         register(r, gravelSlab, getItemBlock(gravelSlab));
         
         // leaves
-        register(r, redCrystalLeaves, getItemBlock(redCrystalLeaves));
-        register(r, blueCrystalLeaves, getItemBlock(blueCrystalLeaves));
-        register(r, whiteCrystalLeaves, getItemBlock(whiteCrystalLeaves));
+        register(r, cherryLeaves, getItemBlock(cherryLeaves));
         register(r, apricotLeaves, getItemBlock(apricotLeaves));
         register(r, pearLeaves, getItemBlock(pearLeaves));
         register(r, plumLeaves, getItemBlock(plumLeaves));
         
         // saplings
-        register(r, redCrystalSapling, getItemBlock(redCrystalSapling));
-        register(r, blueCrystalSapling, getItemBlock(blueCrystalSapling));
-        register(r, whiteCrystalSapling, getItemBlock(whiteCrystalSapling));
+        register(r, cherrySapling, getItemBlock(cherrySapling));
         register(r, apricotSapling, getItemBlock(apricotSapling));
         register(r, pearSapling, getItemBlock(pearSapling));
         register(r, plumSapling, getItemBlock(plumSapling));

+ 3 - 3
src/main/java/me/km/blocks/leaves/BlockBlueCrystalLeaves.java → src/main/java/me/km/blocks/leaves/BlockCherryLeaves.java

@@ -8,9 +8,9 @@ import net.minecraft.item.Item;
 import net.minecraft.util.math.BlockPos;
 import net.minecraft.world.World;
 
-public class BlockBlueCrystalLeaves extends BlockLeaves
+public class BlockCherryLeaves extends BlockLeaves
 {
-    public BlockBlueCrystalLeaves(String name, String local) 
+    public BlockCherryLeaves(String name, String local) 
     {
         super(name, local, BlockPlanks.EnumType.OAK);
     }
@@ -18,7 +18,7 @@ public class BlockBlueCrystalLeaves extends BlockLeaves
     @Override
     public Item getItemDropped(IBlockState state, Random rand, int fortune)
     {
-        return Item.getItemFromBlock(ModBlocks.blueCrystalSapling);
+        return Item.getItemFromBlock(ModBlocks.cherrySapling);
     }
     
     @Override

+ 0 - 28
src/main/java/me/km/blocks/leaves/BlockRedCrystalLeaves.java

@@ -1,28 +0,0 @@
-package me.km.blocks.leaves;
-
-import java.util.Random;
-import me.km.blocks.ModBlocks;
-import net.minecraft.block.BlockPlanks;
-import net.minecraft.block.state.IBlockState;
-import net.minecraft.item.Item;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
-
-public class BlockRedCrystalLeaves extends BlockLeaves
-{
-    public BlockRedCrystalLeaves(String name, String local) 
-    {
-        super(name, local, BlockPlanks.EnumType.JUNGLE);
-    }
-  
-    @Override
-    public Item getItemDropped(IBlockState state, Random rand, int fortune)
-    {
-        return Item.getItemFromBlock(ModBlocks.redCrystalSapling);
-    }
-    
-    @Override
-    protected void dropApple(World worldIn, BlockPos pos, IBlockState state, int chance)
-    {
-    }
-}

+ 0 - 28
src/main/java/me/km/blocks/leaves/BlockWhiteCrystalLeaves.java

@@ -1,28 +0,0 @@
-package me.km.blocks.leaves;
-
-import java.util.Random;
-import me.km.blocks.ModBlocks;
-import net.minecraft.block.BlockPlanks;
-import net.minecraft.block.state.IBlockState;
-import net.minecraft.item.Item;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
-
-public class BlockWhiteCrystalLeaves extends BlockLeaves
-{
-    public BlockWhiteCrystalLeaves(String name, String local) 
-    {
-        super(name, local, BlockPlanks.EnumType.SPRUCE);
-    }
-  
-    @Override
-    public Item getItemDropped(IBlockState state, Random rand, int fortune)
-    {
-        return Item.getItemFromBlock(ModBlocks.whiteCrystalSapling);
-    }
-    
-    @Override
-    protected void dropApple(World worldIn, BlockPos pos, IBlockState state, int chance)
-    {
-    }
-}

+ 0 - 15
src/main/java/me/km/capabilities/CapabilitiesEvents.java

@@ -1,15 +0,0 @@
-package me.km.capabilities;
-
-public class CapabilitiesEvents 
-{
-    //public static final ResourceLocation DEFENSE_CAP = new ResourceLocation(KajetansMod.MODID, "defense");
-    //public static final ResourceLocation CHEST_KEY_CAP = new ResourceLocation(KajetansMod.MODID, "chestkey");
-    //public static final ResourceLocation GUN_LOAD_CAP = new ResourceLocation(KajetansMod.MODID, "gunload");
-    
-    public static void init()
-    {
-        //CapabilityManager.INSTANCE.register(IDefense.class, new DefenseStorage(), ItemDefenseStats.class);
-        //CapabilityManager.INSTANCE.register(IChestKey.class, new ChestKeyStorage(), ItemChestKey.class);
-        //CapabilityManager.INSTANCE.register(IGunLoad.class, new GunLoadStorage(), ItemGunLoad.class);
-    }
-}

+ 0 - 39
src/main/java/me/km/capabilities/ChestKeyProvider.java

@@ -1,39 +0,0 @@
-package me.km.capabilities;
-
-import net.minecraft.nbt.NBTBase;
-import net.minecraft.util.EnumFacing;
-import net.minecraftforge.common.capabilities.Capability;
-import net.minecraftforge.common.capabilities.CapabilityInject;
-import net.minecraftforge.common.capabilities.ICapabilitySerializable;
-
-public class ChestKeyProvider implements ICapabilitySerializable<NBTBase>
-{
-    @CapabilityInject(IChestKey.class)
-    public static final Capability<IChestKey> CHEST_KEY_CAP = null;
-
-    private final IChestKey instance = CHEST_KEY_CAP.getDefaultInstance();
-
-    @Override
-    public boolean hasCapability(Capability<?> capability, EnumFacing facing)
-    {
-        return capability == CHEST_KEY_CAP;
-    }
-
-    @Override
-    public <T> T getCapability(Capability<T> capability, EnumFacing facing)
-    {
-        return capability == CHEST_KEY_CAP ? CHEST_KEY_CAP.<T>cast(this.instance) : null;
-    }
-
-    @Override
-    public NBTBase serializeNBT()
-    {
-        return CHEST_KEY_CAP.getStorage().writeNBT(CHEST_KEY_CAP, this.instance, null);
-    }
-
-    @Override
-    public void deserializeNBT(NBTBase nbt)
-    {
-        CHEST_KEY_CAP.getStorage().readNBT(CHEST_KEY_CAP, this.instance, null, nbt);
-    }
-}

+ 0 - 27
src/main/java/me/km/capabilities/ChestKeyStorage.java

@@ -1,27 +0,0 @@
-package me.km.capabilities;
-
-import net.minecraft.nbt.NBTBase;
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.util.EnumFacing;
-import net.minecraftforge.common.capabilities.Capability;
-import net.minecraftforge.common.capabilities.Capability.IStorage;
-
-public class ChestKeyStorage implements IStorage<IChestKey>
-{
-    @Override
-    public NBTBase writeNBT(Capability<IChestKey> cap, IChestKey instance, EnumFacing side) 
-    {
-        NBTTagCompound com = new NBTTagCompound();
-        com.setString("key", instance.getKey());
-        com.setBoolean("iscopy", instance.isCopy());
-        return com;
-    }
-
-    @Override
-    public void readNBT(Capability<IChestKey> cap, IChestKey instance, EnumFacing side, NBTBase nbt) 
-    {
-        NBTTagCompound com = (NBTTagCompound) nbt;
-        instance.setKey(com.getString("key"));
-        instance.setCopy(com.getBoolean("iscopy"));
-    }
-}

+ 0 - 39
src/main/java/me/km/capabilities/DefenseProvider.java

@@ -1,39 +0,0 @@
-package me.km.capabilities;
-
-import net.minecraft.nbt.NBTBase;
-import net.minecraft.util.EnumFacing;
-import net.minecraftforge.common.capabilities.Capability;
-import net.minecraftforge.common.capabilities.CapabilityInject;
-import net.minecraftforge.common.capabilities.ICapabilitySerializable;
-
-public class DefenseProvider implements ICapabilitySerializable<NBTBase>
-{
-    @CapabilityInject(IDefense.class)
-    public static final Capability<IDefense> DEFENSE_CAP = null;
-
-    private final IDefense instance = DEFENSE_CAP.getDefaultInstance();
-
-    @Override
-    public boolean hasCapability(Capability<?> capability, EnumFacing facing)
-    {
-        return capability == DEFENSE_CAP;
-    }
-
-    @Override
-    public <T> T getCapability(Capability<T> capability, EnumFacing facing)
-    {
-        return capability == DEFENSE_CAP ? DEFENSE_CAP.<T>cast(this.instance) : null;
-    }
-
-    @Override
-    public NBTBase serializeNBT()
-    {
-        return DEFENSE_CAP.getStorage().writeNBT(DEFENSE_CAP, this.instance, null);
-    }
-
-    @Override
-    public void deserializeNBT(NBTBase nbt)
-    {
-        DEFENSE_CAP.getStorage().readNBT(DEFENSE_CAP, this.instance, null, nbt);
-    }
-}

+ 0 - 23
src/main/java/me/km/capabilities/DefenseStorage.java

@@ -1,23 +0,0 @@
-package me.km.capabilities;
-
-import net.minecraft.nbt.NBTBase;
-import net.minecraft.nbt.NBTPrimitive;
-import net.minecraft.nbt.NBTTagInt;
-import net.minecraft.util.EnumFacing;
-import net.minecraftforge.common.capabilities.Capability;
-import net.minecraftforge.common.capabilities.Capability.IStorage;
-
-public class DefenseStorage implements IStorage<IDefense>
-{
-    @Override
-    public NBTBase writeNBT(Capability<IDefense> cap, IDefense instance, EnumFacing side) 
-    {
-        return new NBTTagInt(instance.getMagicDefense());
-    }
-
-    @Override
-    public void readNBT(Capability<IDefense> cap, IDefense instance, EnumFacing side, NBTBase nbt) 
-    {
-        instance.setMagicDefense(((NBTPrimitive) nbt).getInt());
-    }
-}

+ 0 - 39
src/main/java/me/km/capabilities/GunLoadProvider.java

@@ -1,39 +0,0 @@
-package me.km.capabilities;
-
-import net.minecraft.nbt.NBTBase;
-import net.minecraft.util.EnumFacing;
-import net.minecraftforge.common.capabilities.Capability;
-import net.minecraftforge.common.capabilities.CapabilityInject;
-import net.minecraftforge.common.capabilities.ICapabilitySerializable;
-
-public class GunLoadProvider implements ICapabilitySerializable<NBTBase>
-{
-    @CapabilityInject(IGunLoad.class)
-    public static final Capability<IGunLoad> GUN_LOAD_CAP = null;
-
-    private final IGunLoad instance = GUN_LOAD_CAP.getDefaultInstance();
-
-    @Override
-    public boolean hasCapability(Capability<?> capability, EnumFacing facing)
-    {
-        return capability == GUN_LOAD_CAP;
-    }
-
-    @Override
-    public <T> T getCapability(Capability<T> capability, EnumFacing facing)
-    {
-        return capability == GUN_LOAD_CAP ? GUN_LOAD_CAP.<T>cast(this.instance) : null;
-    }
-
-    @Override
-    public NBTBase serializeNBT()
-    {
-        return GUN_LOAD_CAP.getStorage().writeNBT(GUN_LOAD_CAP, this.instance, null);
-    }
-
-    @Override
-    public void deserializeNBT(NBTBase nbt)
-    {
-        GUN_LOAD_CAP.getStorage().readNBT(GUN_LOAD_CAP, this.instance, null, nbt);
-    }
-}

+ 0 - 23
src/main/java/me/km/capabilities/GunLoadStorage.java

@@ -1,23 +0,0 @@
-package me.km.capabilities;
-
-import net.minecraft.nbt.NBTBase;
-import net.minecraft.nbt.NBTPrimitive;
-import net.minecraft.nbt.NBTTagInt;
-import net.minecraft.util.EnumFacing;
-import net.minecraftforge.common.capabilities.Capability;
-import net.minecraftforge.common.capabilities.Capability.IStorage;
-
-public class GunLoadStorage implements IStorage<IGunLoad>
-{
-    @Override
-    public NBTBase writeNBT(Capability<IGunLoad> cap, IGunLoad instance, EnumFacing side) 
-    {
-        return new NBTTagInt(instance.getCurrentLoad());
-    }
-
-    @Override
-    public void readNBT(Capability<IGunLoad> cap, IGunLoad instance, EnumFacing side, NBTBase nbt) 
-    {
-        instance.setCurrentLoad(((NBTPrimitive) nbt).getInt());
-    }
-}

+ 0 - 10
src/main/java/me/km/capabilities/IChestKey.java

@@ -1,10 +0,0 @@
-package me.km.capabilities;
-
-public interface IChestKey 
-{
-    public String getKey();
-    public void setKey(String key);
-    
-    public boolean isCopy();
-    public void setCopy(boolean b);
-}

+ 0 - 7
src/main/java/me/km/capabilities/IDefense.java

@@ -1,7 +0,0 @@
-package me.km.capabilities;
-
-public interface IDefense 
-{
-    public int getMagicDefense();
-    public void setMagicDefense(int magicDefense);
-}

+ 0 - 7
src/main/java/me/km/capabilities/IGunLoad.java

@@ -1,7 +0,0 @@
-package me.km.capabilities;
-
-public interface IGunLoad
-{
-    public int getCurrentLoad();
-    public void setCurrentLoad(int load);
-}

+ 0 - 37
src/main/java/me/km/capabilities/ItemChestKey.java

@@ -1,37 +0,0 @@
-package me.km.capabilities;
-
-public class ItemChestKey implements IChestKey
-{
-    private String key;
-    private boolean isCopy;
-    
-    public ItemChestKey()
-    {
-        this.key = "";
-        this.isCopy = false;
-    }
-    
-    @Override
-    public String getKey() 
-    {
-        return key;
-    }
-
-    @Override
-    public void setKey(String key) 
-    {
-        this.key = key;
-    }
-
-    @Override
-    public boolean isCopy() 
-    {
-        return isCopy;
-    }
-
-    @Override
-    public void setCopy(boolean b) 
-    {
-        this.isCopy = b;
-    }
-}

+ 0 - 23
src/main/java/me/km/capabilities/ItemDefenseStats.java

@@ -1,23 +0,0 @@
-package me.km.capabilities;
-
-public class ItemDefenseStats implements IDefense
-{
-    private int magicDefense;
-    
-    public ItemDefenseStats()
-    {
-        this.magicDefense = 0;
-    }
-
-    @Override
-    public int getMagicDefense() 
-    {
-        return magicDefense;
-    }
-
-    @Override
-    public void setMagicDefense(int magicDefense) 
-    {
-        this.magicDefense = magicDefense;
-    }
-}

+ 0 - 28
src/main/java/me/km/capabilities/ItemGunLoad.java

@@ -1,28 +0,0 @@
-package me.km.capabilities;
-
-public class ItemGunLoad implements IGunLoad
-{
-    private int load;
-
-    public ItemGunLoad()
-    {
-        load = 0;
-    }
-    
-    public ItemGunLoad(int load)
-    {
-        this.load = load;
-    }
-    
-    @Override
-    public int getCurrentLoad() 
-    {
-        return load;
-    }
-
-    @Override
-    public void setCurrentLoad(int load) 
-    {
-        this.load = load;
-    }
-}

+ 0 - 5
src/main/java/me/km/commands/CommandTest.java

@@ -3,14 +3,9 @@ package me.km.commands;
 import me.km.api.GlobalText;
 import me.km.api.Module;
 import me.km.api.ModuleCommand;
-import me.km.capabilities.ChestKeyProvider;
-import me.km.capabilities.IChestKey;
 import me.km.permissions.Permissions;
 import net.minecraft.command.ICommandSender;
 import net.minecraft.entity.player.EntityPlayerMP;
-import net.minecraft.item.ItemStack;
-import net.minecraft.network.play.server.SPacketSetSlot;
-import net.minecraft.util.text.TextComponentString;
 
 public class CommandTest extends ModuleCommand
 {

+ 0 - 1
src/main/java/me/km/dimensions/CommandWorld.java

@@ -214,7 +214,6 @@ public class CommandWorld extends ModuleCommand
                         m.sendListElement(cs, "Statuseffekte = " + wp.statusEffects);  
                         m.sendListElement(cs, "Schriftrollen = " + wp.scrolls);  
                         m.sendListElement(cs, "Standard-Craften = " + wp.defaultProducing);  
-                        m.sendListElement(cs, "Manabar = " + wp.manabar);  
                         return true;
                     }
                     break;

+ 0 - 2
src/main/java/me/km/dimensions/WorldPreferences.java

@@ -6,7 +6,6 @@ public class WorldPreferences
     public boolean defaultProducing;
     public boolean blockProtection;
     public boolean defaultEnchanting;
-    public boolean manabar;
     public boolean statusEffects;
     public boolean pvpProtection;
     public boolean scrolls;
@@ -18,7 +17,6 @@ public class WorldPreferences
         blockProtection = true;
         defaultProducing = true;
         defaultEnchanting = true;
-        manabar = false;
         statusEffects = false;
         pvpProtection = true;
     }

+ 0 - 57
src/main/java/me/km/effects/CommandWand.java

@@ -1,57 +0,0 @@
-package me.km.effects;
-
-import java.util.Arrays;
-import java.util.stream.Collectors;
-import me.km.api.GlobalText;
-import me.km.api.Module;
-import me.km.api.ModuleTabCommand;
-import me.km.items.weapons.ItemWand;
-import me.km.items.ModItems;
-import me.km.permissions.Permissions;
-import net.minecraft.command.ICommandSender;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.ItemStack;
-
-public class CommandWand extends ModuleTabCommand
-{   
-    public CommandWand(Module m) 
-    {
-        super("magicwand", m, Arrays.stream(Effect.values())
-                .filter(n -> n.isActive())
-                .map(n -> n.toString())
-                .collect(Collectors.toList()), 0);
-        super.setDescription("Belegt einen Zauberstab mit einem Effekt, Unterstriche bei <dname> werden zu Leerzeichen");
-        super.setUsage("/magicwand <effect> <dname>");
-        super.setPermission(Permissions.WAND);
-    }
-
-    @Override
-    public boolean execute(ICommandSender cs, String[] arg) 
-    {
-        if(!(cs instanceof EntityPlayer))
-        {
-            this.getModule().send(cs, GlobalText.onlyPlayer());
-            return true;
-        }
-        EntityPlayer p = (EntityPlayer) cs;
-        if(arg.length >= 1)
-        {     
-            ItemStack stack = p.getHeldItemMainhand();
-            if(stack.getItem() instanceof ItemWand)
-            {
-                this.getModule().send(cs, "Du musst einen Zauberstab in der Hand halten.");
-                return true;
-            }
-            
-            Effect eff = Effect.valueOf(arg[0]);
-            if(eff == null || !eff.isActive())
-            { 
-                this.getModule().send(cs, "Dieser aktive Effekt existiert nicht.");
-                return true;
-            }  
-            ModItems.woodenWand.setEffect(stack, eff.ordinal(), arg[1].replace('_', ' '));
-            return true;
-        } 
-        return false;
-    }
-}

+ 0 - 1
src/main/java/me/km/effects/Effect.java

@@ -57,7 +57,6 @@ public enum Effect
     NO_ENDERPEARL_DAMAGE    ,
     GOLD_WASHER             ,
     GOLD_RUSH               ,
-    USE_WAND                ,
     LESS_ITEM_LOSS          ,
     NO_ARMOR_DROPPING       ,
     DODGE                   ,

+ 0 - 4
src/main/java/me/km/effects/EffectCause.java

@@ -6,10 +6,6 @@ public enum EffectCause
      * the effect was started by a scroll
      */
     SCROLL, 
-    /**
-     * the effect was started by a wand
-     */
-    WAND,
     /**
      * the effect was started by a skill
      */

+ 5 - 0
src/main/java/me/km/effects/passive/ContainerEvent.java

@@ -8,6 +8,7 @@ import me.km.effects.EffectUtils;
 import net.minecraft.entity.player.EntityPlayer;
 import net.minecraft.inventory.Container;
 import net.minecraft.inventory.ContainerChest;
+import net.minecraft.inventory.ContainerEnchantment;
 import net.minecraft.inventory.ContainerRepair;
 import net.minecraft.tileentity.TileEntityBrewingStand;
 import net.minecraftforge.event.entity.player.PlayerContainerEvent;
@@ -42,5 +43,9 @@ public class ContainerEvent extends ModuleListener
                 p.closeScreen();
             }
         }
+        else if(c instanceof ContainerEnchantment && !KajetansMod.worldManager.getWorldPreferences(e.getEntity().world).defaultEnchanting)
+        {
+            e.getEntityPlayer().closeScreen();
+        }
     }
 }

+ 2 - 2
src/main/java/me/km/effects/passive/EntityDamageEffects.java

@@ -4,7 +4,7 @@ import me.km.KajetansMod;
 import me.km.api.Module;
 import me.km.api.ModuleListener;
 import me.km.api.Utils;
-import me.km.capabilities.DamageUtils;
+import me.km.DamageUtils;
 import me.km.data.EntityData;
 import me.km.effects.Effect;
 import me.km.effects.EffectUtils;
@@ -102,7 +102,7 @@ public class EntityDamageEffects extends ModuleListener
                 case PICKAXE:
                     damageBonus += 0.1f * EffectUtils.getEffectLevel(p, Effect.MORE_PICKAXE_DAMAGE);
                     break;
-                case SHOVEL:
+                case SPADE:
                     damageBonus += 0.1f * EffectUtils.getEffectLevel(p, Effect.MORE_SHOVEL_DAMAGE);
                     break;
                 case SWORD:

+ 1 - 1
src/main/java/me/km/entities/EntityHuman.java

@@ -185,7 +185,7 @@ public class EntityHuman extends EntityCreature implements IEntityAdditionalSpaw
         if(!world.isRemote)
         {
             Entity ent = source.getTrueSource();
-            if(ent instanceof EntityPlayer)
+            if(KajetansMod.scripts != null && ent instanceof EntityPlayer)
             {
                 KajetansMod.scripts.getEvent(ScriptEvents.class).onHumanHurt((EntityPlayer) ent, this);
             }

+ 16 - 1
src/main/java/me/km/entities/EntityItemProjectile.java

@@ -55,6 +55,21 @@ public class EntityItemProjectile extends EntityItem implements IProjectile
         }
     }
     
+    public void shoot(Entity shooter, float pitch, float yaw, float velocity, float inaccuracy)
+    {
+        float f = -MathHelper.sin(yaw * 0.017453292F) * MathHelper.cos(pitch * 0.017453292F);
+        float f1 = -MathHelper.sin(pitch * 0.017453292F);
+        float f2 = MathHelper.cos(yaw * 0.017453292F) * MathHelper.cos(pitch * 0.017453292F);
+        this.shoot(f, f1, f2, velocity, inaccuracy);
+        this.motionX += shooter.motionX;
+        this.motionZ += shooter.motionZ;
+
+        if(!shooter.onGround)
+        {
+            this.motionY += shooter.motionY;
+        }
+    }
+    
     @Override
     public void shoot(double x, double y, double z, float velocity, float inaccuracy)
     {
@@ -126,7 +141,7 @@ public class EntityItemProjectile extends EntityItem implements IProjectile
     {
         if(damage == -1)
         {
-            if(thrower instanceof EntityPlayer)
+            if(KajetansMod.scripts != null && thrower instanceof EntityPlayer)
             {
                 KajetansMod.scripts.getEvent(ScriptEvents.class).onEntityItemProjectileHit(this, (EntityPlayer) thrower, this.getItem(), list);
             }

+ 2 - 10
src/main/java/me/km/environment/EnvironmentTick.java

@@ -80,18 +80,10 @@ public class EnvironmentTick implements Runnable
                             p.getFoodStats().setFoodSaturationLevel(f);
                         }
                     }
-                });
-            });   
-        
-        Arrays.stream(KajetansMod.server.worlds).filter(w -> KajetansMod.worldManager.getWorldPreferences(w).statusEffects).forEach(w -> 
-            {
-                w.playerEntities.stream()
-                        .filter(p -> !(p.isCreative() || p.isSpectator()))
-                        .forEach(p -> 
-                {
+                    
                     // Mana
                     EnvironmentAPI.changeMana(p, 6);
                 });
-            });
+            });   
     }
 }

+ 2 - 4
src/main/java/me/km/events/CustomEventCaller.java

@@ -24,14 +24,12 @@ public class CustomEventCaller
     private static final ArrayList<EntityArrow> ARROWS = new ArrayList<>();
     
     private static final HashMap<Integer, PlayerMoveData> MOVE_DATA = new HashMap<>();
-    private static int idCounter = 0;
     private static final LinkedList<Integer> REMOVE_QUEUE = new LinkedList<>();
     
     public static int registerMoveData(PlayerMoveData data)
     {
-        idCounter++;
-        MOVE_DATA.put(idCounter, data);
-        return idCounter;
+        MOVE_DATA.put(data.getId(), data);
+        return data.getId();
     }
     
     public static void removeScriptData(Script sc)

+ 11 - 1
src/main/java/me/km/events/PlayerMoveData.java

@@ -10,6 +10,8 @@ import net.minecraft.world.World;
 
 public class PlayerMoveData 
 {
+    private static int idCounter = 0;
+    
     private final Script sc;
     private final BiPredicate<EntityPlayerMP, Object> c;
     private final int coolDown;
@@ -26,8 +28,11 @@ public class PlayerMoveData
     private final double maxY;
     private final double maxZ;
     
+    private final int id;
+    
     private PlayerMoveData(Script sc, BiPredicate<EntityPlayerMP, Object> c, Location l1, Location l2, int cooldown, int livingTime, Object data)
     {
+        this.id = idCounter++;
         this.sc = sc;
         this.c = c;
         this.coolDown = cooldown;
@@ -55,6 +60,11 @@ public class PlayerMoveData
     {
         this(null, c, l1, l2, cooldown, livingTime, data);
     }
+
+    public int getId() 
+    {
+        return id;
+    }
     
     public boolean isSameScript(Script sc)
     {
@@ -95,7 +105,7 @@ public class PlayerMoveData
         }
         if(sc != null)
         {
-            KajetansMod.scripts.getEvent(ScriptEvents.class).onPlayerMove(p);
+            KajetansMod.scripts.getEvent(ScriptEvents.class).onPlayerMove(p, id);
         }
         if(c != null)
         {

+ 39 - 112
src/main/java/me/km/items/ModItems.java

@@ -1,6 +1,5 @@
 package me.km.items;
 
-import me.km.items.weapons.ItemWand;
 import me.km.items.weapons.ItemSword;
 import me.km.items.weapons.ItemStick;
 import me.km.items.tools.ItemSpade;
@@ -8,7 +7,6 @@ import me.km.items.tools.ItemPickaxe;
 import me.km.items.tools.ItemHoe;
 import me.km.items.tools.ItemHammer;
 import me.km.items.tools.ItemAxe;
-import me.km.items.weapons.ItemGun;
 import me.km.items.weapons.ItemDagger;
 import me.km.items.herbs.ItemHerbs;
 import me.km.items.noglint.ItemNoGlintPotion;
@@ -20,9 +18,8 @@ import me.km.items.herbs.ItemGoldHerb;
 import me.km.items.noglint.ItemNoGlintLingeringPotion;
 import me.km.items.noglint.ItemNoGlintSplashPotion;
 import me.km.items.weapons.ItemBattleAxe;
-import me.km.items.weapons.ItemGreatSword;
-import me.km.items.weapons.ItemSpear;
-import me.km.sounds.Sounds;
+import me.km.items.weapons.ItemScepter;
+import me.km.items.weapons.ItemSling;
 import net.minecraft.creativetab.CreativeTabs;
 import net.minecraft.init.Items;
 import net.minecraft.init.MobEffects;
@@ -116,6 +113,8 @@ public class ModItems
     public static ItemAxe bronzeAxe;
     public static ItemHoe bronzeHoe;
     
+    public static ItemSling sling;
+    
     // armor
     public static ItemArmor copperHelmet;
     public static ItemArmor copperChestplate;
@@ -134,19 +133,6 @@ public class ModItems
     
     public static ItemArmor strawHat;
     
-    // wands
-    public static ItemWand woodenWand;
-    public static ItemWand stoneWand;
-    public static ItemWand copperWand;
-    public static ItemWand bronzeWand;
-    public static ItemWand ironWand;
-    public static ItemWand goldWand;
-    public static ItemWand emeraldWand;
-    public static ItemWand redstoneWand;
-    public static ItemWand lapisWand;
-    public static ItemWand diamondWand;
-    public static ItemWand silverWand;
-    
     // sticks
     public static ItemStick woodenStick;
     public static ItemStick stoneStick;
@@ -156,6 +142,15 @@ public class ModItems
     public static ItemStick goldStick;
     public static ItemStick diamondStick;
     
+    // scepters
+    public static ItemScepter woodenScepter;
+    public static ItemScepter stoneScepter;
+    public static ItemScepter copperScepter;
+    public static ItemScepter bronzeScepter;
+    public static ItemScepter ironScepter;
+    public static ItemScepter goldScepter;
+    public static ItemScepter diamondScepter;
+    
     // dagger
     public static ItemDagger woodenDagger;
     public static ItemDagger stoneDagger;
@@ -172,27 +167,9 @@ public class ModItems
     public static ItemHammer bronzeHammer;
     public static ItemHammer ironHammer;
     public static ItemHammer goldHammer;
-    public static ItemHammer diamondHammer;
-    
-    // spear
-    public static ItemSpear woodenSpear;
-    public static ItemSpear stoneSpear;
-    public static ItemSpear copperSpear;
-    public static ItemSpear bronzeSpear;
-    public static ItemSpear ironSpear;
-    public static ItemSpear goldSpear;
-    public static ItemSpear diamondSpear;
-    
-    // great sword
-    public static ItemGreatSword woodenGreatSword;
-    public static ItemGreatSword stoneGreatSword;
-    public static ItemGreatSword copperGreatSword;
-    public static ItemGreatSword bronzeGreatSword;
-    public static ItemGreatSword ironGreatSword;
-    public static ItemGreatSword goldGreatSword;
-    public static ItemGreatSword diamondGreatSword;
+    public static ItemHammer diamondHammer;   
     
-    // great sword
+    // battle axe
     public static ItemBattleAxe woodenBattleAxe;
     public static ItemBattleAxe stoneBattleAxe;
     public static ItemBattleAxe copperBattleAxe;
@@ -201,23 +178,12 @@ public class ModItems
     public static ItemBattleAxe goldBattleAxe;
     public static ItemBattleAxe diamondBattleAxe;
     
-    // guns
-    public static ItemBase revolverBullet;
-    public static ItemBase musketAmmunition;
-    
-    public static ItemGun ironMusket;
-    public static ItemGun silverMusket;
-    public static ItemGun ironRevolver;
-    public static ItemGun silverRevolver;
-    
     // key
-    //public static ItemKey woodenKey;
     public static ItemKey silverKey;
     public static ItemKey copperKey;
     public static ItemKey bronzeKey;
     public static ItemKey ironKey;
     public static ItemKey goldKey;
-    //public static ItemKey diamondKey;
     
     // coins
     public static ItemBase copperCoin;
@@ -225,7 +191,7 @@ public class ModItems
     public static ItemBase goldCoin;
     
     // misc
-    public static ItemScroll scroll;
+    public static ItemScroll magicScroll;
     public static ItemBed realHayBed; 
     public static ItemBase hayBundle; 
     public static ItemBase batWing; 
@@ -234,10 +200,14 @@ public class ModItems
     public static ItemBase bearBlackFur; 
     public static ItemBase bearPolarFur; 
     public static ItemBlockSpecial campFire; 
+    public static ItemBase cloth;
     public static ItemBase coarseCloth;
     public static ItemGemStone gemStone;
     public static ItemGemStone rawGemStone;
     public static ItemGemStone flawlessGemStone;
+    public static ItemBase scroll;
+    public static ItemBase soulStone;
+    public static ItemBase piercingStone;
     
     // food
     public static ItemColoredSoup coloredSoup;
@@ -311,6 +281,8 @@ public class ModItems
         bronzePickaxe = register(r, new ItemPickaxe(TOOL_BRONZE, "bronze_pickaxe", "pickaxeBronze"));
         bronzeAxe = register(r, new ItemAxe(TOOL_BRONZE, 8, -3.0f, "bronze_axe", "hatchetBronze"));
         bronzeHoe = register(r, new ItemHoe(TOOL_BRONZE, "bronze_hoe", "hoeBronze"));
+        
+        sling = register(r, new ItemSling("sling", "sling"));
                
         // armor
         copperHelmet = register(r, new ItemArmor(ARMOR_COPPER, EntityEquipmentSlot.HEAD, "copper_helmet", "helmetCopper"));
@@ -328,20 +300,7 @@ public class ModItems
         suitLeggings = register(r, new ItemArmor(ARMOR_SUIT, EntityEquipmentSlot.LEGS, "suit_leggings", "leggingsSuit"));
         suitBoots = register(r, new ItemArmor(ARMOR_SUIT, EntityEquipmentSlot.FEET, "suit_boots", "bootsSuit"));
         
-        strawHat = register(r, new ItemHat(ARMOR_STRAW, "straw_hat", "hatStraw"));
-        
-        // wands
-        woodenWand = register(r, new ItemWand("wood_wand", "wandWood", Item.ToolMaterial.WOOD, 1));
-        stoneWand = register(r, new ItemWand("stone_wand", "wandStone", Item.ToolMaterial.STONE, 1));
-        copperWand = register(r, new ItemWand("copper_wand", "wandCopper", TOOL_COPPER, 2));
-        bronzeWand = register(r, new ItemWand("bronze_wand", "wandBronze", TOOL_BRONZE, 2));
-        ironWand = register(r, new ItemWand("iron_wand", "wandIron", Item.ToolMaterial.IRON, 2));
-        goldWand = register(r, new ItemWand("gold_wand", "wandGold", Item.ToolMaterial.GOLD, 6));
-        emeraldWand = register(r, new ItemWand("emerald_wand", "wandEmerald", TOOL_EMERALD, 4));
-        redstoneWand = register(r, new ItemWand("redstone_wand", "wandRedstone", TOOL_REDSTONE, 5));
-        lapisWand = register(r, new ItemWand("lapis_wand", "wandLapis", TOOL_LAPIS, 6));
-        diamondWand = register(r, new ItemWand("diamond_wand", "wandDiamond", Item.ToolMaterial.DIAMOND, 4));
-        silverWand = register(r, new ItemWand("silver_wand", "wandSilver", TOOL_SILVER, 6));
+        strawHat = register(r, new ItemHat(ARMOR_STRAW, "straw_hat", "hatStraw"));        
         
         // sticks
         woodenStick = register(r, new ItemStick("wood_stick", "stickWood", Item.ToolMaterial.WOOD));
@@ -352,6 +311,15 @@ public class ModItems
         goldStick = register(r, new ItemStick("gold_stick", "stickGold", Item.ToolMaterial.GOLD));
         diamondStick = register(r, new ItemStick("diamond_stick", "stickDiamond", Item.ToolMaterial.DIAMOND));
         
+        // scepter
+        woodenScepter = register(r, new ItemScepter("wood_scepter", "scepterWood", Item.ToolMaterial.WOOD));
+        stoneScepter = register(r, new ItemScepter("stone_scepter", "scepterStone", Item.ToolMaterial.STONE));
+        copperScepter = register(r, new ItemScepter("copper_scepter", "scepterCopper", TOOL_COPPER));
+        bronzeScepter = register(r, new ItemScepter("bronze_scepter", "scepterBronze", TOOL_BRONZE));
+        ironScepter = register(r, new ItemScepter("iron_scepter", "scepterIron", Item.ToolMaterial.IRON));
+        goldScepter = register(r, new ItemScepter("gold_scepter", "scepterGold", Item.ToolMaterial.GOLD));
+        diamondScepter = register(r, new ItemScepter("diamond_scepter", "scepterDiamond", Item.ToolMaterial.DIAMOND));
+        
         // dagger
         woodenDagger = register(r, new ItemDagger("wood_dagger", "daggerWood", Item.ToolMaterial.WOOD));
         stoneDagger = register(r, new ItemDagger("stone_dagger", "daggerStone", Item.ToolMaterial.STONE));
@@ -370,24 +338,6 @@ public class ModItems
         goldHammer = register(r, new ItemHammer("gold_hammer", "hammerGold", Item.ToolMaterial.GOLD));
         diamondHammer = register(r, new ItemHammer("diamond_hammer", "hammerDiamond", Item.ToolMaterial.DIAMOND));
         
-        // spear
-        woodenSpear = register(r, new ItemSpear("wood_spear", "spearWood", Item.ToolMaterial.WOOD));
-        stoneSpear = register(r, new ItemSpear("stone_spear", "spearStone", Item.ToolMaterial.STONE));
-        copperSpear = register(r, new ItemSpear("copper_spear", "spearCopper", TOOL_COPPER));
-        bronzeSpear = register(r, new ItemSpear("bronze_spear", "spearBronze", TOOL_BRONZE));
-        ironSpear = register(r, new ItemSpear("iron_spear", "spearIron", Item.ToolMaterial.IRON));
-        goldSpear = register(r, new ItemSpear("gold_spear", "spearGold", Item.ToolMaterial.GOLD));
-        diamondSpear = register(r, new ItemSpear("diamond_spear", "spearDiamond", Item.ToolMaterial.DIAMOND));
-        
-        // great sword
-        woodenGreatSword = register(r, new ItemGreatSword("wood_greatsword", "greatSwordWood", Item.ToolMaterial.WOOD));
-        stoneGreatSword = register(r, new ItemGreatSword("stone_greatsword", "greatSwordStone", Item.ToolMaterial.STONE));
-        copperGreatSword = register(r, new ItemGreatSword("copper_greatsword", "greatSwordCopper", TOOL_COPPER));
-        bronzeGreatSword = register(r, new ItemGreatSword("bronze_greatsword", "greatSwordBronze", TOOL_BRONZE));
-        ironGreatSword = register(r, new ItemGreatSword("iron_greatsword", "greatSwordIron", Item.ToolMaterial.IRON));
-        goldGreatSword = register(r, new ItemGreatSword("gold_greatsword", "greatSwordGold", Item.ToolMaterial.GOLD));
-        diamondGreatSword = register(r, new ItemGreatSword("diamond_greatsword", "greatSwordDiamond", Item.ToolMaterial.DIAMOND));
-        
         // battle axe
         woodenBattleAxe = register(r, new ItemBattleAxe("wood_battleaxe", "battleAxeWood", Item.ToolMaterial.WOOD));
         stoneBattleAxe = register(r, new ItemBattleAxe("stone_battleaxe", "battleAxeStone", Item.ToolMaterial.STONE));
@@ -396,32 +346,13 @@ public class ModItems
         ironBattleAxe = register(r, new ItemBattleAxe("iron_battleaxe", "battleAxeIron", Item.ToolMaterial.IRON));
         goldBattleAxe = register(r, new ItemBattleAxe("gold_battleaxe", "battleAxeGold", Item.ToolMaterial.GOLD));
         diamondBattleAxe = register(r, new ItemBattleAxe("diamond_battleaxe", "battleAxeDiamond", Item.ToolMaterial.DIAMOND));
-        
-        // guns
-        musketAmmunition = register(r, new ItemBase("musket_ammunition", "musketAmmunition").setCreativeTab(CreativeTabs.COMBAT));
-        revolverBullet = register(r, new ItemBase("revolver_bullet", "revolverBullet").setCreativeTab(CreativeTabs.COMBAT));
-    
-        ironMusket = register(r, new ItemGun("iron_musket", "musketIron", 
-                Item.ToolMaterial.IRON, 312, musketAmmunition, 12, 0.1d, 80, 1,
-                Sounds.MUSKET_SHOT, Sounds.MUSKET_RELOAD, Sounds.MUSKET_CRIT));
-        silverMusket = register(r, new ItemGun("silver_musket", "musketSilver", 
-                TOOL_SILVER, 504, musketAmmunition, 12, 0.1d, 80, 1,
-                Sounds.MUSKET_SHOT, Sounds.MUSKET_RELOAD, Sounds.MUSKET_CRIT));
-        ironRevolver = register(r, new ItemGun("iron_revolver", "revolverIron", 
-                Item.ToolMaterial.IRON, 384, revolverBullet, 5, 20, 6,
-                Sounds.REVOLVER_SHOT, Sounds.REVOLVER_RELOAD, Sounds.REVOLVER_CRIT));
-        silverRevolver = register(r, new ItemGun("silver_revolver", "revolverSilver", 
-                TOOL_SILVER, 600, revolverBullet, 5, 20, 6,
-                Sounds.REVOLVER_SHOT, Sounds.REVOLVER_RELOAD, Sounds.REVOLVER_CRIT));
-        
+              
         // key
-        //woodenKey = register(r, new ItemKey("wood_key", "keyWood", Item.ToolMaterial.WOOD));
         silverKey = register(r, new ItemKey("silver_key", "keySilver", TOOL_SILVER));
         copperKey = register(r, new ItemKey("copper_key", "keyCopper", TOOL_COPPER));
         bronzeKey = register(r, new ItemKey("bronze_key", "keyBronze", TOOL_BRONZE));
         ironKey = register(r, new ItemKey("iron_key", "keyIron", Item.ToolMaterial.IRON));
         goldKey = register(r, new ItemKey("gold_key", "keyGold", Item.ToolMaterial.GOLD));
-        //diamondKey = register(r, new ItemKey("diamond_key", "keyDiamond", Item.ToolMaterial.DIAMOND));
         
         // coins
         copperCoin = register(r, new ItemBase("coin_copper", "coinCopper").setCreativeTab(CreativeTabs.MISC));
@@ -429,7 +360,7 @@ public class ModItems
         goldCoin = register(r, new ItemBase("coin_gold", "coinGold").setCreativeTab(CreativeTabs.MISC));
         
         // misc
-        scroll = register(r, (ItemScroll) new ItemScroll("scroll", "scroll").setCreativeTab(CreativeTabs.MISC));
+        magicScroll = register(r, (ItemScroll) new ItemScroll("magic_scroll", "magicScroll").setCreativeTab(CreativeTabs.MISC));
         realHayBed = register(r, new ItemBed("real_hay_bed", "realHayBed"));
         hayBundle = register(r, new ItemBase("hay_bundle", "bundleHay").setCreativeTab(CreativeTabs.MATERIALS));
         batWing = register(r, new ItemBase("bat_wing", "batWing").setCreativeTab(CreativeTabs.MATERIALS));
@@ -437,17 +368,21 @@ public class ModItems
         bearBrownFur = register(r, new ItemBase("bear_brown_fur", "bearBrownFur").setCreativeTab(CreativeTabs.MATERIALS));
         bearBlackFur = register(r, new ItemBase("bear_black_fur", "bearBlackFur").setCreativeTab(CreativeTabs.MATERIALS));
         bearPolarFur = register(r, new ItemBase("bear_polar_fur", "bearPolarFur").setCreativeTab(CreativeTabs.MATERIALS));
+        cloth = register(r, new ItemBase("cloth", "cloth").setCreativeTab(CreativeTabs.MATERIALS));
         coarseCloth = register(r, new ItemBase("coarse_cloth", "coarseCloth").setCreativeTab(CreativeTabs.MATERIALS));
         gemStone = register(r, new ItemGemStone("gem_stone", "gemStone"));
         rawGemStone = register(r, new ItemGemStone("raw_gem_stone", "rawGemStone"));
         flawlessGemStone = register(r, new ItemGemStone("flawless_gem_stone", "flawlessGemStone"));
+        scroll = register(r, new ItemBase("scroll", "scroll").setCreativeTab(CreativeTabs.MISC));
+        soulStone = register(r, new ItemBase("soul_stone", "soulStone").setCreativeTab(CreativeTabs.MATERIALS));
+        piercingStone = register(r, new ItemBase("piercing_stone", "piercingStone").setCreativeTab(CreativeTabs.MATERIALS));
         
         // food
         coloredSoup = register(r, new ItemColoredSoup("colored_soup", "soupColored"));
-        apricot = register(r, new ItemFood("apricot", "apricot", 4, 0.3f, false));
         friedEgg = register(r, new ItemFood("fried_egg", "friedEgg", 2, 0.3f, false));
         mushroomStickRaw = register(r, new ItemBase("mushroom_stick_raw", "mushroomStickRaw").setCreativeTab(CreativeTabs.FOOD));
         mushroomStickCooked = register(r, new ItemFood("mushroom_stick_cooked", "mushroomStickCooked", 9, 0.9f, false));
+        apricot = register(r, new ItemFood("apricot", "apricot", 4, 0.3f, false));
         pear = register(r, new ItemFood("pear", "pear", 4, 0.3f, false));
         plum = register(r, new ItemFood("plum", "plum", 4, 0.3f, false));
         
@@ -515,14 +450,6 @@ public class ModItems
         // workaround
         EnumMetals.fixMetalIngots();
     }
-    
-    public static void fixSounds()
-    {
-        ironMusket.fixSounds(Sounds.MUSKET_SHOT, Sounds.MUSKET_RELOAD, Sounds.MUSKET_CRIT);
-        silverMusket.fixSounds(Sounds.MUSKET_SHOT, Sounds.MUSKET_RELOAD, Sounds.MUSKET_CRIT);
-        ironRevolver.fixSounds(Sounds.REVOLVER_SHOT, Sounds.REVOLVER_RELOAD, Sounds.REVOLVER_CRIT);
-        silverRevolver.fixSounds(Sounds.REVOLVER_SHOT, Sounds.REVOLVER_RELOAD, Sounds.REVOLVER_CRIT);
-    }
 	
     private static <T extends Item> T register(IForgeRegistry<Item> r, T item) 
     {

+ 1 - 18
src/main/java/me/km/items/weapons/ItemBattleAxe.java

@@ -1,28 +1,11 @@
 package me.km.items.weapons;
 
-import com.google.common.collect.Multimap;
-import net.minecraft.entity.ai.attributes.AttributeModifier;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.inventory.EntityEquipmentSlot;
 import net.minecraft.item.Item;
 
 public class ItemBattleAxe extends ItemWeapon
 {
-    private static final AttributeModifier BOOST = new AttributeModifier("extended reach", 0.5d, 0);
-    
     public ItemBattleAxe(String name, String local, Item.ToolMaterial material) 
     {
-        super(name, local, material, 5, 0.5d);
-    }
-    
-    @Override
-    public Multimap<String, AttributeModifier> getItemAttributeModifiers(EntityEquipmentSlot equipmentSlot)
-    {
-        Multimap<String, AttributeModifier> map = super.getItemAttributeModifiers(equipmentSlot);
-        if (equipmentSlot == EntityEquipmentSlot.MAINHAND)
-        {
-            map.put(EntityPlayer.REACH_DISTANCE.getName(), BOOST);
-        }
-        return map;
+        super(name, local, material, 5, 1.0d);
     }
 }

+ 0 - 28
src/main/java/me/km/items/weapons/ItemGreatSword.java

@@ -1,28 +0,0 @@
-package me.km.items.weapons;
-
-import com.google.common.collect.Multimap;
-import net.minecraft.entity.ai.attributes.AttributeModifier;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.inventory.EntityEquipmentSlot;
-import net.minecraft.item.Item;
-
-public class ItemGreatSword extends ItemWeapon
-{
-    private static final AttributeModifier BOOST = new AttributeModifier("extended reach", 0.5d, 0);
-    
-    public ItemGreatSword(String name, String local, Item.ToolMaterial material) 
-    {
-        super(name, local, material, 6, 0.8d);
-    }
-    
-    @Override
-    public Multimap<String, AttributeModifier> getItemAttributeModifiers(EntityEquipmentSlot equipmentSlot)
-    {
-        Multimap<String, AttributeModifier> map = super.getItemAttributeModifiers(equipmentSlot);
-        if (equipmentSlot == EntityEquipmentSlot.MAINHAND)
-        {
-            map.put(EntityPlayer.REACH_DISTANCE.getName(), BOOST);
-        }
-        return map;
-    }
-}

+ 0 - 238
src/main/java/me/km/items/weapons/ItemGun.java

@@ -1,238 +0,0 @@
-package me.km.items.weapons;
-
-import java.util.List;
-import me.km.api.Utils;
-import net.minecraft.client.util.ITooltipFlag;
-import net.minecraft.entity.EntityLivingBase;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.stats.StatList;
-import net.minecraft.util.ActionResult;
-import net.minecraft.util.DamageSource;
-import net.minecraft.util.EnumActionResult;
-import net.minecraft.util.EnumHand;
-import net.minecraft.util.SoundCategory;
-import net.minecraft.util.SoundEvent;
-import net.minecraft.util.text.TextFormatting;
-import net.minecraft.world.World;
-import net.minecraftforge.common.capabilities.ICapabilityProvider;
-import net.minecraftforge.fml.relauncher.Side;
-import net.minecraftforge.fml.relauncher.SideOnly;
-
-public class ItemGun extends ItemWeapon
-{
-    private static final double STANDARD_AIM = 0.03125d;
-    private final Item ammo;
-    private final int damage;
-    private final double missAim;
-    private final int cooldown;
-    private final int maxLoad;
-    
-    private SoundEvent soundShot;
-    private SoundEvent soundReload;
-    private SoundEvent soundCrit;
-    
-    public ItemGun(String name, String local, ToolMaterial material, int durability, 
-            float attackDamage, Item ammo, int damage, double missAim, int cooldown, int maxLoad,
-            SoundEvent soundShot, SoundEvent soundReload, SoundEvent soundCrit) 
-    {
-        super(name, local, material, attackDamage);
-        super.setMaxDamage(durability);
-        this.ammo = ammo;
-        this.damage = damage;
-        this.missAim = missAim;
-        this.cooldown = cooldown;
-        this.maxLoad = maxLoad;
-        this.soundShot = soundShot;
-        this.soundReload = soundReload;
-        this.soundCrit = soundCrit;
-    }
-    
-    public ItemGun(String name, String local, ToolMaterial material, int durability, 
-            Item ammo, int damage, double missAim, int cooldown, int maxLoad,
-            SoundEvent soundShot, SoundEvent soundReload, SoundEvent soundCrit) 
-    {
-        this(name, local, material, durability, 0, ammo, damage, missAim, 
-                cooldown, maxLoad, soundShot, soundReload, soundCrit);
-    }
-    
-    public ItemGun(String name, String local, ToolMaterial material, int durability, 
-            Item ammo, int damage, int cooldown, int maxLoad,
-            SoundEvent soundShot, SoundEvent soundReload, SoundEvent soundCrit)
-    {
-        this(name, local, material, durability, ammo, damage, STANDARD_AIM, 
-                cooldown, maxLoad, soundShot, soundReload, soundCrit);
-    }
-    
-    public void fixSounds(SoundEvent soundShot, SoundEvent soundReload, SoundEvent soundCrit)
-    {
-        this.soundShot = soundShot;
-        this.soundReload = soundReload;
-        this.soundCrit = soundCrit;
-    }
-    
-    @Override
-    public ICapabilityProvider initCapabilities(ItemStack stack, NBTTagCompound nbt) 
-    {
-        getTagCompound(stack);
-        return null;
-    }  
-    
-    private NBTTagCompound getTagCompound(ItemStack stack)
-    {
-        NBTTagCompound com = stack.getTagCompound();
-        if(com == null)
-        {
-            com = new NBTTagCompound();
-            com.setInteger("load", 0);
-            stack.setTagCompound(com);
-        }
-        else if(!com.hasKey("load"))
-        {
-            com.setInteger("load", 0);         
-        }
-        return com;
-    }
-    
-    private int getLoad(ItemStack stack)
-    {
-        return getTagCompound(stack).getInteger("load");
-    }
-    
-    private void setLoad(ItemStack stack, int load)
-    {
-        getTagCompound(stack).setInteger("load", load);
-    }
-    
-    @SideOnly(Side.CLIENT)
-    @Override
-    public void addInformation(ItemStack stack, World w, List<String> lore, ITooltipFlag flag) 
-    {
-        int load = getLoad(stack);
-        if(load >= 0)
-        {
-            if(load == 1)
-            {
-                lore.add(1, TextFormatting.GOLD + "1 shot loaded");
-            }
-            else
-            {
-                lore.add(1, TextFormatting.GOLD + "" + load + " shots loaded");
-            }
-        }
-    }
-    
-    @Override
-    public void onPlayerStoppedUsing(ItemStack stack, World w, EntityLivingBase liv, int timeLeft)
-    {
-        if(liv instanceof EntityPlayer)
-        {
-            EntityPlayer p = (EntityPlayer) liv;
-            int load = getLoad(stack);
-            if(load > 0)
-            {
-                p.getCooldownTracker().setCooldown(this, 10);
-                if (!w.isRemote)
-                {
-                    stack.damageItem(1, p);
-                    double d = missAim;
-                    if(d > STANDARD_AIM)
-                    {
-                        int time = ((this.getMaxItemUseDuration(stack) - timeLeft) / 20) + 1;
-                        d = Math.max(STANDARD_AIM, d / time);
-                    }
-                    EntityLivingBase target = Utils.getTargetedEntity(p, 128, d, d, d, EntityLivingBase.class);
-                    if(target != null)
-                    {
-                        target.attackEntityFrom(DamageSource.causePlayerDamage(p), damage);
-                    }   
-                }
-                
-                setLoad(stack, load - 1);
-                playSound(p, w, soundShot);
-                p.addStat(StatList.getObjectUseStats(this));
-            }
-        }
-    }
-    
-    private void playSound(EntityPlayer p, World w, SoundEvent e)
-    {
-        w.playSound(null, p.posX, p.posY, p.posZ, e, SoundCategory.PLAYERS, 1.0F, 1.0f / (itemRand.nextFloat() * 0.4f + 1.2f));
-    }
-
-    @Override
-    public int getMaxItemUseDuration(ItemStack stack)
-    {
-        return 72000;
-    }
-    
-    private boolean isAmmo(ItemStack stack)
-    {
-        return stack.getItem() == ammo;
-    }
-    
-    private ItemStack findAmmo(EntityPlayer p)
-    {
-        if(this.isAmmo(p.getHeldItem(EnumHand.OFF_HAND)))
-        {
-            return p.getHeldItem(EnumHand.OFF_HAND);
-        }
-        else if(this.isAmmo(p.getHeldItem(EnumHand.MAIN_HAND)))
-        {
-            return p.getHeldItem(EnumHand.MAIN_HAND);
-        }
-        else
-        {
-            ItemStack stack;
-            for(int i = 0; i < p.inventory.getSizeInventory(); i++)
-            {
-                stack = p.inventory.getStackInSlot(i);
-                if(this.isAmmo(stack))
-                {
-                    return stack;
-                }
-            }
-            return ItemStack.EMPTY;
-        }
-    }
-
-    @Override
-    public ActionResult<ItemStack> onItemRightClick(World w, EntityPlayer p, EnumHand hand)
-    {
-        ItemStack stack = p.getHeldItem(hand);    
-        int load = getLoad(stack);
-        if(p.isSneaking())
-        {
-            if(load >= maxLoad)
-            {
-                return new ActionResult(EnumActionResult.FAIL, stack);
-            }
-            if(p.capabilities.isCreativeMode)
-            {
-                setLoad(stack, load + 1);
-                p.getCooldownTracker().setCooldown(this, cooldown);
-                playSound(p, w, soundReload);
-            }
-            else
-            {
-                ItemStack ammoStack = findAmmo(p);
-                if(!ammoStack.isEmpty())
-                {
-                    setLoad(stack, load + 1);
-                    p.getCooldownTracker().setCooldown(this, cooldown);
-                    ammoStack.shrink(1);
-                    if(ammoStack.isEmpty())
-                    {
-                        p.inventory.deleteStack(ammoStack);
-                    }
-                    playSound(p, w, soundReload);
-                }
-            }
-            return new ActionResult(EnumActionResult.FAIL, stack);
-        }
-        p.setActiveHand(hand);
-        return new ActionResult<>(EnumActionResult.SUCCESS, p.getHeldItem(hand));
-    }
-}

+ 11 - 0
src/main/java/me/km/items/weapons/ItemScepter.java

@@ -0,0 +1,11 @@
+package me.km.items.weapons;
+
+import net.minecraft.item.Item;
+
+public class ItemScepter extends ItemWeapon
+{
+    public ItemScepter(String name, String local, Item.ToolMaterial m) 
+    {
+        super(name, local, m, 1, 1.4d);
+    }
+}

+ 179 - 0
src/main/java/me/km/items/weapons/ItemSling.java

@@ -0,0 +1,179 @@
+package me.km.items.weapons;
+
+import javax.annotation.Nullable;
+import me.km.entities.EntityItemProjectile;
+import me.km.items.ItemBase;
+import me.km.items.ModItems;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.SoundEvents;
+import net.minecraft.item.EnumAction;
+import net.minecraft.item.IItemPropertyGetter;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.stats.StatList;
+import net.minecraft.util.ActionResult;
+import net.minecraft.util.EnumActionResult;
+import net.minecraft.util.EnumHand;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.util.SoundCategory;
+import net.minecraft.world.World;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
+
+public class ItemSling extends ItemBase
+{
+    public ItemSling(String name, String local) 
+    {
+        super(name, local);
+        super.maxStackSize = 1;
+        super.setMaxDamage(192);
+        super.setCreativeTab(CreativeTabs.COMBAT);
+        this.addPropertyOverride(new ResourceLocation("pull"), new IItemPropertyGetter()
+        {
+            @SideOnly(Side.CLIENT)
+            @Override
+            public float apply(ItemStack stack, @Nullable World w, @Nullable EntityLivingBase ent)
+            {
+                if (ent == null)
+                {
+                    return 0f;
+                }
+                else
+                {
+                    return ent.getActiveItemStack().getItem() != ModItems.sling ? 0f : (stack.getMaxItemUseDuration() - ent.getItemInUseCount()) / 20.0F;
+                }
+            }
+        });
+        this.addPropertyOverride(new ResourceLocation("pulling"), new IItemPropertyGetter()
+        {
+            @SideOnly(Side.CLIENT)
+            @Override
+            public float apply(ItemStack stack, @Nullable World w, @Nullable EntityLivingBase ent)
+            {
+                return ent != null && ent.isHandActive() && ent.getActiveItemStack() == stack ? 1f : 0f;
+            }
+        });
+    }
+    
+    private ItemStack findAmmo(EntityPlayer p)
+    {
+        if(this.isAmmo(p.getHeldItem(EnumHand.OFF_HAND)))
+        {
+            return p.getHeldItem(EnumHand.OFF_HAND);
+        }
+        else if(this.isAmmo(p.getHeldItem(EnumHand.MAIN_HAND)))
+        {
+            return p.getHeldItem(EnumHand.MAIN_HAND);
+        }
+        else
+        {
+            ItemStack stack;
+            for(int i = 0; i < p.inventory.getSizeInventory(); i++)
+            {
+                stack = p.inventory.getStackInSlot(i);
+                if(this.isAmmo(stack))
+                {
+                    return stack;
+                }
+            }
+            return ItemStack.EMPTY;
+        }
+    }
+    
+    private boolean isAmmo(ItemStack stack)
+    {
+        return stack.getItem() == Item.getItemFromBlock(Blocks.COBBLESTONE);
+    }
+
+    @Override
+    public void onPlayerStoppedUsing(ItemStack stack, World w, EntityLivingBase liv, int timeLeft)
+    {
+        if(liv instanceof EntityPlayer)
+        {
+            int i = this.getMaxItemUseDuration(stack) - timeLeft;
+            if(i < 0)
+            {
+                return;
+            }            
+            EntityPlayer p = (EntityPlayer) liv;
+            ItemStack ammo = this.findAmmo(p);
+            if(!ammo.isEmpty() || p.capabilities.isCreativeMode)
+            {
+                if(ammo.isEmpty())
+                {
+                    ammo = new ItemStack(Blocks.COBBLESTONE);
+                }
+                
+                float f = getArrowVelocity(i);
+                if(f >= 0.1)
+                {
+                    if(!w.isRemote)
+                    {
+                        ItemStack ammoCopy = ammo.copy();
+                        ammoCopy.setCount(1);
+                        EntityItemProjectile proj = new EntityItemProjectile(p, ammoCopy, 2.0f);
+                        proj.shoot(p, p.rotationPitch, p.rotationYaw, f, 1.0F);                     
+                        stack.damageItem(1, p);
+                        w.spawnEntity(proj);
+                    }
+                    
+                    w.playSound(null, p.posX, p.posY, p.posZ, SoundEvents.ENTITY_ARROW_SHOOT, SoundCategory.PLAYERS, 1f, 1f / (itemRand.nextFloat() * 0.4f + 1.2f) + f * 0.5f);
+                    
+                    if(!p.capabilities.isCreativeMode)
+                    {
+                        ammo.shrink(1);
+                        if(ammo.isEmpty())
+                        {
+                            p.inventory.deleteStack(ammo);
+                        }
+                    }
+                    p.addStat(StatList.getObjectUseStats(this));
+                }
+            }
+        }
+    }
+
+    public static float getArrowVelocity(int charge)
+    {
+        float f = charge / 20.0F;
+        f = (f * f + f * 2.0F) / 3.0F;
+        if(f > 1.0F)
+        {
+            f = 1.0F;
+        }
+        return f;
+    }
+
+    @Override
+    public int getMaxItemUseDuration(ItemStack stack)
+    {
+        return 72000;
+    }
+
+    @Override
+    public ActionResult<ItemStack> onItemRightClick(World w, EntityPlayer p, EnumHand handIn)
+    {
+        ItemStack ammo = p.getHeldItem(handIn);
+        if(!p.capabilities.isCreativeMode && this.findAmmo(p).isEmpty())
+        {
+            return new ActionResult(EnumActionResult.FAIL, ammo);
+        }
+        p.setActiveHand(handIn);
+        return new ActionResult<>(EnumActionResult.SUCCESS, ammo);
+    }
+
+    @Override
+    public int getItemEnchantability()
+    {
+        return 1;
+    }
+    
+    @Override
+    public EnumAction getItemUseAction(ItemStack stack)
+    {
+        return EnumAction.BOW;
+    }
+}

+ 0 - 27
src/main/java/me/km/items/weapons/ItemSpear.java

@@ -1,27 +0,0 @@
-package me.km.items.weapons;
-
-import com.google.common.collect.Multimap;
-import net.minecraft.entity.ai.attributes.AttributeModifier;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.inventory.EntityEquipmentSlot;
-
-public class ItemSpear extends ItemWeapon
-{
-    private static final AttributeModifier BOOST = new AttributeModifier("extended reach", 1, 0);
-    
-    public ItemSpear(String name, String local, ToolMaterial material) 
-    {
-        super(name, local, material, 6, 0.8d);
-    }
-    
-    @Override
-    public Multimap<String, AttributeModifier> getItemAttributeModifiers(EntityEquipmentSlot equipmentSlot)
-    {
-        Multimap<String, AttributeModifier> map = super.getItemAttributeModifiers(equipmentSlot);
-        if (equipmentSlot == EntityEquipmentSlot.MAINHAND)
-        {
-            map.put(EntityPlayer.REACH_DISTANCE.getName(), BOOST);
-        }
-        return map;
-    }
-}

+ 0 - 1
src/main/java/me/km/items/weapons/ItemStick.java

@@ -1,6 +1,5 @@
 package me.km.items.weapons;
 
-import me.km.items.weapons.ItemWeapon;
 import net.minecraft.item.Item;
 
 public class ItemStick extends ItemWeapon

+ 0 - 132
src/main/java/me/km/items/weapons/ItemWand.java

@@ -1,132 +0,0 @@
-package me.km.items.weapons;
-
-import java.util.List;
-import me.km.KajetansMod;
-import me.km.api.GlobalText;
-import me.km.api.Utils;
-import me.km.effects.Effect;
-import me.km.effects.EffectCause;
-import me.km.effects.EffectUtils;
-import net.minecraft.client.util.ITooltipFlag;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.entity.player.EntityPlayerMP;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.stats.StatList;
-import net.minecraft.util.ActionResult;
-import net.minecraft.util.EnumActionResult;
-import net.minecraft.util.EnumHand;
-import net.minecraft.world.World;
-import net.minecraftforge.common.capabilities.ICapabilityProvider;
-import net.minecraftforge.fml.relauncher.Side;
-import net.minecraftforge.fml.relauncher.SideOnly;
-
-public class ItemWand extends ItemWeapon
-{
-    private final int strength;
-    private final String roman;
-    
-    public ItemWand(String name, String local, ToolMaterial material, int strength) 
-    {
-        super(name, local, material, 0, 1);
-        this.strength = strength;
-        this.roman = " " + Utils.intToRoman(strength);
-    }
-    
-    @Override
-    public ActionResult<ItemStack> onItemRightClick(World w, EntityPlayer p, EnumHand hand) 
-    {
-        if(w.isRemote || KajetansMod.singlePlayer)
-        {
-            return new ActionResult(EnumActionResult.SUCCESS, p.getHeldItem(hand));
-        }
-        
-        if(!KajetansMod.worldManager.getWorldPreferences(w).scrolls)
-        {
-            KajetansMod.skills.send(p, GlobalText.noScrolls());
-            return new ActionResult(EnumActionResult.FAIL, p.getHeldItem(hand));
-        }
-        
-        int wand = EffectUtils.getEffectLevel(p, Effect.USE_WAND);
-        if(wand < 1)
-        {
-            KajetansMod.skills.send(p, "Du kannst keine Zauberstäbe benutzen.");
-            return new ActionResult(EnumActionResult.FAIL, p.getHeldItem(hand));
-        }
-        
-        ItemStack stack = p.getHeldItem(hand);
-        NBTTagCompound com = getTagCompound(stack);
-        int id = com.getInteger("effect_id");
-        if(id == -1)
-        {
-            KajetansMod.scrolls.send(p, "Der Zauberstab hat keinen Effekt.");
-            return new ActionResult(EnumActionResult.FAIL, stack);
-        }
-        Effect eff = Effect.getEffect(id);
-        if(eff == null)
-        {
-            KajetansMod.scrolls.send(p, "Der Zauberstab ist korrupt.");
-            return new ActionResult(EnumActionResult.FAIL, stack);
-        }
-        if(eff.getEffectInstance().run((EntityPlayerMP) p, strength, 0, 20, EffectCause.WAND))
-        {
-            if(!p.isCreative())
-            {
-                stack.damageItem(1, p);
-            }
-            p.addStat(StatList.getObjectUseStats(this));
-            return new ActionResult(EnumActionResult.SUCCESS, stack);
-        }
-        return new ActionResult(EnumActionResult.FAIL, stack);
-    }
-    
-    @SideOnly(Side.CLIENT)
-    @Override
-    public void addInformation(ItemStack stack, World w, List<String> lore, ITooltipFlag flag) 
-    {
-        NBTTagCompound com = getTagCompound(stack);
-        String s = com.getString("effect_name");
-        if(!s.isEmpty())
-        {
-            lore.set(0, s + roman);
-        }
-    }
-    
-    @Override
-    public ICapabilityProvider initCapabilities(ItemStack stack, NBTTagCompound nbt) 
-    {
-        getTagCompound(stack);
-        return null;
-    }  
-    
-    private NBTTagCompound getTagCompound(ItemStack stack)
-    {
-        NBTTagCompound com = stack.getTagCompound();
-        if(com == null)
-        {
-            com = new NBTTagCompound();
-            com.setInteger("effect_id", -1);
-            com.setString("effect_name", "");
-            stack.setTagCompound(com);
-        }
-        else 
-        {
-            if(!com.hasKey("effect_id"))
-            {
-                com.setInteger("effect_id", -1);     
-            }
-            if(!com.hasKey("effect_name"))
-            {
-                com.setString("effect_name", "");     
-            }
-        }
-        return com;
-    }
-    
-    public void setEffect(ItemStack stack, int id, String name)
-    {
-        NBTTagCompound com = getTagCompound(stack);
-        com.setInteger("effect_id", id);
-        com.setString("effect_name", name);  
-    }
-}

+ 96 - 1
src/main/java/me/km/networking/Icon.java

@@ -24,7 +24,102 @@ public enum Icon
     EMPTY_COLD(27, 27, 9, 9),
     FULL_ENERGY(9, 36, 9, 9),
     HALF_ENERGY(18, 36, 9, 9),
-    EMPTY_ENERGY(27, 36, 9, 9);
+    EMPTY_ENERGY(27, 36, 9, 9),
+    
+    GOLD_COIN(99, 9, 9, 9),
+    SILVER_COIN(108, 9, 9, 9),
+    COPPER_COIN(117, 9, 9, 9),
+    
+    XP_BOTTLE(99, 0, 9, 9),
+    BLUE_BOTTLE(108, 0, 9, 9),
+    RED_BOTTLE(117, 0, 9, 9),
+    ORANGE_BOTTLE(126, 0, 9, 9),
+    LIME_BOTTLE(135, 0, 9, 9),
+    GREEN_BOTTLE(144, 0, 9, 9),
+    VIOLET_BOTTLE(153, 0, 9, 9),
+    YELLOW_BOTTLE(162, 0, 9, 9), 
+    
+    BOW(27, 45, 9, 9),
+    
+    DIAMOND_SHOVEL(36, 9, 9, 9),
+    GOLD_SHOVEL(45, 9, 9, 9),
+    IRON_SHOVEL(54, 9, 9, 9),
+    BRONZE_SHOVEL(63, 9, 9, 9),
+    COPPER_SHOVEL(72, 9, 9, 9),
+    STONE_SHOVEL(81, 9, 9, 9),
+    WOOD_SHOVEL(90, 9, 9, 9),
+    
+    DIAMOND_PICKAXE(36, 18, 9, 9),
+    GOLD_PICKAXE(45, 18, 9, 9),
+    IRON_PICKAXE(54, 18, 9, 9),
+    BRONZE_PICKAXE(63, 18, 9, 9),
+    COPPER_PICKAXE(72, 18, 9, 9),
+    STONE_PICKAXE(81, 18, 9, 9),
+    WOOD_PICKAXE(90, 18, 9, 9),
+    
+    DIAMOND_HOE(36, 27, 9, 9),
+    GOLD_HOE(45, 27, 9, 9),
+    IRON_HOE(54, 27, 9, 9),
+    BRONZE_HOE(63, 27, 9, 9),
+    COPPER_HOE(72, 27, 9, 9),
+    STONE_HOE(81, 27, 9, 9),
+    WOOD_HOE(90, 27, 9, 9),
+    
+    DIAMOND_AXE(36, 36, 9, 9),
+    GOLD_AXE(45, 36, 9, 9),
+    IRON_AXE(54, 36, 9, 9),
+    BRONZE_AXE(63, 36, 9, 9),
+    COPPER_AXE(72, 36, 9, 9),
+    STONE_AXE(81, 36, 9, 9),
+    WOOD_AXE(90, 36, 9, 9),
+    
+    DIAMOND_SWORD(36, 45, 9, 9),
+    GOLD_SWORD(45, 45, 9, 9),
+    IRON_SWORD(54, 45, 9, 9),
+    BRONZE_SWORD(63, 45, 9, 9),
+    COPPER_SWORD(72, 45, 9, 9),
+    STONE_SWORD(81, 45, 9, 9),
+    WOOD_SWORD(90, 45, 9, 9),
+    
+    DIAMOND_DAGGER(36, 54, 9, 9),
+    GOLD_DAGGER(45, 54, 9, 9),
+    IRON_DAGGER(54, 54, 9, 9),
+    BRONZE_DAGGER(63, 54, 9, 9),
+    COPPER_DAGGER(72, 54, 9, 9),
+    STONE_DAGGER(81, 54, 9, 9),
+    WOOD_DAGGER(90, 54, 9, 9),
+    
+    DIAMOND_STICK(36, 63, 9, 9),
+    GOLD_STICK(45, 63, 9, 9),
+    IRON_STICK(54, 63, 9, 9),
+    BRONZE_STICK(63, 63, 9, 9),
+    COPPER_STICK(72, 63, 9, 9),
+    STONE_STICK(81, 63, 9, 9),
+    WOOD_STICK(90, 63, 9, 9),
+    
+    DIAMOND_BATTLE_AXE(36, 72, 9, 9),
+    GOLD_BATTLE_AXE(45, 72, 9, 9),
+    IRON_BATTLE_AXE(54, 72, 9, 9),
+    BRONZE_BATTLE_AXE(63, 72, 9, 9),
+    COPPER_BATTLE_AXE(72, 72, 9, 9),
+    STONE_BATTLE_AXE(81, 72, 9, 9),
+    WOOD_BATTLE_AXE(90, 72, 9, 9),
+    
+    DIAMOND_SCEPTER(36, 81, 9, 9),
+    GOLD_SCEPTER(45, 81, 9, 9),
+    IRON_SCEPTER(54, 81, 9, 9),
+    BRONZE_SCEPTER(63, 81, 9, 9),
+    COPPER_SCEPTER(72, 81, 9, 9),
+    STONE_SCEPTER(81, 81, 9, 9),
+    WOOD_SCEPTER(90, 81, 9, 9),
+    
+    DIAMOND_HAMMER(36, 90, 9, 9),
+    GOLD_HAMMER(45, 90, 9, 9),
+    IRON_HAMMER(54, 90, 9, 9),
+    BRONZE_HAMMER(63, 90, 9, 9),
+    COPPER_HAMMER(72, 90, 9, 9),
+    STONE_HAMMER(81, 90, 9, 9),
+    WOOD_HAMMER(90, 90, 9, 9);
         
     private static final Icon[] icons = Icon.values();
             

+ 14 - 0
src/main/java/me/km/permissions/PermissionManager.java

@@ -89,6 +89,20 @@ public class PermissionManager extends Module implements ICommandManager
         groups.add(id);
     }
     
+    public boolean unregisterPlayer(UUID uuid, int id)
+    {
+        if(id < 0 || id >= stringGroupPerms.size())
+        {
+            throw new IllegalArgumentException("'" + id + "' is no valid group id");
+        }
+        ArrayList<Integer> groups = playerGroups.get(uuid);
+        if(groups == null)
+        {
+            return false;
+        }
+        return groups.remove((Integer) id);
+    }
+    
     public void registerGroupPermission(int id, String perm)
     {
         if(perm.isEmpty())

+ 0 - 1
src/main/java/me/km/permissions/Permissions.java

@@ -112,7 +112,6 @@ public class Permissions
     public final static String PLOT_INFO = "plot.info"; 
     public final static String PLOT_TAG = "plot.tag"; 
     public final static String PLOT_SHARE = "plot.share"; 
-    public final static String PLOT_SIGN = "plot.sign"; 
     public final static String PLOT_BYPASS = "plot.bypass";
     public final static String PLOT_MARK = "plot.mark"; 
 

+ 0 - 72
src/main/java/me/km/plots/CommandPlot.java

@@ -11,14 +11,9 @@ import me.km.api.Utils;
 import me.km.chatmanager.ChatManager;
 import me.km.dimensions.ModDimensions;
 import me.km.permissions.Permissions;
-import me.km.utils.SpecialBlockUtils;
-import net.minecraft.block.Block;
 import net.minecraft.command.ICommandSender;
 import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.init.Blocks;
-import net.minecraft.tileentity.TileEntitySign;
 import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
 
 public class CommandPlot extends ModuleCommand
 {
@@ -463,69 +458,6 @@ public class CommandPlot extends ModuleCommand
                     }
                     break;
                 }
-                case "sign":
-                {
-                    if(KajetansMod.perms.hasPermission(cs, Permissions.PLOT_SIGN) && arg.length >= 3)
-                    {
-                        if(!(cs instanceof EntityPlayer))
-                        {
-                            this.getModule().send(cs, GlobalText.onlyPlayer());
-                            return true;
-                        }
-                        EntityPlayer p = (EntityPlayer) cs;
-                        World w = p.world;
-                        BlockPos pos = Utils.getPlayerTarget(p, 20, true);
-                        Block b = w.getBlockState(pos).getBlock();
-                        if(b == Blocks.STANDING_SIGN || b == Blocks.WALL_SIGN)
-                        {
-                            TileEntitySign sign = (TileEntitySign) w.getTileEntity(pos);
-                            if(sign == null)
-                            {
-                                this.getModule().send(cs, GlobalText.shouldNotHappen());
-                                return true;
-                            }
-                            int i;
-                            try
-                            {
-                                i = Integer.parseInt(arg[1]);
-                                if(i < 0)
-                                {
-                                    throw new NumberFormatException();
-                                }
-                            }
-                            catch(NumberFormatException ex)
-                            {
-                                m.send(cs, GlobalText.cantFindPlayer(GlobalText.noNaturalNumber()));   
-                                return true;
-                            }
-                            try
-                            {
-                                int id = Integer.parseInt(arg[2]);
-                                if(id < 0)
-                                {
-                                    throw new NumberFormatException();      
-                                }
-                                if(!bank.doesPlotExist(id))
-                                {
-                                    m.send(p, "Der Plot mit der ID '" + id + "' ist nicht vorhanden."); 
-                                    return true;
-                                }
-                                SpecialBlockUtils.setSignLine(sign, 0, "§0[§6Plot§0]", false);
-                                SpecialBlockUtils.setSignLine(sign, 1, "§2" + arg[1] + " Emeralds", false);
-                                SpecialBlockUtils.setSignLine(sign, 1, arg[2], true);
-                                return true;
-                            }
-                            catch(NumberFormatException ex)
-                            {
-                                m.send(cs, GlobalText.noNaturalNumber());
-                                return true;
-                            }
-                        }
-                        m.send(cs, "Du bist nicht auf ein Schild gerichtet.");   
-                        return true;
-                    }
-                    break;
-                }
             }
         }
         // Help Menu
@@ -552,10 +484,6 @@ public class CommandPlot extends ModuleCommand
             m.sendHelpListElement(cs, "share <player> [id]", "Fügt einen Spieler hinzu");
             m.sendHelpListElement(cs, "kick <player> [id]", "Entfernt einen Spieler");
         }
-        if(KajetansMod.perms.hasPermission(cs, Permissions.PLOT_SIGN))
-        {
-            m.sendHelpListElement(cs, "sign <price> <id>", "Ändert ein Schild zum Verkaufsschild");
-        }
         return true;
     }
 }

+ 0 - 96
src/main/java/me/km/plots/ProtectionBuyPlot.java

@@ -1,96 +0,0 @@
-package me.km.plots;
-
-import me.km.api.GlobalText;
-import me.km.api.Module;
-import me.km.inventory.InventoryUtils;
-import net.minecraft.block.Block;
-import net.minecraft.block.state.IBlockState;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.init.Blocks;
-import net.minecraft.init.Items;
-import net.minecraft.item.ItemStack;
-import net.minecraft.tileentity.TileEntitySign;
-import net.minecraft.util.EnumHand;
-import net.minecraft.world.World;
-import net.minecraftforge.event.entity.player.PlayerInteractEvent;
-import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
-
-public class ProtectionBuyPlot extends Protection
-{
-    public ProtectionBuyPlot(Module m) 
-    {
-        super(m);
-    }
-    
-    /*@SubscribeEvent
-    public void markRegion(PlayerInteractEvent.RightClickBlock e)
-    {
-        if(e.getHand() == EnumHand.OFF_HAND)
-        {
-            return;
-        }
-        World w = e.getWorld();
-        IBlockState state = w.getBlockState(e.getPos());
-        Block b = state.getBlock();
-        if(b != Blocks.WALL_SIGN && b != Blocks.STANDING_SIGN)
-        {
-            return;
-        }
-        EntityPlayer p = e.getEntityPlayer();
-        TileEntitySign sign = (TileEntitySign) w.getTileEntity(e.getPos());
-        if(sign == null)
-        {
-            this.getModule().send(p, GlobalText.shouldNotHappen());
-            return;
-        }
-        System.out.println("SIGN::" + sign.signText[0].getFormattedText());
-        if(!sign.signText[0].getFormattedText().equals("[§6Plot§0]"))
-        {
-            return;
-        }
-        int costs;
-        try
-        {
-            String s = sign.signText[1].getUnformattedText();
-            if(!s.contains(" "))
-            {
-                throw new NumberFormatException();
-            }
-            costs = Integer.parseInt(s.substring(2, s.indexOf(" ")));
-            if(costs < 0)
-            {
-                throw new NumberFormatException();
-            }
-        }
-        catch(NumberFormatException ex)
-        {
-            this.getModule().send(p, "Die angegebenen Kosten sind ungültig.");  
-            return;
-        }
-        if(InventoryUtils.searchInventoryFor(p.inventory, new ItemStack(Items.EMERALD), false) < costs)
-        {
-            this.getModule().send(p, "Du hast zu wenig Emeralds dabei.");  
-            return;
-        }
-        try
-        {
-            int id = Integer.parseInt(sign.signText[2].getUnformattedText());
-            if(id < 0)
-            {
-                throw new NumberFormatException();      
-            }
-            if(!this.getProtectionBank().doesPlotExist(id))
-            {
-                this.getModule().send(p, "Der Plot mit der ID '" + id + "' ist nicht vorhanden."); 
-                return;
-            }
-            this.getProtectionBank().addPlayer(id, p.getGameProfile(), p);     
-            InventoryUtils.removeFromInventory(p.inventory, new ItemStack(Items.EMERALD, costs));
-            w.setBlockToAir(e.getPos());
-        }
-        catch(NumberFormatException ex)
-        {
-            this.getModule().send(p, GlobalText.noNaturalNumber());
-        } 
-    }*/
-}

+ 3 - 18
src/main/java/me/km/recipes/ModRecipes.java

@@ -8,7 +8,6 @@ import net.minecraft.block.Block;
 import net.minecraft.creativetab.CreativeTabs;
 import net.minecraft.init.Blocks;
 import net.minecraft.init.Items;
-import net.minecraft.item.EnumDyeColor;
 import net.minecraft.item.Item;
 import net.minecraft.item.ItemStack;
 import net.minecraft.item.crafting.FurnaceRecipes;
@@ -158,21 +157,7 @@ public class ModRecipes
                     {new ItemStack(Blocks.GLASS_PANE)},
                     {new ItemStack(Blocks.TORCH)}
                 });
-        
-        // guns
-        addPlankRecipe(r, new String[] {"XX", "# "}, Items.IRON_INGOT, new ItemStack(ModItems.ironRevolver));
-        addPlankRecipe(r, new String[] {"XX", "# "}, ModItems.silverIngot, new ItemStack(ModItems.silverRevolver));
-        addPlankRecipe(r, new String[] {"  X", " X ", "#  "}, Items.IRON_INGOT, new ItemStack(ModItems.ironMusket));
-        addPlankRecipe(r, new String[] {"  X", " X ", "#  "}, ModItems.silverIngot, new ItemStack(ModItems.silverMusket));
-        registerShapeless(r, "", new ItemStack(ModItems.revolverBullet, 2), new Item[] 
-        {
-            Items.FLINT, Items.IRON_NUGGET
-        });
-        registerShapeless(r, "", new ItemStack(ModItems.musketAmmunition, 1), new Item[] 
-        {
-            Items.GUNPOWDER, Items.IRON_NUGGET
-        });
-        
+                
         // traps
         addMetalRecipes(r, "", new String[] {" X ", "XXX"}, ModBlocks.spikes, 3);
         
@@ -229,7 +214,7 @@ public class ModRecipes
         addToolRecipes(r, toolPatterns, toolItems);
         
         // wands
-        toolPatterns = new String[][] {{" #X", " ##", "#  "}};
+        /*toolPatterns = new String[][] {{" #X", " ##", "#  "}};
         toolItems = new Object[][] 
         {
             {Blocks.PLANKS, Blocks.COBBLESTONE, Items.IRON_INGOT, Items.DIAMOND, Items.GOLD_INGOT, 
@@ -239,7 +224,7 @@ public class ModRecipes
                 ModItems.copperWand, ModItems.bronzeWand, ModItems.emeraldWand, ModItems.redstoneWand,
                 ModItems.lapisWand, ModItems.silverWand}, 
         };
-        addToolRecipes(r, toolPatterns, toolItems);
+        addToolRecipes(r, toolPatterns, toolItems);*/
 
         // block <-> parts <-> smaller parts recipes
         Object[][] ingotItems = new Object[][] 

+ 2 - 2
src/main/java/me/km/scrolls/CommandScroll.java

@@ -83,8 +83,8 @@ public class CommandScroll extends ModuleTabCommand
         {
             amount = 1;
         }     
-        ItemStack stack = new ItemStack(ModItems.scroll, amount);
-        ModItems.scroll.setEffect(stack, eff.ordinal(), level, arg[1].replace('_', ' '));
+        ItemStack stack = new ItemStack(ModItems.magicScroll, amount);
+        ModItems.magicScroll.setEffect(stack, eff.ordinal(), level, arg[1].replace('_', ' '));
         Block.spawnAsEntity(p.world, p.getPosition(), stack);
         return true;
     }

+ 2 - 2
src/main/java/me/km/skills/LeveledSkill.java

@@ -6,8 +6,8 @@ import net.minecraft.item.ItemStack;
 
 public class LeveledSkill 
 {
-    private byte level;
-    private Skill skill;
+    private final byte level;
+    private final Skill skill;
     
     public LeveledSkill(Skill skill, byte level)
     {

+ 127 - 79
src/main/java/me/km/snuviscript/MinecraftFunctions.java

@@ -14,7 +14,6 @@ import java.util.stream.Collectors;
 import me.hammerle.snuviscript.code.Script;
 import me.hammerle.snuviscript.code.SnuviUtils;
 import me.hammerle.snuviscript.code.SnuviParser;
-import me.hammerle.snuviscript.math.Fraction;
 import me.km.api.Location;
 import me.km.api.TitleAPI;
 import me.km.api.Utils;
@@ -83,6 +82,7 @@ import net.minecraft.util.NonNullList;
 import net.minecraft.util.math.MathHelper;
 import net.minecraft.util.text.ITextComponent;
 import net.minecraft.util.text.TextComponentString;
+import net.minecraft.world.GameType;
 
 public class MinecraftFunctions
 {
@@ -129,6 +129,7 @@ public class MinecraftFunctions
             KajetansMod.perms.registerPlayerGroup(UUID.fromString(in[0].getString(sc)), in[1].getInt(sc));
             return Void.TYPE;
         }); 
+        parser.registerFunction("perm.unregisterplayer", (sc, in) -> KajetansMod.perms.unregisterPlayer(UUID.fromString(in[0].getString(sc)), in[1].getInt(sc))); 
         parser.registerFunction("perm.has", (sc, in) -> KajetansMod.perms.hasPermission((ICommandSender) in[0].get(sc), in[1].getString(sc))); 
         
         // ---------------------------------------------------------------------
@@ -172,7 +173,7 @@ public class MinecraftFunctions
         // ---------------------------------------------------------------------    
         // Player-Bibliothek
         // ---------------------------------------------------------------------  
-        parser.registerFunction("player.getitemamount", (sc, in) -> new Fraction(InventoryUtils.searchInventoryFor(((EntityPlayer) in[0].get(sc)).inventory, (ItemStack) in[2].get(sc), in[1].getBoolean(sc))));                
+        parser.registerFunction("player.getitemamount", (sc, in) -> (double) InventoryUtils.searchInventoryFor(((EntityPlayer) in[0].get(sc)).inventory, (ItemStack) in[2].get(sc), in[1].getBoolean(sc)));                
         parser.registerFunction("player.removeitem", (sc, in) -> 
         { 
             ItemStack stack = ((ItemStack) in[1].get(sc)).copy();
@@ -201,6 +202,11 @@ public class MinecraftFunctions
             });
             return Void.TYPE; 
         });
+        parser.registerFunction("player.clearinventory", (sc, in) -> 
+        { 
+            ((EntityPlayer) in[0].get(sc)).inventory.clear();
+            return Void.TYPE; 
+        });  
         parser.registerFunction("player.inventorytolist", (sc, in) -> 
         { 
             in[0].set(sc, ((EntityPlayer) in[1].get(sc)).inventory.mainInventory); 
@@ -230,16 +236,16 @@ public class MinecraftFunctions
             ((EntityPlayerMP) in[0].get(sc)).connection.sendPacket(new SPacketSpawnPosition(((Location) in[1].get(sc)).getBlockPos())); 
             return Void.TYPE; 
         }); 
-        parser.registerFunction("player.gethunger", (sc, in) -> new Fraction(((EntityPlayer) in[0].get(sc)).getFoodStats().getFoodLevel()));
+        parser.registerFunction("player.gethunger", (sc, in) -> (double) ((EntityPlayer) in[0].get(sc)).getFoodStats().getFoodLevel());
         parser.registerFunction("player.sethunger", (sc, in) -> 
         { 
             ((EntityPlayer) in[0].get(sc)).getFoodStats().setFoodLevel(in[1].getInt(sc)); 
             return Void.TYPE; 
         });
-        parser.registerFunction("player.getsaturation", (sc, in) -> Fraction.fromDouble(ReflectionUtils.getSaturation(((EntityPlayer) in[0].get(sc)).getFoodStats())));
+        parser.registerFunction("player.getsaturation", (sc, in) -> (double) ReflectionUtils.getSaturation(((EntityPlayer) in[0].get(sc)).getFoodStats()));
         parser.registerFunction("player.setsaturation", (sc, in) -> 
         { 
-            ReflectionUtils.setSaturation(((EntityPlayer) in[0].get(sc)).getFoodStats(), in[1].getFraction(sc).floatValue()); 
+            ReflectionUtils.setSaturation(((EntityPlayer) in[0].get(sc)).getFoodStats(), in[1].getFloat(sc)); 
             return Void.TYPE; 
         });
         parser.registerFunction("player.getname", (sc, in) -> 
@@ -271,6 +277,37 @@ public class MinecraftFunctions
         });
         parser.registerFunction("player.isadventure", (sc, in) -> !((EntityPlayer) in[0].get(sc)).capabilities.allowEdit);
         parser.registerFunction("player.hasfly", (sc, in) -> ((EntityPlayer) in[0].get(sc)).capabilities.allowFlying);
+        parser.registerFunction("player.setgamemode", (sc, in) -> 
+        { 
+            EntityPlayer p = (EntityPlayer) in[0].get(sc);
+            switch(in[1].get(sc).toString()) 
+            {
+                case "survival":
+                case "s":
+                case "0":  
+                    p.setGameType(GameType.SURVIVAL);
+                    break;
+                case "creative":
+                case "c":        
+                case "1":  
+                    p.setGameType(GameType.CREATIVE);
+                    break;
+                case "adventure":         
+                case "a":         
+                case "2":  
+                    p.setGameType(GameType.ADVENTURE);
+                    break;
+                case "specator":         
+                case "w":         
+                case "3":  
+                    p.setGameType(GameType.SPECTATOR);
+                    break;  
+                default:
+                    p.setGameType(GameType.CREATIVE);
+                    break;
+            }
+            return Void.TYPE;
+        });
         parser.registerFunction("player.getlastdamager", (sc, in) -> 
         { 
             DamageSource ds = ((EntityPlayer) in[0].get(sc)).getLastDamageSource();
@@ -296,9 +333,9 @@ public class MinecraftFunctions
             Object o = in[0].get(sc);
             if(o instanceof EntityPlayer)
             {
-                return new Fraction(KajetansMod.playerbank.getDataBank().getTag((EntityPlayer) o, in[1].getString(sc)));
+                return (double) KajetansMod.playerbank.getDataBank().getTag((EntityPlayer) o, in[1].getString(sc));
             }
-            return new Fraction(KajetansMod.playerbank.getDataBank().getTag(o.toString(), in[1].getString(sc)));
+            return (double) KajetansMod.playerbank.getDataBank().getTag(o.toString(), in[1].getString(sc));
         });
         parser.registerFunction("player.setguild", (sc, in) -> 
         { 
@@ -316,9 +353,9 @@ public class MinecraftFunctions
             Object o = in[0].get(sc);
             if(o instanceof EntityPlayer)
             {
-                return new Fraction(KajetansMod.playerbank.getGuildId((EntityPlayer) o));
+                return (double) KajetansMod.playerbank.getGuildId((EntityPlayer) o);
             }
-            return new Fraction(KajetansMod.playerbank.getGuildId(o.toString()));
+            return (double) KajetansMod.playerbank.getGuildId(o.toString());
         });
         parser.registerFunction("player.dropinventory", (sc, in) -> 
         { 
@@ -373,7 +410,7 @@ public class MinecraftFunctions
         // ---------------------------------------------------------------------    
         // Players-Bibliothek
         // --------------------------------------------------------------------- 
-        parser.registerFunction("players.getamount", (sc, in) -> new Fraction(KajetansMod.server.getCurrentPlayerCount()));
+        parser.registerFunction("players.getamount", (sc, in) -> (double) KajetansMod.server.getCurrentPlayerCount());
         parser.registerFunction("players.tolist", (sc, in) -> 
         {     
             in[0].set(sc, new ArrayList(KajetansMod.server.getPlayerList().getPlayers())); 
@@ -468,44 +505,43 @@ public class MinecraftFunctions
         parser.registerAlias("players.toworldlist", "world.getplayers");
         parser.registerFunction("world.setskills", (sc, in) -> 
         {     
-            KajetansMod.worldManager.getWorldPreferences(ModDimensions.getWorldFromName(in[0].getString(sc))).skills = in[1].getBoolean(sc);
+            KajetansMod.worldManager.getWorldPreferences((World) in[0].get(sc)).skills = in[1].getBoolean(sc);
             return Void.TYPE;
         });
         parser.registerFunction("world.setblockprotections", (sc, in) -> 
         {     
-            KajetansMod.worldManager.getWorldPreferences(ModDimensions.getWorldFromName(in[0].getString(sc))).blockProtection = in[1].getBoolean(sc);
+            KajetansMod.worldManager.getWorldPreferences((World) in[0].get(sc)).blockProtection = in[1].getBoolean(sc);
             return Void.TYPE;
         });
         parser.registerFunction("world.setdefaultenchanting", (sc, in) -> 
         {     
-            KajetansMod.worldManager.getWorldPreferences(ModDimensions.getWorldFromName(in[0].getString(sc))).defaultEnchanting = in[1].getBoolean(sc);
+            KajetansMod.worldManager.getWorldPreferences((World) in[0].get(sc)).defaultEnchanting = in[1].getBoolean(sc);
             return Void.TYPE;
         });
         parser.registerFunction("world.setpvpprotection", (sc, in) -> 
         {     
-            KajetansMod.worldManager.getWorldPreferences(ModDimensions.getWorldFromName(in[0].getString(sc))).pvpProtection = in[1].getBoolean(sc);
+            KajetansMod.worldManager.getWorldPreferences((World) in[0].get(sc)).pvpProtection = in[1].getBoolean(sc);
             return Void.TYPE;
         });
         parser.registerFunction("world.setstatuseffects", (sc, in) -> 
         {     
-            KajetansMod.worldManager.getWorldPreferences(ModDimensions.getWorldFromName(in[0].getString(sc))).statusEffects = in[1].getBoolean(sc);
-            return Void.TYPE;
-        });
-        parser.registerFunction("world.setmanabar", (sc, in) -> 
-        {     
-            KajetansMod.worldManager.getWorldPreferences(ModDimensions.getWorldFromName(in[0].getString(sc))).manabar = in[1].getBoolean(sc);
+            KajetansMod.worldManager.getWorldPreferences((World) in[0].get(sc)).statusEffects = in[1].getBoolean(sc);
             return Void.TYPE;
         });
         parser.registerFunction("world.setscrolls", (sc, in) -> 
         {     
-            KajetansMod.worldManager.getWorldPreferences(ModDimensions.getWorldFromName(in[0].getString(sc))).scrolls = in[1].getBoolean(sc);
+            KajetansMod.worldManager.getWorldPreferences((World) in[0].get(sc)).scrolls = in[1].getBoolean(sc);
             return Void.TYPE;
         });
         parser.registerFunction("world.setdefaultproducing", (sc, in) -> 
         {     
-            KajetansMod.worldManager.getWorldPreferences(ModDimensions.getWorldFromName(in[0].getString(sc))).defaultProducing = in[1].getBoolean(sc);
+            KajetansMod.worldManager.getWorldPreferences((World) in[0].get(sc)).defaultProducing = in[1].getBoolean(sc);
             return Void.TYPE;
         });
+        parser.registerFunction("world.get", (sc, in) -> 
+        {     
+            return ModDimensions.getWorldFromName(in[0].getString(sc));
+        });
         
         // ---------------------------------------------------------------------    
         // Item-Bibliothek   
@@ -529,15 +565,17 @@ public class MinecraftFunctions
                 ItemStackUtils.drop(w, pos, stack);
             }
             return Void.TYPE; 
-        });                              
+        });                  
+        parser.registerFunction("item.gettooltype", (sc, in) -> Utils.getToolType((ItemStack) in[0].get(sc)).toString());
+        parser.registerFunction("item.get", (sc, in) -> ((ItemStack) in[0].get(sc)).getItem());
         parser.registerFunction("item.gettype", (sc, in) -> ((ItemStack) in[0].get(sc)).getItem().getRegistryName().toString());
-        parser.registerFunction("item.getdata", (sc, in) -> new Fraction(((ItemStack) in[0].get(sc)).getMetadata()));           
+        parser.registerFunction("item.getdata", (sc, in) -> (double) ((ItemStack) in[0].get(sc)).getMetadata());           
         parser.registerFunction("item.setdata", (sc, in) -> 
         {    
             ((ItemStack) in[0].get(sc)).setItemDamage(in[1].getInt(sc)); 
             return Void.TYPE; 
         });
-        parser.registerFunction("item.getamount", (sc, in) -> new Fraction(((ItemStack) in[0].get(sc)).getCount())); 
+        parser.registerFunction("item.getamount", (sc, in) -> (double) ((ItemStack) in[0].get(sc)).getCount()); 
         parser.registerFunction("item.setamount", (sc, in) -> 
         {   
             ((ItemStack) in[0].get(sc)).setCount(in[1].getInt(sc));
@@ -564,7 +602,7 @@ public class MinecraftFunctions
             ItemStackUtils.addLore((ItemStack) in[0].get(sc), SnuviUtils.connect(sc, in, 2), in[1].getInt(sc)); 
             return Void.TYPE; 
         });
-        parser.registerFunction("item.getenchantlevel", (sc, in) -> new Fraction(EnchantmentHelper.getEnchantmentLevel(Enchantment.getEnchantmentByLocation(in[1].getString(sc)), (ItemStack) in[0].get(sc))));
+        parser.registerFunction("item.getenchantlevel", (sc, in) -> (double) EnchantmentHelper.getEnchantmentLevel(Enchantment.getEnchantmentByLocation(in[1].getString(sc)), (ItemStack) in[0].get(sc)));
         parser.registerFunction("item.setcooldown", (sc, in) -> 
         {   
             ((EntityPlayer) in[0].get(sc)).getCooldownTracker().setCooldown(((ItemStack) in[1].get(sc)).getItem(), in[2].getInt(sc)); 
@@ -581,13 +619,13 @@ public class MinecraftFunctions
             {
                 return new Location(ModDimensions.getWorldFromName(in[0].getString(sc)), 
                         in[1].getDouble(sc), in[2].getDouble(sc), in[3].getDouble(sc), 
-                        in[4].getFraction(sc).floatValue(), in[5].getFraction(sc).floatValue());
+                        in[4].getFloat(sc), in[5].getFloat(sc));
             }
             return new Location(ModDimensions.getWorldFromName(in[0].getString(sc)), in[1].getDouble(sc), in[2].getDouble(sc), in[3].getDouble(sc), 0, 0);
         });  
-        parser.registerFunction("loc.getx", (sc, in) -> Fraction.fromDouble(((Location) in[0].get(sc)).getX()));  
-        parser.registerFunction("loc.gety", (sc, in) -> Fraction.fromDouble(((Location) in[0].get(sc)).getY()));  
-        parser.registerFunction("loc.getz", (sc, in) -> Fraction.fromDouble(((Location) in[0].get(sc)).getZ()));  
+        parser.registerFunction("loc.getx", (sc, in) -> ((Location) in[0].get(sc)).getX());  
+        parser.registerFunction("loc.gety", (sc, in) -> ((Location) in[0].get(sc)).getY());  
+        parser.registerFunction("loc.getz", (sc, in) -> ((Location) in[0].get(sc)).getZ());  
         parser.registerFunction("loc.setx", (sc, in) -> 
         { 
             ((Location) in[0].get(sc)).setX(in[1].getDouble(sc)); 
@@ -620,15 +658,15 @@ public class MinecraftFunctions
         });  
         parser.registerFunction("loc.setyaw", (sc, in) -> 
         { 
-            ((Location) in[0].get(sc)).setYaw(in[1].getFraction(sc).floatValue()); 
+            ((Location) in[0].get(sc)).setYaw(in[1].getFloat(sc)); 
             return Void.TYPE; 
         });  
         parser.registerFunction("loc.setpitch", (sc, in) -> 
         { 
-            ((Location) in[0].get(sc)).setPitch(in[1].getFraction(sc).floatValue()); 
+            ((Location) in[0].get(sc)).setPitch(in[1].getFloat(sc)); 
             return Void.TYPE;
         });  
-        parser.registerFunction("loc.distance", (sc, in) -> Fraction.fromDouble(((Location) in[0].get(sc)).getPos().distanceTo(((Location) in[1].get(sc)).getPos())));  
+        parser.registerFunction("loc.distance", (sc, in) -> ((Location) in[0].get(sc)).getPos().distanceTo(((Location) in[1].get(sc)).getPos()));  
         parser.registerFunction("loc.mod", (sc, in) -> ((Location) in[0].get(sc)).copyAdd(in[1].getDouble(sc), in[2].getDouble(sc), in[3].getDouble(sc)));
         parser.registerFunction("loc.getcoord", (sc, in) -> 
         {
@@ -636,24 +674,24 @@ public class MinecraftFunctions
             switch(in[1].getString(sc))
             {
                 case "x":
-                    return Fraction.fromDouble(l.getX());
+                    return l.getX();
                 case "y":
-                    return Fraction.fromDouble(l.getY());
+                    return l.getY();
                 case "z":
-                    return Fraction.fromDouble(l.getZ());
+                    return l.getZ();
                 case "bx":
-                    return new Fraction(MathHelper.floor(l.getX()));
+                    return (double) MathHelper.floor(l.getX());
                 case "by":
-                    return new Fraction(MathHelper.floor(l.getY()));
+                    return (double) MathHelper.floor(l.getY());
                 case "bz":
-                    return new Fraction(MathHelper.floor(l.getZ()));
+                    return (double) MathHelper.floor(l.getZ());
                 case "w":
                     return ModDimensions.getWorldName(l.getWorld());
                 default:
                     return null;
             }
         });
-        parser.registerFunction("loc.gettime", (sc, in) -> new Fraction(((Location) in[0].get(sc)).getWorld().getWorldTime()));
+        parser.registerFunction("loc.gettime", (sc, in) -> (double) ((Location) in[0].get(sc)).getWorld().getWorldTime());
         parser.registerFunction("loc.hasstorm", (sc, in) -> ((Location) in[0].get(sc)).getWorld().isRaining());
         parser.registerFunction("loc.isbetween", (sc, in) -> 
         { 
@@ -668,12 +706,21 @@ public class MinecraftFunctions
         // ---------------------------------------------------------------------    
         // Block-Bibliothek
         // ---------------------------------------------------------------------    
-        parser.registerFunction("block.gettype", (sc, in) -> ((Location) in[0].get(sc)).getWorld().getBlockState(((Location) in[0].get(sc)).getBlockPos()).getBlock().getRegistryName().toString());
+        parser.registerFunction("block.gettype", (sc, in) -> 
+        {
+            Location l = (Location) in[0].get(sc);
+            return l.getWorld().getBlockState(l.getBlockPos()).getBlock().getRegistryName().toString();
+        });
+        parser.registerFunction("block.get", (sc, in) -> 
+        {
+            Location l = (Location) in[0].get(sc);
+            return l.getWorld().getBlockState(l.getBlockPos()).getBlock();
+        });
         parser.registerFunction("block.getdata", (sc, in) -> 
         { 
             Location l = (Location) in[0].get(sc);
             IBlockState state = l.getWorld().getBlockState(l.getBlockPos());
-            return new Fraction(state.getBlock().getMetaFromState(state));
+            return (double) state.getBlock().getMetaFromState(state);
         });
         parser.registerFunction("block.clone", (sc, in) -> 
         { 
@@ -750,9 +797,9 @@ public class MinecraftFunctions
             TileEntity te = l.getWorld().getTileEntity(l.getBlockPos());
             if(te == null || !(te instanceof TileEntityChest))
             {
-                return new Fraction(0);
+                return 0.0d;
             }        
-            return new Fraction(InventoryUtils.searchInventoryFor((TileEntityChest) te, (ItemStack) in[2].get(sc), in[1].getBoolean(sc)));
+            return (double) InventoryUtils.searchInventoryFor((TileEntityChest) te, (ItemStack) in[2].get(sc), in[1].getBoolean(sc));
         });
         parser.registerFunction("block.additem", (sc, in) -> 
         { 
@@ -871,62 +918,62 @@ public class MinecraftFunctions
         // ---------------------------------------------------------------------    
         // Job-Bibliothek 
         // ---------------------------------------------------------------------  
-        parser.registerFunction("job.getlevel", (sc, in) -> new Fraction(KajetansMod.jobs.getLevel((EntityPlayer) in[0].get(sc), in[1].getFraction(sc).byteValue())));
+        parser.registerFunction("job.getlevel", (sc, in) -> (double) KajetansMod.jobs.getLevel((EntityPlayer) in[0].get(sc), in[1].getByte(sc)));
         parser.registerFunction("job.addlevel", (sc, in) -> 
         { 
-            KajetansMod.jobs.addLevel((EntityPlayer) in[0].get(sc), in[1].getFraction(sc).byteValue(), in[2].getFraction(sc).byteValue()); 
+            KajetansMod.jobs.addLevel((EntityPlayer) in[0].get(sc), in[1].getByte(sc), in[2].getByte(sc)); 
             return Void.TYPE; 
         });
         parser.registerFunction("job.setlevel", (sc, in) -> 
         { 
-            KajetansMod.jobs.setLevel((EntityPlayer) in[0].get(sc), in[1].getFraction(sc).byteValue(), in[2].getFraction(sc).byteValue()); 
+            KajetansMod.jobs.setLevel((EntityPlayer) in[0].get(sc), in[1].getByte(sc), in[2].getByte(sc)); 
             return Void.TYPE; 
         });
-        parser.registerFunction("job.getxp", (sc, in) -> new Fraction(KajetansMod.jobs.getXP((EntityPlayer) in[0].get(sc), in[1].getFraction(sc).byteValue())));
+        parser.registerFunction("job.getxp", (sc, in) -> (double) KajetansMod.jobs.getXP((EntityPlayer) in[0].get(sc), in[1].getByte(sc)));
         parser.registerFunction("job.addxp", (sc, in) -> 
         { 
-            KajetansMod.jobs.addXP((EntityPlayer) in[0].get(sc), in[1].getFraction(sc).byteValue(), in[2].getInt(sc)); 
+            KajetansMod.jobs.addXP((EntityPlayer) in[0].get(sc), in[1].getByte(sc), in[2].getInt(sc)); 
             return Void.TYPE; 
         });
         parser.registerFunction("job.setxp", (sc, in) -> 
         { 
-            KajetansMod.jobs.setXP((EntityPlayer) in[0].get(sc), in[1].getFraction(sc).byteValue(), in[2].getInt(sc)); 
+            KajetansMod.jobs.setXP((EntityPlayer) in[0].get(sc), in[1].getByte(sc), in[2].getInt(sc)); 
             return Void.TYPE; 
         });
         parser.registerFunction("job.registerjob", (sc, in) -> 
         { 
-            KajetansMod.jobs.registerJob(in[0].getFraction(sc).byteValue(), SnuviUtils.connect(sc, in, 1)); 
+            KajetansMod.jobs.registerJob(in[0].getByte(sc), SnuviUtils.connect(sc, in, 1)); 
             return Void.TYPE; 
         });
         parser.registerFunction("job.registerrecipe", (sc, in) -> 
         { 
-            KajetansMod.jobs.registerRecipe(in[0].getFraction(sc).byteValue(), ItemStackUtils.getItem(in[1].getString(sc)), in[2].getFraction(sc).byteValue()); 
+            KajetansMod.jobs.registerRecipe(in[0].getByte(sc), ItemStackUtils.getItem(in[1].getString(sc)), in[2].getByte(sc)); 
             return Void.TYPE; 
         });
         parser.registerFunction("job.registermaterial", (sc, in) -> 
         { 
-            KajetansMod.jobs.registerPreferedBlock(in[0].getFraction(sc).byteValue(), Block.getBlockFromName(in[1].getString(sc))); 
+            KajetansMod.jobs.registerPreferedBlock(in[0].getByte(sc), Block.getBlockFromName(in[1].getString(sc))); 
             return Void.TYPE; 
         });
         parser.registerFunction("job.registerskill", (sc, in) -> 
         { 
-            KajetansMod.jobs.registerSkill(in[0].getFraction(sc).byteValue(), KajetansMod.skills.getSkill(in[1].getInt(sc)), in[2].getFraction(sc).byteValue(), in[3].getFraction(sc).byteValue()); 
+            KajetansMod.jobs.registerSkill(in[0].getByte(sc), KajetansMod.skills.getSkill(in[1].getInt(sc)), in[2].getByte(sc), in[3].getByte(sc)); 
             return Void.TYPE; 
         });
-        parser.registerFunction("job.getamount", (sc, in) -> new Fraction(KajetansMod.jobs.getNumberOfJobs()));
-        parser.registerFunction("job.getname", (sc, in) -> KajetansMod.jobs.getJobName(in[0].getFraction(sc).byteValue()));
-        parser.registerFunction("job.geteffectlevel", (sc, in) -> new Fraction(EffectUtils.getEffectLevel((EntityPlayer) in[0].get(sc), me.km.effects.Effect.valueOf(in[1].getString(sc)))));
-        parser.registerFunction("job.hasjob", (sc, in) -> KajetansMod.jobs.hasJob((EntityPlayer) in[0].get(sc), in[1].getFraction(sc).byteValue()));
+        parser.registerFunction("job.getamount", (sc, in) -> (double) KajetansMod.jobs.getNumberOfJobs());
+        parser.registerFunction("job.getname", (sc, in) -> KajetansMod.jobs.getJobName(in[0].getByte(sc)));
+        parser.registerFunction("job.geteffectlevel", (sc, in) -> (double) EffectUtils.getEffectLevel((EntityPlayer) in[0].get(sc), me.km.effects.Effect.valueOf(in[1].getString(sc))));
+        parser.registerFunction("job.hasjob", (sc, in) -> KajetansMod.jobs.hasJob((EntityPlayer) in[0].get(sc), in[1].getByte(sc)));
         parser.registerFunction("job.hasrecipe", (sc, in) -> KajetansMod.jobs.hasRecipe((EntityPlayer) in[0].get(sc), ItemStackUtils.getItem(in[1].getString(sc))));
         parser.registerFunction("job.getjobs", (sc, in) -> 
         { 
-            in[0].set(sc, KajetansMod.jobs.getJobs((EntityPlayer) in[1].get(sc)).stream().map(b -> new Fraction(b)).collect(Collectors.toList())); 
+            in[0].set(sc, KajetansMod.jobs.getJobs((EntityPlayer) in[1].get(sc)).stream().map(b -> (double) b).collect(Collectors.toList())); 
             return Void.TYPE; 
         });
         parser.registerFunction("job.isregmaterial", (sc, in) -> KajetansMod.jobs.isPreferedMaterial((EntityPlayer) in[0].get(sc),Block.getBlockFromName(in[1].getString(sc))));
         parser.registerFunction("job.setjob", (sc, in) -> 
         { 
-            KajetansMod.jobs.setJob((EntityPlayer) in[0].get(sc), in[1].getFraction(sc).byteValue(), in[2].getBoolean(sc)); 
+            KajetansMod.jobs.setJob((EntityPlayer) in[0].get(sc), in[1].getByte(sc), in[2].getBoolean(sc)); 
             return Void.TYPE; 
         }); 
         parser.registerFunction("job.reset", (sc, in) -> 
@@ -944,10 +991,10 @@ public class MinecraftFunctions
             // entity.damage(entity, damagefloat, DamageSource);
             if(in.length >= 3)
             {
-                ((EntityLivingBase) in[0].get(sc)).attackEntityFrom((DamageSource) in[2].get(sc), in[1].getFraction(sc).floatValue());
+                ((EntityLivingBase) in[0].get(sc)).attackEntityFrom((DamageSource) in[2].get(sc), in[1].getFloat(sc));
                 return Void.TYPE; 
             }
-            ((EntityLivingBase) in[0].get(sc)).attackEntityFrom(DamageSource.GENERIC, in[1].getFraction(sc).floatValue());
+            ((EntityLivingBase) in[0].get(sc)).attackEntityFrom(DamageSource.GENERIC, in[1].getFloat(sc));
             return Void.TYPE; 
         }); 
         parser.registerFunction("entity.getdamagesource", (sc, in) -> 
@@ -1023,10 +1070,10 @@ public class MinecraftFunctions
             }
             return DamageSource.GENERIC;
         });
-        parser.registerFunction("entity.gethealth", (sc, in) -> Fraction.fromDouble(((EntityLivingBase) in[0].get(sc)).getHealth()));     
+        parser.registerFunction("entity.gethealth", (sc, in) -> (double) ((EntityLivingBase) in[0].get(sc)).getHealth());     
         parser.registerFunction("entity.sethealth", (sc, in) -> 
         { 
-            ((EntityLivingBase) in[0].get(sc)).setHealth(in[1].getFraction(sc).floatValue()); 
+            ((EntityLivingBase) in[0].get(sc)).setHealth(in[1].getFloat(sc)); 
             return Void.TYPE; 
         });  
         parser.registerFunction("entity.setname", (sc, in) -> 
@@ -1203,10 +1250,10 @@ public class MinecraftFunctions
         // ---------------------------------------------------------------------
         // Status-Bibliothek
         // ---------------------------------------------------------------------  
-        parser.registerFunction("status.getmana", (sc, in) -> new Fraction(EnvironmentAPI.getMana(((EntityPlayer) in[0].get(sc)))));
-        parser.registerFunction("status.getcold", (sc, in) -> new Fraction(EnvironmentAPI.getCold(((EntityPlayer) in[0].get(sc)))));
-        parser.registerFunction("status.getenergy", (sc, in) -> new Fraction(EnvironmentAPI.getEnergy(((EntityPlayer) in[0].get(sc)))));
-        parser.registerFunction("status.getthirst", (sc, in) -> new Fraction(EnvironmentAPI.getThirst(((EntityPlayer) in[0].get(sc)))));
+        parser.registerFunction("status.getmana", (sc, in) -> (double) EnvironmentAPI.getMana(((EntityPlayer) in[0].get(sc))));
+        parser.registerFunction("status.getcold", (sc, in) -> (double) EnvironmentAPI.getCold(((EntityPlayer) in[0].get(sc))));
+        parser.registerFunction("status.getenergy", (sc, in) -> (double) EnvironmentAPI.getEnergy(((EntityPlayer) in[0].get(sc))));
+        parser.registerFunction("status.getthirst", (sc, in) -> (double) EnvironmentAPI.getThirst(((EntityPlayer) in[0].get(sc))));
         parser.registerFunction("status.changemange", (sc, in) -> 
         { 
             EnvironmentAPI.changeMana(((EntityPlayer) in[0].get(sc)), in[1].getInt(sc)); 
@@ -1250,7 +1297,7 @@ public class MinecraftFunctions
         parser.registerFunction("status.gettemperature", (sc, in) ->
         { 
             Location l = (Location) in[0].get(sc);
-            return new Fraction(EnvironmentAPI.getTemperature(l.getWorld(), l.getBlockPos())); 
+            return (double) EnvironmentAPI.getTemperature(l.getWorld(), l.getBlockPos()); 
         });    
         
         // ---------------------------------------------------------------------  
@@ -1391,13 +1438,13 @@ public class MinecraftFunctions
             ((Table) in[0].get(sc)).setElement(in[1].getInt(sc), in[2].getInt(sc), in[3].get(sc)); 
             return Void.TYPE; 
         });
-        parser.registerFunction("table.getindexof", (sc, in) -> new Fraction(((Table) in[0].get(sc)).getIndexOf(in[1].get(sc))));
+        parser.registerFunction("table.getindexof", (sc, in) -> (double) ((Table) in[0].get(sc)).getIndexOf(in[1].get(sc)));
         parser.registerFunction("table.setsortcolumn", (sc, in) -> 
         { 
             ((Table) in[0].get(sc)).setSortColumn(in[1].getInt(sc)); 
             return Void.TYPE; 
         });
-        parser.registerFunction("table.getsize", (sc, in) -> new Fraction(((Table) in[0].get(sc)).getSize()));
+        parser.registerFunction("table.getsize", (sc, in) -> (double) ((Table) in[0].get(sc)).getSize());
 
         // ---------------------------------------------------------------------  
         // Plot-Bibliothek   
@@ -1422,7 +1469,7 @@ public class MinecraftFunctions
         {  
             Location l = (Location) in[1].get(sc);
             in[0].set(sc, KajetansMod.plots.getDataBank(ProtectionBank.class).getRegionIds(l.getWorld(), 
-                l.getBlockPos()).stream().map(o -> new Fraction(Integer.parseInt(o.toString()))).collect(Collectors.toSet())); 
+                l.getBlockPos()).stream().map(o -> ((Number) o).doubleValue()).collect(Collectors.toSet())); 
             return Void.TYPE; 
         });
         parser.registerFunction("plot.canbuild", (sc, in) -> 
@@ -1457,7 +1504,7 @@ public class MinecraftFunctions
             in[0].set(sc, new ArrayList<>(KajetansMod.scripts.getPlayerList(sc.getId()))); 
             return Void.TYPE; 
         }); 
-        parser.registerFunction("script.getplayeramount", (sc, in) -> new Fraction(KajetansMod.scripts.getPlayerList(sc.getId()).size())); 
+        parser.registerFunction("script.getplayeramount", (sc, in) -> (double) KajetansMod.scripts.getPlayerList(sc.getId()).size()); 
         parser.registerFunction("script.start", (sc, in) -> 
         {  
             Object o = in[0].get(sc);
@@ -1519,14 +1566,14 @@ public class MinecraftFunctions
         // ---------------------------------------------------------------------  
         parser.registerFunction("display.add", (sc, in) -> 
         {  
-            byte id = in[1].getFraction(sc).byteValue();
+            byte id = in[1].getByte(sc);
             String message = SnuviUtils.connect(sc, in, 2);
             doForGroup(in[0].get(sc), sc, p -> ModPacketHandler.sendToDisplay((EntityPlayerMP) p, (byte) 1, id, message));
             return Void.TYPE; 
         }); 
         parser.registerFunction("display.remove", (sc, in) -> 
         {  
-            byte id = in[1].getFraction(sc).byteValue();
+            byte id = in[1].getByte(sc);
             doForGroup(in[0].get(sc), sc, p -> ModPacketHandler.sendToDisplay((EntityPlayerMP) p, (byte) 2, id, ""));
             return Void.TYPE; 
         });
@@ -1541,17 +1588,17 @@ public class MinecraftFunctions
         // ---------------------------------------------------------------------  
         parser.registerFunction("head.add", (sc, in) -> 
         {  
-            byte id = in[1].getFraction(sc).byteValue();
+            byte id = in[1].getByte(sc);
             String name = in[2].getString(sc);
             int x = in[3].getInt(sc);
             int y = in[4].getInt(sc);
-            byte scale = in[5].getFraction(sc).byteValue();
+            byte scale = in[5].getByte(sc);
             doForGroup(in[0].get(sc), sc, p -> ModPacketHandler.sendToHead((EntityPlayerMP) p, (byte) 1, id, name, x, y, scale));
             return Void.TYPE; 
         }); 
         parser.registerFunction("head.remove", (sc, in) -> 
         {  
-            byte id = in[1].getFraction(sc).byteValue();
+            byte id = in[1].getByte(sc);
             doForGroup(in[0].get(sc), sc, p -> ModPacketHandler.sendToHead((EntityPlayerMP) p, (byte) 2, id, "", -1, -1, (byte) -1));
             return Void.TYPE; 
         });
@@ -1593,7 +1640,7 @@ public class MinecraftFunctions
         }); 
         parser.registerFunction("inv.getid", (sc, in) -> 
         { 
-            return new Fraction(((SnuviInventory) in[0].get(sc)).getId()); 
+            return (double) ((SnuviInventory) in[0].get(sc)).getId(); 
         }); 
         parser.registerFunction("inv.loadblock", (sc, in) -> 
         { 
@@ -1771,6 +1818,7 @@ public class MinecraftFunctions
             }
             return Void.TYPE; 
         }); 
+        parser.registerAlias("delglobalvar", "dgv");
         parser.registerFunction("msg", (sc, in) -> 
         { 
             sendMessageToGroup(in[0].get(sc), sc, NBTUtils.concat(sc, 1, in)); 

+ 18 - 16
src/main/java/me/km/snuviscript/ScriptEvents.java

@@ -8,7 +8,6 @@ import java.util.stream.Collectors;
 import me.hammerle.snuviscript.code.Compiler;
 import me.hammerle.snuviscript.code.Script;
 import me.hammerle.snuviscript.code.SnuviParser;
-import me.hammerle.snuviscript.math.Fraction;
 import me.kcm.events.PlayerPreRespawnEvent;
 import me.km.KajetansMod;
 import me.km.api.ModuleListener;
@@ -107,9 +106,12 @@ public class ScriptEvents extends ModuleListener
     // events
     // -------------------------------------------------------------------------
 
-    public void onPlayerMove(EntityPlayer p)
+    public void onPlayerMove(EntityPlayer p, int id)
     {      
-        handleEvent(p, "player_move", sc -> {});
+        handleEvent(p, "player_move", sc -> 
+        {
+            sc.setVar("id", id);
+        });
     }
     
     public boolean onInventoryClick(Script script, SnuviInventory inv, int slot, ClickType click, EntityPlayer p)
@@ -117,9 +119,9 @@ public class ScriptEvents extends ModuleListener
         parser.callEvent("inv_click", script, sc -> 
         {
             ScriptVars.setPlayerVars(sc, p); 
-            sc.setVar("inv_id", new Fraction(inv.getId()));
+            sc.setVar("inv_id", (double) inv.getId());
             sc.setVar("inv_name", inv.getName());
-            sc.setVar("inv_slot", new Fraction(slot));
+            sc.setVar("inv_slot", (double) slot);
             ScriptVars.setItemVars(sc, inv.getStackInSlot(slot));
             sc.setVar("cancel", false); 
         }, null);
@@ -131,7 +133,7 @@ public class ScriptEvents extends ModuleListener
         parser.callEvent("inv_close", script, sc -> 
         {
             ScriptVars.setPlayerVars(sc, p); 
-            sc.setVar("inv_id", new Fraction(inv.getId()));
+            sc.setVar("inv_id", (double) inv.getId());
             sc.setVar("inv_name", inv.getName());
         }, null);
     }
@@ -167,7 +169,7 @@ public class ScriptEvents extends ModuleListener
             {
                 sc.setVar("player_killed", false); 
             }
-            sc.setVar("player_damage", Fraction.fromDouble(e.getAmount()));   
+            sc.setVar("player_damage", (double) e.getAmount());   
             sc.setVar("player_damage_cause", e.getSource().getDamageType());
             EntityPlayer ent = Utils.getDamager(e.getSource());
             if(ent != null)
@@ -184,7 +186,7 @@ public class ScriptEvents extends ModuleListener
         {
             try
             {
-                e.setAmount(sc.getVar("player_damage").getFraction(sc).floatValue());
+                e.setAmount(sc.getVar("player_damage").getFloat(sc));
                 e.setCanceled(sc.getVar("cancel").getBoolean(sc)); 
             }
             catch(Exception ex)
@@ -201,13 +203,13 @@ public class ScriptEvents extends ModuleListener
         {
             handleEvent((EntityPlayer) e.getEntityLiving(), "player_heal", (sc) -> 
             {
-                sc.setVar("heal", Fraction.fromDouble(e.getAmount()));
+                sc.setVar("heal", (double) e.getAmount());
                 sc.setVar("cancel", e.isCanceled()); 
             }, (sc) -> 
             {
                 try
                 {
-                    e.setAmount(sc.getVar("heal").getFraction(sc).floatValue());
+                    e.setAmount(sc.getVar("heal").getFloat(sc));
                     e.setCanceled(sc.getVar("cancel").getBoolean(sc)); 
                 }
                 catch(Exception ex)
@@ -283,14 +285,14 @@ public class ScriptEvents extends ModuleListener
         {
             sc.setVar("entity_killed", e.getEntityLiving().getHealth() <= e.getAmount());        
             ScriptVars.setEntityVars(sc, e.getEntity()); 
-            sc.setVar("entity_damage", Fraction.fromDouble(e.getAmount()));   
+            sc.setVar("entity_damage", (double) e.getAmount());   
             sc.setVar("entity_damage_cause", e.getSource().getDamageType());
             sc.setVar("cancel", e.isCanceled());   
         }, (sc) -> 
         {
             try
             {
-                e.setAmount(sc.getVar("entity_damage").getFraction(sc).floatValue());
+                e.setAmount(sc.getVar("entity_damage").getFloat(sc));
                 e.setCanceled(sc.getVar("cancel").getBoolean(sc)); 
             }
             catch(Exception ex)
@@ -589,7 +591,7 @@ public class ScriptEvents extends ModuleListener
         }
         handleEvent((EntityPlayer) e.getEntityLiving(), "item_use_start", (sc) -> 
         {
-            sc.setVar("duration", new Fraction(e.getDuration()));
+            sc.setVar("duration", (double) e.getDuration());
             sc.setVar("cancel", e.isCanceled());  
         }, (sc) -> 
         {
@@ -720,8 +722,8 @@ public class ScriptEvents extends ModuleListener
     {    
         handleEvent(e.getPlayer(), "player_use_effect", (sc) -> 
         {       
-            sc.setVar("power", new Fraction(e.getPower()));
-            sc.setVar("mana_cost", new Fraction(e.getMana()));
+            sc.setVar("power", (double) e.getPower());
+            sc.setVar("mana_cost", (double) e.getMana());
             sc.setVar("cause", e.getCause().toString());
             sc.setVar("effect", e.getEffect());
             sc.setVar("cancel", e.isCanceled());
@@ -744,7 +746,7 @@ public class ScriptEvents extends ModuleListener
     {        
         handleEvent(p, "function_key", (sc) -> 
         {
-            sc.setVar("key", new Fraction(key));
+            sc.setVar("key", (double) key);
         });      
     }
 }

+ 2 - 2
src/main/java/me/km/snuviscript/ScriptVars.java

@@ -1,7 +1,6 @@
 package me.km.snuviscript;
 
 import me.hammerle.snuviscript.code.Script;
-import me.hammerle.snuviscript.math.Fraction;
 import me.km.api.Location;
 import net.minecraft.block.state.IBlockState;
 import net.minecraft.entity.Entity;
@@ -18,7 +17,8 @@ public class ScriptVars
         IBlockState state = w.getBlockState(pos);
         qd.setVar("block_loc", new Location(w, pos));
         qd.setVar("block_type", state.getBlock().getRegistryName().toString());
-        qd.setVar("block_data", new Fraction(state.getBlock().getMetaFromState(state)));
+        qd.setVar("block", state.getBlock());
+        qd.setVar("block_data", (double) state.getBlock().getMetaFromState(state));
     }
     
     public static void setPlayerVars(Script qd, EntityPlayer p)

+ 0 - 38
src/main/java/me/km/sounds/Sounds.java

@@ -1,38 +0,0 @@
-package me.km.sounds;
-
-import me.km.KajetansMod;
-import me.km.items.ModItems;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.SoundEvent;
-import net.minecraftforge.registries.IForgeRegistry;
-
-public class Sounds 
-{
-    public static SoundEvent MUSKET_CRIT;
-    public static SoundEvent MUSKET_RELOAD;
-    public static SoundEvent MUSKET_SHOT;
-    public static SoundEvent REVOLVER_CRIT;
-    public static SoundEvent REVOLVER_RELOAD;
-    public static SoundEvent REVOLVER_SHOT;
-    
-    public static void init(IForgeRegistry<SoundEvent> r)
-    {
-        MUSKET_CRIT = register(r, "musket_crit");
-        MUSKET_RELOAD = register(r, "musket_reload");
-        MUSKET_SHOT = register(r, "musket_shot");
-        REVOLVER_CRIT = register(r, "revolver_crit");
-        REVOLVER_RELOAD = register(r, "revolver_reload");
-        REVOLVER_SHOT = register(r, "revolver_shot");
-        
-        ModItems.fixSounds();
-    }
-    
-    private static SoundEvent register(IForgeRegistry<SoundEvent> r, String name)
-    {       
-        ResourceLocation loc = new ResourceLocation(KajetansMod.MODID, name);
-        SoundEvent e = new SoundEvent(loc);
-        e.setRegistryName(loc);
-        r.register(e);
-        return e;
-    }
-}

+ 0 - 10
src/main/resources/assets/km/blockstates/blue_crystal_leaves.json

@@ -1,10 +0,0 @@
-{
-    "variants": {
-        "normal": { "model": "km:leaves/blue_crystal_leaves" },
-        "check_decay=true,decayable=true": { "model": "km:leaves/blue_crystal_leaves" },
-        "check_decay=false,decayable=true": { "model": "km:leaves/blue_crystal_leaves" },
-        "check_decay=true,decayable=false": { "model": "km:leaves/blue_crystal_leaves" },
-        "check_decay=false,decayable=false": { "model": "km:leaves/blue_crystal_leaves" }
-    }
-}
-

+ 0 - 7
src/main/resources/assets/km/blockstates/blue_crystal_sapling.json

@@ -1,7 +0,0 @@
-{
-    "variants": {
-        "normal": { "model": "km:saplings/blue_crystal_sapling" },
-        "stage=0": { "model": "km:saplings/blue_crystal_sapling" },
-        "stage=1": { "model": "km:saplings/blue_crystal_sapling" }
-    }
-}

+ 5 - 5
src/main/resources/assets/km/blockstates/red_crystal_leaves.json → src/main/resources/assets/km/blockstates/cherry_leaves.json

@@ -1,10 +1,10 @@
 {
     "variants": {
-        "normal": { "model": "km:leaves/red_crystal_leaves" },
-        "check_decay=true,decayable=true": { "model": "km:leaves/red_crystal_leaves" },
-        "check_decay=false,decayable=true": { "model": "km:leaves/red_crystal_leaves" },
-        "check_decay=true,decayable=false": { "model": "km:leaves/red_crystal_leaves" },
-        "check_decay=false,decayable=false": { "model": "km:leaves/red_crystal_leaves" }
+        "normal": { "model": "km:leaves/cherry_leaves" },
+        "check_decay=true,decayable=true": { "model": "km:leaves/cherry_leaves" },
+        "check_decay=false,decayable=true": { "model": "km:leaves/cherry_leaves" },
+        "check_decay=true,decayable=false": { "model": "km:leaves/cherry_leaves" },
+        "check_decay=false,decayable=false": { "model": "km:leaves/cherry_leaves" }
     }
 }
 

+ 7 - 0
src/main/resources/assets/km/blockstates/cherry_sapling.json

@@ -0,0 +1,7 @@
+{
+    "variants": {
+        "normal": { "model": "km:saplings/cherry_sapling" },
+        "stage=0": { "model": "km:saplings/cherry_sapling" },
+        "stage=1": { "model": "km:saplings/cherry_sapling" }
+    }
+}

+ 0 - 7
src/main/resources/assets/km/blockstates/red_crystal_sapling.json

@@ -1,7 +0,0 @@
-{
-    "variants": {
-        "normal": { "model": "km:saplings/red_crystal_sapling" },
-        "stage=0": { "model": "km:saplings/red_crystal_sapling" },
-        "stage=1": { "model": "km:saplings/red_crystal_sapling" }
-    }
-}

+ 0 - 10
src/main/resources/assets/km/blockstates/white_crystal_leaves.json

@@ -1,10 +0,0 @@
-{
-    "variants": {
-        "normal": { "model": "km:leaves/white_crystal_leaves" },
-        "check_decay=true,decayable=true": { "model": "km:leaves/white_crystal_leaves" },
-        "check_decay=false,decayable=true": { "model": "km:leaves/white_crystal_leaves" },
-        "check_decay=true,decayable=false": { "model": "km:leaves/white_crystal_leaves" },
-        "check_decay=false,decayable=false": { "model": "km:leaves/white_crystal_leaves" }
-    }
-}
-

+ 0 - 7
src/main/resources/assets/km/blockstates/white_crystal_sapling.json

@@ -1,7 +0,0 @@
-{
-    "variants": {
-        "normal": { "model": "km:saplings/white_crystal_sapling" },
-        "stage=0": { "model": "km:saplings/white_crystal_sapling" },
-        "stage=1": { "model": "km:saplings/white_crystal_sapling" }
-    }
-}

+ 18 - 43
src/main/resources/assets/km/lang/en_US.lang

@@ -19,6 +19,8 @@ item.pickaxeBronze.name=Bronze Pickaxe
 item.hatchetBronze.name=Bronze Axe
 item.hoeBronze.name=Bronze Hoe
 
+item.sling.name=Sling
+
 item.helmetCopper.name=Copper Helmet
 item.chestplateCopper.name=Copper Chestplate
 item.leggingsCopper.name=Copper Leggings
@@ -87,33 +89,17 @@ fluid.honey=Honey
 
 tile.gravelSlab.name=Gravel Slab
 
-tile.redCrystalLeaves.name=Red Crystal Leaves
-tile.blueCrystalLeaves.name=Blue Crystal Leaves
-tile.whiteCrystalLeaves.name=White Crystal Leaves
+tile.cherryLeaves.name=Cherry Leaves
 tile.apricotLeaves.name=Apricot Leaves
 tile.pearLeaves.name=Pear Leaves
 tile.plumLeaves.name=Plum Leaves
 
-tile.redCrystalSapling.name=Red Crystal Sapling
-tile.blueCrystalSapling.name=Blue Crystal Sapling
-tile.whiteCrystalSapling.name=White Crystal Sapling
+tile.cherrySapling.name=Cherry Sapling
 tile.apricotSapling.name=Apricot Sapling
 tile.pearSapling.name=Pear Sapling
 tile.plumSapling.name=Plum Sapling
 
 
-item.wandWood.name=Wooden Wand
-item.wandStone.name=Stone Wand
-item.wandCopper.name=Copper Wand
-item.wandBronze.name=Bronze Wand
-item.wandIron.name=Iron Wand
-item.wandGold.name=Gold Wand
-item.wandEmerald.name=Emerald Wand
-item.wandRedstone.name=Redstone Wand
-item.wandLapis.name=Lapis Lazuli Wand
-item.wandDiamond.name=Diamond Wand
-item.wandSilver.name=Silver Wand
-
 item.stickWood.name=Wooden Stick
 item.stickStone.name=Stone Stick
 item.stickCopper.name=Copper Stick
@@ -122,6 +108,14 @@ item.stickIron.name=Iron Stick
 item.stickGold.name=Gold Stick
 item.stickDiamond.name=Diamond Stick
 
+item.scepterWood.name=Wooden Scepter
+item.scepterStone.name=Stone Scepter
+item.scepterCopper.name=Copper Scepter
+item.scepterBronze.name=Bronze Scepter
+item.scepterIron.name=Iron Scepter
+item.scepterGold.name=Gold Scepter
+item.scepterDiamond.name=Diamond Scepter
+
 item.daggerWood.name=Wooden Dagger
 item.daggerStone.name=Stone Dagger
 item.daggerCopper.name=Copper Dagger
@@ -138,22 +132,6 @@ item.hammerIron.name=Iron Hammer
 item.hammerGold.name=Gold Hammer
 item.hammerDiamond.name=Diamond Hammer
 
-item.spearWood.name=Wooden Spear
-item.spearStone.name=Stone Spear
-item.spearCopper.name=Copper Spear
-item.spearBronze.name=Bronze Spear
-item.spearIron.name=Iron Spear
-item.spearGold.name=Gold Spear
-item.spearDiamond.name=Diamond Spear
-
-item.greatSwordWood.name=Wooden Greatsword
-item.greatSwordStone.name=Stone Greatsword
-item.greatSwordCopper.name=Copper Greatsword
-item.greatSwordBronze.name=Bronze Greatsword
-item.greatSwordIron.name=Iron Greatsword
-item.greatSwordGold.name=Gold Greatsword
-item.greatSwordDiamond.name=Diamond Greatsword
-
 item.battleAxeWood.name=Wooden Battleaxe
 item.battleAxeStone.name=Stone Battleaxe
 item.battleAxeCopper.name=Copper Battleaxe
@@ -170,13 +148,6 @@ item.keyIron.name=Iron Key
 item.keyGold.name=Gold Key
 #item.keyDiamond.name=Diamond Key
 
-item.musketAmmunition.name=Musket Ammunition
-item.revolverBullet.name=Revolver Bullet
-item.musketIron.name=Iron Musket
-item.musketSilver.name=Silver Musket
-item.revolverIron.name=Iron Revolver
-item.revolverSilver.name=Silver Revolver
-
 item.cylinder.name=Cylinder Hat
 item.chestplateSuit.name=Suit Jacket
 item.leggingsSuit.name=Dress Pants 
@@ -188,7 +159,7 @@ item.coinCopper.name=Copper Coin
 item.coinSilver.name=Silver Coin
 item.coinGold.name=Gold Coin
 
-item.scroll.name=Magic Scroll
+item.magicScroll.name=Magic Scroll
 item.realHayBed.name=Hay Mat
 item.bundleHay.name=Hay Bundle
 item.batWing.name=Bat Wing
@@ -196,16 +167,20 @@ item.wolfFur.name=Wolf Fur
 item.bearBrownFur.name=Brown Bear Fur
 item.bearBlackFur.name=Black Bear Fur
 item.bearPolarFur.name=Polar Bear Fur
+item.cloth.name=Cloth
 item.coarseCloth.name=Coarse Cloth
 item.gemStone.name=Gemstone
 item.rawGemStone.name=Raw Gemstone
 item.flawlessGemStone.name=Flawless Gemstone
+item.scroll.name=Scroll
+item.soulStone.name=Soul Stone
+item.piercingStone.name=Piercing Stone
 
 item.soupColored.name=Stew
-item.apricot.name=Apricot
 item.friedEgg.name=Fried Egg
 item.mushroomStickRaw.name=Raw Mushroom Stick
 item.mushroomStickCooked.name=Cooked Mushroom Stick
+item.apricot.name=Apricot
 item.pear.name=Pear
 item.plum.name=Plum
 

+ 0 - 6
src/main/resources/assets/km/models/block/leaves/blue_crystal_leaves.json

@@ -1,6 +0,0 @@
-{
-    "parent": "block/leaves",
-    "textures": {
-        "all": "km:blocks/leaves/blue_crystal_leaves"
-    }
-}

+ 1 - 1
src/main/resources/assets/km/models/block/leaves/red_crystal_leaves.json → src/main/resources/assets/km/models/block/leaves/cherry_leaves.json

@@ -1,6 +1,6 @@
 {
     "parent": "block/leaves",
     "textures": {
-        "all": "km:blocks/leaves/red_crystal_leaves"
+        "all": "km:blocks/leaves/cherry_leaves"
     }
 }

+ 0 - 6
src/main/resources/assets/km/models/block/leaves/white_crystal_leaves.json

@@ -1,6 +0,0 @@
-{
-    "parent": "block/leaves",
-    "textures": {
-        "all": "km:blocks/leaves/white_crystal_leaves"
-    }
-}

+ 0 - 6
src/main/resources/assets/km/models/block/saplings/blue_crystal_sapling.json

@@ -1,6 +0,0 @@
-{
-    "parent": "block/cross",
-    "textures": {
-        "cross": "km:blocks/saplings/blue_crystal_sapling"
-    }
-}

+ 6 - 0
src/main/resources/assets/km/models/block/saplings/cherry_sapling.json

@@ -0,0 +1,6 @@
+{
+    "parent": "block/cross",
+    "textures": {
+        "cross": "km:blocks/saplings/cherry_sapling"
+    }
+}

+ 0 - 6
src/main/resources/assets/km/models/block/saplings/red_crystal_sapling.json

@@ -1,6 +0,0 @@
-{
-    "parent": "block/cross",
-    "textures": {
-        "cross": "km:blocks/saplings/red_crystal_sapling"
-    }
-}

+ 0 - 6
src/main/resources/assets/km/models/block/saplings/white_crystal_sapling.json

@@ -1,6 +0,0 @@
-{
-    "parent": "block/cross",
-    "textures": {
-        "cross": "km:blocks/saplings/white_crystal_sapling"
-    }
-}

+ 0 - 6
src/main/resources/assets/km/models/item/blue_crystal_sapling.json

@@ -1,6 +0,0 @@
-{
-    "parent": "item/generated",
-    "textures": {
-        "layer0": "km:blocks/saplings/blue_crystal_sapling"
-    }
-}

+ 2 - 1
src/main/resources/assets/km/models/item/bronze_battleaxe.json

@@ -1,6 +1,7 @@
 {
-    "parent": "km:item/handheld_battleaxe",
+    "parent": "item/handheld",
     "textures": {
         "layer0": "km:items/battleaxe/bronze_battleaxe"
     }
 }
+

+ 1 - 1
src/main/resources/assets/km/models/item/bronze_dagger.json

@@ -1,5 +1,5 @@
 {
-    "parent": "item/handheld",
+    "parent": "km:item/handheld_dagger",
     "textures": {
         "layer0": "km:items/dagger/bronze_dagger"
     }

+ 0 - 6
src/main/resources/assets/km/models/item/bronze_greatsword.json

@@ -1,6 +0,0 @@
-{
-    "parent": "km:item/handheld_greatsword",
-    "textures": {
-        "layer0": "km:items/greatsword/bronze_greatsword"
-    }
-}

+ 6 - 0
src/main/resources/assets/km/models/item/bronze_scepter.json

@@ -0,0 +1,6 @@
+{
+    "parent": "km:item/handheld_scepter",
+    "textures": {
+        "layer0": "km:items/scepter/bronze_scepter"
+    }
+}

+ 0 - 6
src/main/resources/assets/km/models/item/bronze_spear.json

@@ -1,6 +0,0 @@
-{
-    "parent": "km:item/handheld_spear",
-    "textures": {
-        "layer0": "km:items/spear/bronze_spear"
-    }
-}

+ 0 - 6
src/main/resources/assets/km/models/item/bronze_wand.json

@@ -1,6 +0,0 @@
-{
-    "parent": "item/handheld",
-    "textures": {
-        "layer0": "km:items/wand/bronze_wand"
-    }
-}

+ 6 - 0
src/main/resources/assets/km/models/item/cherry_sapling.json

@@ -0,0 +1,6 @@
+{
+    "parent": "item/generated",
+    "textures": {
+        "layer0": "km:blocks/saplings/cherry_sapling"
+    }
+}

+ 6 - 0
src/main/resources/assets/km/models/item/cloth.json

@@ -0,0 +1,6 @@
+{
+    "parent": "item/generated",
+    "textures": {
+        "layer0": "km:items/cloth/cloth"
+    }
+}

+ 1 - 1
src/main/resources/assets/km/models/item/coarse_cloth.json

@@ -1,6 +1,6 @@
 {
     "parent": "item/generated",
     "textures": {
-        "layer0": "km:items/cloth/cloth"
+        "layer0": "km:items/cloth/old_cloth"
     }
 }

+ 1 - 1
src/main/resources/assets/km/models/item/copper_battleaxe.json

@@ -1,5 +1,5 @@
 {
-    "parent": "km:item/handheld_battleaxe",
+    "parent": "item/handheld",
     "textures": {
         "layer0": "km:items/battleaxe/copper_battleaxe"
     }

+ 1 - 1
src/main/resources/assets/km/models/item/copper_dagger.json

@@ -1,5 +1,5 @@
 {
-    "parent": "item/handheld",
+    "parent": "km:item/handheld_dagger",
     "textures": {
         "layer0": "km:items/dagger/copper_dagger"
     }

+ 0 - 6
src/main/resources/assets/km/models/item/copper_greatsword.json

@@ -1,6 +0,0 @@
-{
-    "parent": "km:item/handheld_greatsword",
-    "textures": {
-        "layer0": "km:items/greatsword/copper_greatsword"
-    }
-}

+ 6 - 0
src/main/resources/assets/km/models/item/copper_scepter.json

@@ -0,0 +1,6 @@
+{
+    "parent": "km:item/handheld_scepter",
+    "textures": {
+        "layer0": "km:items/scepter/copper_scepter"
+    }
+}

+ 0 - 6
src/main/resources/assets/km/models/item/copper_spear.json

@@ -1,6 +0,0 @@
-{
-    "parent": "km:item/handheld_spear",
-    "textures": {
-        "layer0": "km:items/spear/copper_spear"
-    }
-}

+ 0 - 6
src/main/resources/assets/km/models/item/copper_wand.json

@@ -1,6 +0,0 @@
-{
-    "parent": "item/handheld",
-    "textures": {
-        "layer0": "km:items/wand/copper_wand"
-    }
-}

+ 1 - 1
src/main/resources/assets/km/models/item/diamond_battleaxe.json

@@ -1,5 +1,5 @@
 {
-    "parent": "km:item/handheld_battleaxe",
+    "parent": "item/handheld",
     "textures": {
         "layer0": "km:items/battleaxe/diamond_battleaxe"
     }

+ 1 - 1
src/main/resources/assets/km/models/item/diamond_dagger.json

@@ -1,5 +1,5 @@
 {
-    "parent": "item/handheld",
+    "parent": "km:item/handheld_dagger",
     "textures": {
         "layer0": "km:items/dagger/diamond_dagger"
     }

+ 0 - 6
src/main/resources/assets/km/models/item/diamond_greatsword.json

@@ -1,6 +0,0 @@
-{
-    "parent": "km:item/handheld_greatsword",
-    "textures": {
-        "layer0": "km:items/greatsword/diamond_greatsword"
-    }
-}

+ 6 - 0
src/main/resources/assets/km/models/item/diamond_scepter.json

@@ -0,0 +1,6 @@
+{
+    "parent": "km:item/handheld_scepter",
+    "textures": {
+        "layer0": "km:items/scepter/diamond_scepter"
+    }
+}

+ 0 - 6
src/main/resources/assets/km/models/item/diamond_spear.json

@@ -1,6 +0,0 @@
-{
-    "parent": "km:item/handheld_spear",
-    "textures": {
-        "layer0": "km:items/spear/diamond_spear"
-    }
-}

+ 0 - 6
src/main/resources/assets/km/models/item/diamond_wand.json

@@ -1,6 +0,0 @@
-{
-    "parent": "item/handheld",
-    "textures": {
-        "layer0": "km:items/wand/diamond_wand"
-    }
-}

+ 0 - 6
src/main/resources/assets/km/models/item/emerald_wand.json

@@ -1,6 +0,0 @@
-{
-    "parent": "item/handheld",
-    "textures": {
-        "layer0": "km:items/wand/emerald_wand"
-    }
-}

+ 1 - 1
src/main/resources/assets/km/models/item/gold_battleaxe.json

@@ -1,5 +1,5 @@
 {
-    "parent": "km:item/handheld_battleaxe",
+    "parent": "item/handheld",
     "textures": {
         "layer0": "km:items/battleaxe/gold_battleaxe"
     }

+ 1 - 1
src/main/resources/assets/km/models/item/gold_dagger.json

@@ -1,5 +1,5 @@
 {
-    "parent": "item/handheld",
+    "parent": "km:item/handheld_dagger",
     "textures": {
         "layer0": "km:items/dagger/gold_dagger"
     }

+ 0 - 6
src/main/resources/assets/km/models/item/gold_greatsword.json

@@ -1,6 +0,0 @@
-{
-    "parent": "km:item/handheld_greatsword",
-    "textures": {
-        "layer0": "km:items/greatsword/gold_greatsword"
-    }
-}

+ 6 - 0
src/main/resources/assets/km/models/item/gold_scepter.json

@@ -0,0 +1,6 @@
+{
+    "parent": "km:item/handheld_scepter",
+    "textures": {
+        "layer0": "km:items/scepter/gold_scepter"
+    }
+}

Vissa filer visades inte eftersom för många filer har ändrats