Kajetan Johannes Hammerle 7 years ago
parent
commit
a84ba90476

+ 18 - 0
src/main/java/me/km/blocks/BlockCrate.java

@@ -0,0 +1,18 @@
+package me.km.blocks;
+
+import net.minecraft.block.SoundType;
+import net.minecraft.block.material.Material;
+import net.minecraft.creativetab.CreativeTabs;
+
+public class BlockCrate extends BlockBase
+{
+    public BlockCrate(String name, String local)
+    {
+        super(Material.WOOD, name, local);
+        
+        super.setCreativeTab(CreativeTabs.DECORATIONS);
+        super.setHardness(2.0F);
+        super.setResistance(5.0F);
+        super.setSoundType(SoundType.WOOD);
+    }
+}

+ 12 - 12
src/main/java/me/km/blocks/ModBlocks.java

@@ -43,12 +43,12 @@ public class ModBlocks
     public static BlockHay realHayBlock;
     public static BlockHayBed realHayBed;
     
-    public static BlockBase crateAcacia;
-    public static BlockBase crateBigOak;
-    public static BlockBase crateBirch;
-    public static BlockBase crateJungle;
-    public static BlockBase crateOak;
-    public static BlockBase crateSpruce;
+    public static BlockCrate crateAcacia;
+    public static BlockCrate crateBigOak;
+    public static BlockCrate crateBirch;
+    public static BlockCrate crateJungle;
+    public static BlockCrate crateOak;
+    public static BlockCrate crateSpruce;
     
     public static BlockWoodCauldron cauldronOak;
     public static BlockWoodCauldron cauldronBirch;
@@ -115,12 +115,12 @@ public class ModBlocks
         realHayBlock = register(r, new BlockHay("real_hay_block", "realHayBlock"));
         realHayBed = register(r, new BlockHayBed("real_hay_bed", "realHayBed"));
         
-        crateAcacia = register(r, new BlockBase(Material.WOOD, "crate_acacia", "crateAcacia").setCreativeTab(CreativeTabs.DECORATIONS));
-        crateBigOak = register(r, new BlockBase(Material.WOOD, "crate_big_oak", "crateBigOak").setCreativeTab(CreativeTabs.DECORATIONS));
-        crateBirch = register(r, new BlockBase(Material.WOOD, "crate_birch", "crateBirch").setCreativeTab(CreativeTabs.DECORATIONS));
-        crateJungle = register(r, new BlockBase(Material.WOOD, "crate_jungle", "crateJungle").setCreativeTab(CreativeTabs.DECORATIONS));
-        crateOak = register(r, new BlockBase(Material.WOOD, "crate_oak", "crateOak").setCreativeTab(CreativeTabs.DECORATIONS));
-        crateSpruce = register(r, new BlockBase(Material.WOOD, "crate_spruce", "crateSpruce").setCreativeTab(CreativeTabs.DECORATIONS));
+        crateAcacia = register(r, new BlockCrate("crate_acacia", "crateAcacia"));
+        crateBigOak = register(r, new BlockCrate("crate_big_oak", "crateBigOak"));
+        crateBirch = register(r, new BlockCrate("crate_birch", "crateBirch"));
+        crateJungle = register(r, new BlockCrate("crate_jungle", "crateJungle"));
+        crateOak = register(r, new BlockCrate("crate_oak", "crateOak"));
+        crateSpruce = register(r, new BlockCrate("crate_spruce", "crateSpruce"));
         
         cauldronOak = register(r, new BlockWoodCauldron("cauldron_oak", "cauldronOak"));
         cauldronBirch = register(r, new BlockWoodCauldron("cauldron_birch", "cauldronBirch"));

+ 14 - 8
src/main/java/me/km/events/CustomEventCaller.java

@@ -24,24 +24,25 @@ public class CustomEventCaller
     private static final ArrayList<EntityArrow> ARROWS = new ArrayList<>();
     
     private static final HashMap<Integer, PlayerMoveData> MOVE_DATA = new HashMap<>();
+    
     private static final LinkedList<Integer> REMOVE_QUEUE = new LinkedList<>();
+    private static final LinkedList<PlayerMoveData> ADD_QUEUE = new LinkedList<>();
     
     public static int registerMoveData(PlayerMoveData data)
     {
-        MOVE_DATA.put(data.getId(), data);
+        ADD_QUEUE.add(data);
         return data.getId();
     }
     
     public static void removeScriptData(Script sc)
     {
-        try
-        {
-            MOVE_DATA.entrySet().removeIf(e -> e.getValue().isSameScript(sc));
-        }
-        catch(ConcurrentModificationException ex)
+        MOVE_DATA.entrySet().forEach(e -> 
         {
-            ChatChannel.getDevChannel().sendWarning("Fehler beim Entfernen der Move-Events von '" + sc.getName() + "'");
-        }
+            if(e.getValue().isSameScript(sc))
+            {
+                REMOVE_QUEUE.add(e.getValue().getId());
+            }
+        });
     }
     
     public static void removeMoveData(int id)
@@ -54,6 +55,11 @@ public class CustomEventCaller
     {      
         if(e.phase == TickEvent.Phase.END)
         {
+            if(!ADD_QUEUE.isEmpty())
+            {
+                ADD_QUEUE.forEach(data -> MOVE_DATA.put(data.getId(), data));
+                ADD_QUEUE.clear();
+            }
             MOVE_DATA.values().removeIf(data -> 
             {
                 if(data.tickLiving())

+ 3 - 13
src/main/java/me/km/snuviscript/MinecraftFunctions.java

@@ -317,7 +317,7 @@ public class MinecraftFunctions
             }
             return ds.getImmediateSource();
         });
-        parser.registerFunction("player.settag", (sc, in) -> 
+        /*parser.registerFunction("player.settag", (sc, in) -> 
         { 
             Object o = in[0].get(sc);
             if(o instanceof EntityPlayer)
@@ -336,7 +336,7 @@ public class MinecraftFunctions
                 return (double) KajetansMod.playerbank.getDataBank().getTag((EntityPlayer) o, in[1].getString(sc));
             }
             return (double) KajetansMod.playerbank.getDataBank().getTag(o.toString(), in[1].getString(sc));
-        });
+        });*/
         parser.registerFunction("player.setguild", (sc, in) -> 
         { 
             Object o = in[0].get(sc);
@@ -622,17 +622,7 @@ public class MinecraftFunctions
                         in[4].getFloat(sc), in[5].getFloat(sc));
             }
             return new Location((World) in[0].get(sc), in[1].getDouble(sc), in[2].getDouble(sc), in[3].getDouble(sc), 0, 0);
-        });  
-        parser.registerFunction("loc.new2", (sc, in) -> 
-        { 
-            if(in.length >= 6)
-            {
-                return new Location(ModDimensions.getWorldFromName(in[0].getString(sc)), 
-                        in[1].getDouble(sc), in[2].getDouble(sc), in[3].getDouble(sc), 
-                        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) -> ((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());  

+ 3 - 4
src/main/java/me/km/snuviscript/ScriptEvents.java

@@ -213,15 +213,14 @@ public class ScriptEvents extends ModuleListener
                 sc.setVar("cancel", e.isCanceled()); 
             }, (sc) -> 
             {
-                simpleCancel(sc, e, "player_attacked");
+                simpleCancel(sc, e, "player_is_attacked");
             });
         }
         else
         {
-            EntityPlayer ent = Utils.getDamager(e.getSource());
-            if(ent != null)
+            EntityPlayer p = Utils.getDamager(e.getSource());
+            if(p != null)
             {
-                EntityPlayer p = (EntityPlayer) liv;
                 handleEvent(p, "player_attacks", (sc) -> 
                 {
                     ScriptVars.setEntityVars(sc, liv);

+ 1 - 0
src/main/java/me/km/snuviscript/ScriptModule.java

@@ -95,6 +95,7 @@ public class ScriptModule extends Module
             return false;
         }       
         getOrCreatePlayerList(sc.getId()).add(p);
+        ScriptVars.setPlayerVars(sc, p); 
         parser.callEvent("player_join", sc, null, null);
         return true;
     }