Bläddra i källkod

new items, bugfixes

Kajetan Johannes Hammerle 6 år sedan
förälder
incheckning
c552e8ca14

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

@@ -13,6 +13,7 @@ import net.minecraftforge.client.event.RenderGameOverlayEvent;
 import net.minecraftforge.event.entity.player.ItemTooltipEvent;
 import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
 import net.minecraftforge.fml.common.gameevent.TickEvent;
+import net.minecraftforge.fml.common.network.FMLNetworkEvent;
 import net.minecraftforge.fml.relauncher.Side;
 import net.minecraftforge.fml.relauncher.SideOnly;
 
@@ -64,6 +65,14 @@ public class ClientEvents
         }
     }
     
+    @SubscribeEvent
+    public void onRenderGui(FMLNetworkEvent.ClientDisconnectionFromServerEvent e)
+    {
+        PlayerDisplayGui.INSTANCE.clear();
+        StatusDisplayGui.INSTANCE.clear();
+        PlayerHeadGui.INSTANCE.clear();
+    }
+    
     @SubscribeEvent
     public void showingTooltip(ItemTooltipEvent e) 
     {

+ 8 - 19
src/main/java/me/km/KajetansMod.java

@@ -69,7 +69,7 @@ public class KajetansMod
 
     public static final String MODID = "km";
     public static final String NAME = "Kajetans Mod";
-    public static final String VERSION = "0.0.25";
+    public static final String VERSION = "0.0.27";
 
     @Mod.Instance(MODID)
     public static KajetansMod instance;
@@ -84,6 +84,8 @@ public class KajetansMod
         FluidRegistry.enableUniversalBucket();
     }
     
+    public static int counter = 0;
+    
     @Mod.EventHandler
     public void preInit(FMLPreInitializationEvent e) 
     {
@@ -94,36 +96,23 @@ public class KajetansMod
         DamageUtils.init();
         CapabilitiesEvents.init();
         
-        net.minecraftforge.common.MinecraftForge.EVENT_BUS.register(new Object()
+        /*net.minecraftforge.common.MinecraftForge.EVENT_BUS.register(new Object()
             {
                 @net.minecraftforge.fml.common.eventhandler.SubscribeEvent
                 public void wusi2(net.minecraftforge.event.ServerChatEvent e) 
                 {
                     try
                     {
-                        net.minecraft.entity.player.EntityPlayerMP p = e.getPlayer();
-                        String[] parts = e.getMessage().split(" ");
-                        /*int color = (Integer.parseInt(parts[0]) << 16) | (Integer.parseInt(parts[1]) << 8) | Integer.parseInt(parts[2]);
-                        ItemStack stack = new ItemStack(ModItems.jewel);
-                        ModItems.jewel.setColor(stack, color);
-                        p.addItemStackToInventory(stack);*/
-                        /*switch(parts[0])
-                        {   
-                            case "head":
-                                ModPacketHandler.sendToHead(p, Byte.parseByte(parts[1]), Byte.parseByte(parts[2]), 
-                                        parts[3], Integer.parseInt(parts[4]), Integer.parseInt(parts[5]), Byte.parseByte(parts[6]));
-                                break;
-                            case "t":
-                                ModPacketHandler.sendToDisplay(p, (byte) 1, Byte.parseByte(parts[1]), parts[2]);
-                                break;
-                        }*/
+                        EntityPlayerMP p = e.getPlayer();
+                        BlockPos pos = p.getPosition().down();
+                        NBTUtils.cloneBlock(p.world, pos, pos.add(0, 4, 0));
                     }
                     catch(Exception ex)
                     {
                         ex.printStackTrace();
                     }
                 }
-            });
+            });*/
     }
     
     @Mod.EventHandler

+ 6 - 0
src/main/java/me/km/inventory/InventoryBase.java

@@ -193,6 +193,12 @@ public class InventoryBase extends InventoryBasic
         return getSlotStatus(x, y) != 0;
     }
     
+    public boolean shouldRenderOverlay(int x, int y)
+    {
+        int status = getSlotStatus(x, y);
+        return  status == 0 || status == 2; 
+    }
+    
     @Override
     public ItemStack addItem(ItemStack itemstack)
     {

+ 10 - 2
src/main/java/me/km/items/ModItems.java

@@ -230,6 +230,9 @@ public class ModItems
     public static ItemBase hayBundle; 
     public static ItemBase batWing; 
     public static ItemBase wolfFur; 
+    public static ItemBase bearBrownFur; 
+    public static ItemBase bearBlackFur; 
+    public static ItemBase bearPolarFur; 
     public static ItemBlockSpecial campFire; 
     public static ItemBase coarseCloth;
     public static ItemGemStone gemStone;
@@ -260,6 +263,7 @@ public class ModItems
     public static ItemBase plusRed;
     public static ItemBase returnGreen;
     public static ItemBase returnRed;
+    public static ItemBase gear;
     
     // herbs
     public static ItemHerbs herbStrong;
@@ -398,10 +402,10 @@ public class ModItems
         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.2d, 80, 1,
+                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.2d, 80, 1,
+                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,
@@ -430,6 +434,9 @@ public class ModItems
         hayBundle = register(r, new ItemBase("hay_bundle", "bundleHay").setCreativeTab(CreativeTabs.MATERIALS));
         batWing = register(r, new ItemBase("bat_wing", "batWing").setCreativeTab(CreativeTabs.MATERIALS));
         wolfFur = register(r, new ItemBase("wolf_fur", "wolfFur").setCreativeTab(CreativeTabs.MATERIALS));
+        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));
         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"));
@@ -459,6 +466,7 @@ public class ModItems
         plusRed = register(r, new ItemBase("plus_red", "plusRed").setCreativeTab(CreativeTabs.MISC));
         returnGreen = register(r, new ItemBase("return_green", "returnGreen").setCreativeTab(CreativeTabs.MISC));
         returnRed = register(r, new ItemBase("return_red", "returnRed").setCreativeTab(CreativeTabs.MISC));
+        gear = register(r, new ItemBase("gear", "gear").setCreativeTab(CreativeTabs.MISC));
         
         // herbs
         herbStrong = register(r, new ItemHerbs("herb_strong", "herbStrong", new PotionEffect(MobEffects.SPEED, 6000, 1)));

+ 23 - 26
src/main/java/me/km/items/weapons/ItemGun.java

@@ -23,7 +23,7 @@ import net.minecraftforge.fml.relauncher.SideOnly;
 
 public class ItemGun extends ItemWeapon
 {
-    private static final double STANDARD_AIM = 0.0625d;
+    private static final double STANDARD_AIM = 0.03125d;
     private final Item ammo;
     private final int damage;
     private final double missAim;
@@ -131,8 +131,7 @@ public class ItemGun extends ItemWeapon
         {
             EntityPlayer p = (EntityPlayer) liv;
             int load = getLoad(stack);
-            boolean creative = p.capabilities.isCreativeMode;
-            if(load > 0 || creative)
+            if(load > 0)
             {
                 p.getCooldownTracker().setCooldown(this, 10);
                 if (!w.isRemote)
@@ -151,11 +150,7 @@ public class ItemGun extends ItemWeapon
                     }   
                 }
                 
-                if(!creative)
-                {
-                    setLoad(stack, load - 1);
-                }
-                
+                setLoad(stack, load - 1);
                 playSound(p, w, soundShot);
                 p.addStat(StatList.getObjectUseStats(this));
             }
@@ -206,32 +201,34 @@ public class ItemGun extends ItemWeapon
     @Override
     public ActionResult<ItemStack> onItemRightClick(World w, EntityPlayer p, EnumHand hand)
     {
-        if(p.capabilities.isCreativeMode)
-        {
-            setLoad(p.getHeldItem(hand), maxLoad);
-            playSound(p, w, soundReload);
-            return new ActionResult(EnumActionResult.SUCCESS, p.getHeldItem(hand));
-        }
         ItemStack stack = p.getHeldItem(hand);    
         int load = getLoad(stack);
-        if(load <= 0)
+        if(p.isSneaking())
         {
-            if(!p.isSneaking())
+            if(load >= maxLoad)
+            {
+                return new ActionResult(EnumActionResult.FAIL, stack);
+            }
+            if(p.capabilities.isCreativeMode)
             {
-                return new ActionResult<>(EnumActionResult.FAIL, p.getHeldItem(hand));
+                setLoad(stack, load + 1);
+                p.getCooldownTracker().setCooldown(this, cooldown);
+                playSound(p, w, soundReload);
             }
-            ItemStack ammoStack = findAmmo(p);
-            if(!ammoStack.isEmpty())
+            else
             {
-                int newLoad = Math.min(ammoStack.getCount(), maxLoad);
-                setLoad(stack, newLoad);
-                p.getCooldownTracker().setCooldown(this, cooldown * newLoad);
-                ammoStack.shrink(newLoad);
-                if(ammoStack.isEmpty())
+                ItemStack ammoStack = findAmmo(p);
+                if(!ammoStack.isEmpty())
                 {
-                    p.inventory.deleteStack(ammoStack);
+                    setLoad(stack, load + 1);
+                    p.getCooldownTracker().setCooldown(this, cooldown);
+                    ammoStack.shrink(1);
+                    if(ammoStack.isEmpty())
+                    {
+                        p.inventory.deleteStack(ammoStack);
+                    }
+                    playSound(p, w, soundReload);
                 }
-                playSound(p, w, soundReload);
             }
             return new ActionResult(EnumActionResult.FAIL, stack);
         }

+ 1 - 1
src/main/java/me/km/networking/CustomInventoryGui.java

@@ -62,7 +62,7 @@ public class CustomInventoryGui extends GuiContainer
         {
             for(int y = 0; y < inventoryRows; y++)
             {
-                if(!inv.isSlotValid(x, y))
+                if(inv.shouldRenderOverlay(x, y))
                 {
                     this.drawTexturedModalRect(i + 18 * x, j + 18 * y, 0, 0, 18, 18);
                 }

+ 11 - 1
src/main/java/me/km/scheduler/SnuviTask.java

@@ -1,5 +1,8 @@
 package me.km.scheduler;
 
+import me.hammerle.snuviscript.code.ISnuviLogger;
+import me.km.KajetansMod;
+
 public class SnuviTask
 {
     private final int id;
@@ -35,7 +38,14 @@ public class SnuviTask
         timer -= 1;
         if(timer <= 0)
         {
-            r.run();
+            try
+            {
+                r.run();
+            }
+            catch(Exception ex)
+            {
+                KajetansMod.scripts.getSnuviParser().getLogger().print(ex.getLocalizedMessage(), ex, null, null, null, -1);
+            }
             if(rtimer <= 0)
             {
                 return true;

+ 5 - 2
src/main/java/me/km/snuviscript/MinecraftFunctions.java

@@ -678,8 +678,7 @@ public class MinecraftFunctions
         parser.registerFunction("block.clone", (sc, in) -> 
         { 
             Location l = (Location) in[1].get(sc);
-            IBlockState state = getBlockState((Location) in[0].get(sc));
-            l.getWorld().setBlockState(l.getBlockPos(), state);
+            NBTUtils.cloneBlock(l.getWorld(), ((Location) in[0].get(sc)).getBlockPos(), l.getBlockPos());
             return Void.TYPE; 
         });
         parser.registerFunction("block.set", (sc, in) -> 
@@ -1593,6 +1592,10 @@ public class MinecraftFunctions
             in[0].set(sc, new SnuviInventory(in[2].getString(sc), in[1].getString(sc), inventoryIds++)); 
             return Void.TYPE; 
         }); 
+        parser.registerFunction("inv.getid", (sc, in) -> 
+        { 
+            return new Fraction(((SnuviInventory) in[0].get(sc)).getId()); 
+        }); 
         parser.registerFunction("inv.loadblock", (sc, in) -> 
         { 
             Location l = (Location) in[1].get(sc);

+ 0 - 2
src/main/java/me/km/snuviscript/ScriptEvents.java

@@ -2,9 +2,7 @@ package me.km.snuviscript;
 
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.HashMap;
 import java.util.List;
-import java.util.UUID;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
 import me.hammerle.snuviscript.code.Compiler;

+ 42 - 0
src/main/java/me/km/utils/NBTUtils.java

@@ -1,11 +1,18 @@
 package me.km.utils;
 
+import com.google.common.collect.Lists;
+import java.util.List;
+import java.util.function.Predicate;
 import me.hammerle.snuviscript.code.InputProvider;
 import me.hammerle.snuviscript.code.Script;
 import me.km.api.Location;
 import me.km.exception.IllegalStringException;
 import net.minecraft.block.Block;
 import net.minecraft.block.state.IBlockState;
+import net.minecraft.command.CommandClone;
+import net.minecraft.command.CommandException;
+import net.minecraft.command.ICommandSender;
+import net.minecraft.command.WrongUsageException;
 import net.minecraft.entity.Entity;
 import net.minecraft.entity.EntityLiving;
 import net.minecraft.entity.player.EntityPlayer;
@@ -25,6 +32,7 @@ import net.minecraft.util.text.event.ClickEvent;
 import net.minecraft.util.text.event.HoverEvent;
 import net.minecraft.world.World;
 import net.minecraft.world.chunk.storage.AnvilChunkLoader;
+import net.minecraft.world.gen.structure.StructureBoundingBox;
 
 public class NBTUtils 
 {
@@ -116,6 +124,40 @@ public class NBTUtils
             w.notifyNeighborsRespectDebug(pos, iblockdata.getBlock(), false);
         }
     }
+    
+    @SuppressWarnings(value = {"unchecked", "deprecation"})
+    public static void cloneBlock(World w, BlockPos oldPos, BlockPos newPos)
+    {
+        if(oldPos.equals(newPos))
+        {
+            return;
+        }
+        IBlockState state = w.getBlockState(oldPos);
+        NBTTagCompound nbt = null;
+
+        if(state.getBlock() != Blocks.AIR)
+        {
+            TileEntity te = w.getTileEntity(oldPos);
+            if (te != null)
+            {
+                nbt = te.writeToNBT(new NBTTagCompound());
+            }
+        }
+
+        w.setBlockState(newPos, state);
+        if(nbt != null)
+        {
+            TileEntity te = w.getTileEntity(newPos);
+            if(te != null)
+            {
+                nbt.setInteger("x", newPos.getX());
+                nbt.setInteger("y", newPos.getY());
+                nbt.setInteger("z", newPos.getZ());
+                te.readFromNBT(nbt);
+                te.markDirty();
+            }
+        }
+    }
 
     // -------------------------------------------------------------------------
     // NBT Tools

+ 4 - 0
src/main/resources/assets/km/lang/en_US.lang

@@ -193,6 +193,9 @@ item.realHayBed.name=Hay Mat
 item.bundleHay.name=Hay Bundle
 item.batWing.name=Bat Wing
 item.wolfFur.name=Wolf Fur
+item.bearBrownFur.name=Brown Bear Fur
+item.bearBlackFur.name=Black Bear Fur
+item.bearPolarFur.name=Polar Bear Fur
 item.coarseCloth.name=Coarse Cloth
 item.gemStone.name=Gemstone
 item.rawGemStone.name=Raw Gemstone
@@ -220,6 +223,7 @@ item.plusGreen.name=Green Plus
 item.plusRed.name=Red Plus
 item.returnGreen.name=Green Return
 item.returnRed.name=Red Return
+item.gear.name=Gear
 
 item.herbStrong.name=Power Herb
 item.herbShadow.name=Shadow Herb

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

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

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

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

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

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

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

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

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

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

BIN
src/main/resources/assets/km/textures/items/fur/bear_black_fur.png


BIN
src/main/resources/assets/km/textures/items/fur/bear_brown_fur.png


BIN
src/main/resources/assets/km/textures/items/fur/bear_polar_fur.png


+ 0 - 0
src/main/resources/assets/km/textures/items/wolf_fur.png → src/main/resources/assets/km/textures/items/fur/wolf_fur.png


BIN
src/main/resources/assets/km/textures/items/gear.png