Jump to content

IlTosaerba

Members
  • Posts

    40
  • Joined

  • Last visited

Posts posted by IlTosaerba

  1. Container code: 

    Spoiler
    
    package com.WLLC.mysticWeapons.containers;
    
    import com.WLLC.mysticWeapons.blocks.WLLC_myWE_Blocks;
    import com.WLLC.mysticWeapons.crafting.crystalInfuser.WLLC_myWE_CrystalInfuserCraftingManager;
    import com.WLLC.mysticWeapons.crafting.crystalInfuser.WLLC_myWE_CrystalInfuserInventoryCrafting;
    
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.entity.player.InventoryPlayer;
    import net.minecraft.inventory.Container;
    import net.minecraft.inventory.IInventory;
    import net.minecraft.inventory.InventoryCraftResult;
    import net.minecraft.inventory.InventoryCrafting;
    import net.minecraft.inventory.Slot;
    import net.minecraft.inventory.SlotCrafting;
    import net.minecraft.item.ItemStack;
    import net.minecraft.world.World;
    
    public class WLLC_myWE_CrystalInfuserContainer extends Container {
    
    	public WLLC_myWE_CrystalInfuserInventoryCrafting craftMatrix;
    	public IInventory craftResult;
    	private World worldObj;
    	private int posX, posY, posZ;
    	
    	public WLLC_myWE_CrystalInfuserContainer(InventoryPlayer invPlayer, World world, int x, int y, int z) {
    		
    		craftMatrix = new WLLC_myWE_CrystalInfuserInventoryCrafting(this);
    		craftResult = new InventoryCraftResult();
    		worldObj = world;
    		posX = x;
    		posY = y;
    		posZ = z;
    		
    		this.addSlotToContainer(new SlotCrafting(invPlayer.player, craftMatrix, craftResult, 0, 141, 43));
    		
    		for (int i = 0; i < 5; i++) {
    			
    			for (int k = 0; k < 5; k++) {
    				
    				if (i != 1 && i != 2 && i != 3) {
    				
    					this.addSlotToContainer(new Slot(craftMatrix, k + i * 5, 8 + k * 18, 7 + i * 18));
    				
    				} else if (i == 1 || i == 3) {
    					
    					if (k == 0 || k == 4) {
    						
    						this.addSlotToContainer(new Slot(craftMatrix, k + i * 5, 8 + k * 18, 7 + i * 18));
    						
    					}
    					
    				} else if (i == 2) {
    					
    					if (k != 1 && k != 3) {
    						
    						this.addSlotToContainer(new Slot(craftMatrix, k + i * 5, 8 + k * 18, 7 + i * 18));
    						
    					}
    					
    				}
    				
    			}
    			
    		}
    		
    		for (int i = 0; i < 3; i++) {
    			
    			for (int k = 0; k < 9; k++) {
    				
    				this.addSlotToContainer(new Slot(invPlayer, k + i * 9 + 9, 8 + k * 18, 106 + i * 18));
    				
    			}
    			
    		}
    		
    		for (int i = 0; i < 9; i++) {
    			
    			this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 164));
    			
    		}
    		
    		onCraftMatrixChanged(craftMatrix);
    		
    	}
    	
    	public void onCraftMatrixChanged(IInventory iinventory) {
    		
    		craftResult.setInventorySlotContents(0, WLLC_myWE_CrystalInfuserCraftingManager.getInstance().findMatchingRecipe(craftMatrix, worldObj));
    		
    	}
    	
    	@Override
    	public boolean canInteractWith(EntityPlayer player) {
    		
    		if (worldObj.getBlock(posX, posY, posZ) != WLLC_myWE_Blocks.crystalInfuser) {
    			
    			return false;
    			
    		} else {
    			
    			return player.getDistanceSq((double) posX + 0.5D, (double) posY + 0.5D, (double) posZ + 0.5D) <= 64.0D;
    			
    		}
    	
    	}
    	
    	public void onContainerClosed(EntityPlayer player) {
    		
            super.onContainerClosed(player);
    
            if (!this.worldObj.isRemote) {
            	
                for (int i = 0; i < 25; ++i) {
                	
                    ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(i);
    
                    if (itemstack != null) {
                    	
                        player.dropPlayerItemWithRandomChoice(itemstack, false);
                        
                    }
                    
                }
                
            }
            
        }
    	
    	 public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int invSlot) {
    		 
    	        ItemStack itemstack = null;
    	        Slot slot = (Slot)this.inventorySlots.get(invSlot);
    
    	        if (slot != null && slot.getHasStack()) {
    	        	
    	            ItemStack itemstack1 = slot.getStack();
    	            itemstack = itemstack1.copy();
    
    	            if (invSlot == 0) {
    	            	
    	                if (!this.mergeItemStack(itemstack1, 10, 46, true)) {
    	                	
    	                    return null;
    	                    
    	                }
    
    	                slot.onSlotChange(itemstack1, itemstack);
    	                
    	            } else if (invSlot >= 10 && invSlot < 37) {
    	            	
    	                if (!this.mergeItemStack(itemstack1, 37, 46, false)) {
    	                	
    	                    return null;
    	                    
    	                }
    	                
    	            } else if (invSlot >= 37 && invSlot < 46) {
    	            	
    	                if (!this.mergeItemStack(itemstack1, 10, 37, false)) {
    	                	
    	                    return null;
    	                    
    	                }
    	                
    	            } else if (!this.mergeItemStack(itemstack1, 10, 46, false)) {
    	            	
    	                return null;
    	                
    	            }
    
    	            if (itemstack1.stackSize == 0) {
    	            	
    	                slot.putStack((ItemStack)null);
    	                
    	            } else {
    	            	
    	                slot.onSlotChanged();
    	                
    	            }
    
    	            if (itemstack1.stackSize == itemstack.stackSize) {
    	            	
    	                return null;
    	                
    	            }
    
    	            slot.onPickupFromSlot(p_82846_1_, itemstack1);
    	        }
    
    	        return itemstack;
    	        
    	    }
    
    }

     

     

  2. Basically, 1.7.10 version is the best version to use in custom forge servers with friends.

    It's not only my opinion, we done a test and if 1.8.9 or 1.12 are the most powerfull ones, 1.7.10 still the best if you don't have a server and want to host a VPN to play with your friends.

    Crete mods for 1.7.10 means create costum content for and/or with your friends.

  3. Hi modders,

    I want to put a particular custom workbench in my mod, a workbench with "holes" in the GUI.

     

    GUI:

    Spoiler

    crystalInfuser.png.63bca2b345963e45601512b6e9e8c610.png

     

     

    Now, in the container I successfully added the slots in the right way, but when I try to interact with it the ShapedRecipe give me problems.

     

    The InventoryCrafting is a 5x5, so I created a custom class to set the  SizeInventory to 17 (instead of 25).
     

    Custom InventoryCraft:

    Spoiler
    
    package com.WLLC.mysticWeapons.crafting.crystalInfuser;
    
    import net.minecraft.inventory.Container;
    import net.minecraft.inventory.InventoryCrafting;
    import net.minecraft.item.ItemStack;
    
    public class WLLC_myWE_CrystalInfuserInventoryCrafting extends InventoryCrafting {
    
    	public WLLC_myWE_CrystalInfuserInventoryCrafting(Container p_i1807_1_) {
    		
    		super(p_i1807_1_, 5, 5);
    		
    	}
        
    	@Override
    	public int getSizeInventory() {
    		
    		return 17;
    		
    	}
    	
    	@Override
    	public String getInventoryName() {
    		
    		return "container.crystalInfuser";
    		
    	}
    	
    	@Override
    	public boolean hasCustomInventoryName() {
    		
    		return true;
    		
    	}
    	
    	
    	@Override
    	public ItemStack getStackInRowAndColumn(int row, int column) {
    		
    		if (row == 0 || row == 4) {
    			
    			return vanillaGetStackInRowAndColumnOperation(row, column);
    			
    		} else if (row == 1 || row == 3){
    			
    			if (column == 0 || column == 4) {
    				
    				return vanillaGetStackInRowAndColumnOperation(row, column);
    				
    			} else {
    				
    				return null;
    				
    			}
    			
    		} else if (row == 2) {
    			
    			if (column != 1 && column != 3) {
    				
    				return vanillaGetStackInRowAndColumnOperation(row, column);
    				
    			} else {
    				
    				return null;
    				
    			}
    			
    		} else {
    			
    			return null;
    			
    		}
    		
    	}
    	
    	public ItemStack vanillaGetStackInRowAndColumnOperation(int row, int column) {
    		
    		return super.getStackInSlot(row + column * 5);
    		
    	}
        
    }

     

     

    The problem is in the checkMatch() method of the ShapedRecipe class, where the class do some strange operation (lines form 98 to 106). This kind of satanic farmulas work fine if I have a 25 elements array, but I have a 17 one :( and I don't know how to arrange them to correctly scan the array from 0 to 16.

    Custom ShapedRecipe:

    Spoiler
    
    package com.WLLC.mysticWeapons.crafting.crystalInfuser;
    
    import net.minecraft.inventory.InventoryCrafting;
    import net.minecraft.item.ItemStack;
    import net.minecraft.item.crafting.IRecipe;
    import net.minecraft.nbt.NBTTagCompound;
    import net.minecraft.world.World;
    
    public class WLLC_myWE_CrystalInfuserShapedRecipes implements IRecipe {
    
        public final int recipeWidth;
        public final int recipeHeight;
        public final ItemStack[] recipeItems;
        private ItemStack recipeOutput;
        private boolean field_92101_f;
        private static final String __OBFID = "CL_00000093";
    
        public WLLC_myWE_CrystalInfuserShapedRecipes(int p_i1917_1_, int p_i1917_2_, ItemStack[] ingredients, ItemStack result) {
        	
            this.recipeWidth = p_i1917_1_;
            this.recipeHeight = p_i1917_2_;
            this.recipeItems = ingredients;
            this.recipeOutput = result;
            
        }
    
        public ItemStack getRecipeOutput() {
        	
            return this.recipeOutput;
            
        }
    
        public boolean customMatches(WLLC_myWE_CrystalInfuserInventoryCrafting invCrafting, World world) {
        	
            for (int row = 0; row <= 5 - this.recipeWidth; ++row) {
            	
                for (int column = 0; column <= 5 - this.recipeHeight; ++column) {
                	
                	if (row == 0 || row == 4) {
                	
                		return vanillaMatchesProcess(invCrafting, world, row, column);
                    
                	} else if (row == 1 || row == 3){
                		
                		if (column == 0 || column == 4) {
                			
                			return vanillaMatchesProcess(invCrafting, world, row, column);
                			
                		}
                		
                	} else if (row == 2) {
                		
                		if (column != 1 && column != 3) {
                			
                			return vanillaMatchesProcess(invCrafting, world, row, column);
                			
                		}
                		
                	}
                    
                }
                
            }
    
            return false;
        }
        
        public boolean vanillaMatchesProcess(WLLC_myWE_CrystalInfuserInventoryCrafting invCrafting, World world, int row, int column) {
        	
        	if (this.checkMatch(invCrafting, row, column, true)) {
            	
    			return true;
            
    		}
    
    		if (this.checkMatch(invCrafting, row, column, false)) {
        	
    			return true;
            
    		}
    		
    		return false;
        	
        }
    
        private boolean checkMatch(WLLC_myWE_CrystalInfuserInventoryCrafting invCrafting, int row0, int column0, boolean p_77573_4_) {
        	
            for (int row = 0; row < 5; ++row) {
            	
                for (int column = 0; column < 5; ++column) {
                	
                    int row1 = row - row0;
                    int column1 = column - column0;
                    ItemStack itemstack = null;
    
                    if (row1 >= 0 && column1 >= 0 && row1 < this.recipeWidth && column1 < this.recipeHeight) {
                    	
                        if (p_77573_4_) {
                        	
                            itemstack = this.recipeItems[this.recipeWidth - row1 - 1 + column1 * this.recipeWidth];
                            
                        } else {
                        	
                            itemstack = this.recipeItems[row1 + column1 * this.recipeWidth];
                            
                        }
                        
                    }
    
                    ItemStack itemstack1 = invCrafting.getStackInRowAndColumn(row, column);
    
                    if (itemstack1 != null || itemstack != null) {
                    	
                        if (itemstack1 == null && itemstack != null || itemstack1 != null && itemstack == null) {
                        	
                            return false;
                            
                        }
    
                        if (itemstack.getItem() != itemstack1.getItem()) {
                        	
                            return false;
                            
                        }
    
                        if (itemstack.getItemDamage() != 32767 && itemstack.getItemDamage() != itemstack1.getItemDamage()) {
                        	
                            return false;
                            
                        }
                        
                    }
                    
                }
                
            }
    
            return true;
        }
    
        public ItemStack customGetCraftingResult(WLLC_myWE_CrystalInfuserInventoryCrafting invCrafting) {
        	
            ItemStack itemstack = this.getRecipeOutput().copy();
    
            if (this.field_92101_f) {
            	
                for (int i = 0; i < invCrafting.getSizeInventory(); ++i) {
                	
                    ItemStack itemstack1 = invCrafting.getStackInSlot(i);
    
                    if (itemstack1 != null && itemstack1.hasTagCompound()) {
                    	
                        itemstack.setTagCompound((NBTTagCompound)itemstack1.stackTagCompound.copy());
                        
                    }
                    
                }
                
            }
    
            return itemstack;
        }
    
       public int getRecipeSize() {
    	   
            return this.recipeWidth * this.recipeHeight;
            
        }
    
        public WLLC_myWE_CrystalInfuserShapedRecipes func_92100_c() {
        	
            this.field_92101_f = true;
            return this;
            
        }
    
    	@Override
    	public boolean matches(InventoryCrafting invCrafting, World world) {
    		
    		return this.customMatches((WLLC_myWE_CrystalInfuserInventoryCrafting) invCrafting, world);
    		
    	}
    
    	@Override
    	public ItemStack getCraftingResult(InventoryCrafting invCrafting) {
    		
    		return this.customGetCraftingResult((WLLC_myWE_CrystalInfuserInventoryCrafting) invCrafting);
    		
    	}
        
    }

     

     

    How can I resolve this? Or I'm doing this terribly wrong?

    Thanks in advice

  4.  

    Hi modders,

    I know that 1.7.10 is a bit out dated  but I must use this version form my mod.

    My mod adds some crystal that give special powers. How this works?

    Well, I created some Enchantments, then I add this Enchantments to an Item when this is put in an anvil with a crystal via the AnvilUpdateEvent in my EventHandler class. After doing this I check the special scenario always via the EventHandlers to do stuff. For example if you put in the anvil a sword and a blood crystal the sword obtain the "Life Steal" enchantment which heal u a bit after a kill. This works thanks to the LivingDeathEvent. The code (the imports are been deleted, don't know why):

     

    Spoiler
    
    package com.WLLC.mysticWeapons.handlers;
    
    public class WLLC_myWE_BloodPowersEventHandler {
    
    	@SubscribeEvent
    	public void onLivingDeathEvent(LivingDeathEvent event) {
    		
    		//Check for lifeSteal Power
    		if (event.source.getEntity() instanceof EntityPlayer) {
    			
    			EntityPlayer player = (EntityPlayer) event.source.getEntity();
    			
    			ItemStack heldItem = player.getHeldItem();
    			
    			int lifeStealEnchantmentLevel = EnchantmentHelper.getEnchantmentLevel(GlobalVariables.lifeSteal.effectId, heldItem);
    			
    			if (heldItem != null && lifeStealEnchantmentLevel > 0) {
    			
    				player.heal(1.0F * lifeStealEnchantmentLevel);
    			
    			}
    			
    		}
    	}
    	
    	@SubscribeEvent
    	public void addBloodPowerEvent(AnvilUpdateEvent event) {
    		
    		if (event.left.getItem() instanceof ItemSword && Item.getIdFromItem(event.right.getItem()) == Item.getIdFromItem(WLLC_myWE_Items.bloodCrystal)) {
    					
    			event.cost = 50;
    			event.output = event.left.copy();
    			event.output.addEnchantment(GlobalVariables.lifeSteal, 1);
    			
    		}
    		
    	}
    	
    }

     

     

    Now, if u put in the anvil an armor piece and a dark Crystal the armor piece gain the "Assassin's Blessing" enchantment, which should make you invisible after a kill. Now, for make this works, over the events, I use a boolean variable. This is because I want to make all the pg invisible, even the armor and the held item. U know that if i add the potion effect (invisibility) to the player the armor and the held item will still visible. So i make the armor disappear thanks to the SetArmorModel event, which i discover be Client side only. If I play in my singleplayer world it all works, but when I test the mod in the server it doesen't work. Here's the code:

     


    The handler for  the dark powers:
     

    Spoiler
    
    package com.WLLC.mysticWeapons.handlers;
    
    import com.WLLC.mysticWeapons.GlobalVariables;
    import com.WLLC.mysticWeapons.items.WLLC_myWE_Items;
    
    import cpw.mods.fml.common.eventhandler.SubscribeEvent;
    import net.minecraft.enchantment.EnchantmentHelper;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemArmor;
    import net.minecraft.potion.Potion;
    import net.minecraft.potion.PotionEffect;
    import net.minecraftforge.client.event.RenderPlayerEvent.SetArmorModel;
    import net.minecraftforge.event.AnvilUpdateEvent;
    import net.minecraftforge.event.entity.living.LivingDeathEvent;
    
    public class WLLC_myWE_DarkPowersEventHandler {
    
    	@SubscribeEvent
    	public void addDarkPowerEvent(AnvilUpdateEvent event) {
    		
    		if (event.left.getItem() instanceof ItemArmor && Item.getIdFromItem(event.right.getItem()) == Item.getIdFromItem(WLLC_myWE_Items.darkCrystal)) {
    			
    			event.cost = 50;
    			event.output = event.left.copy();
    			event.output.addEnchantment(GlobalVariables.assassinBlessing, 1);
    			
    		}
    		
    	}
    	
    	@SubscribeEvent
    	public void onLivingDeathEvent(LivingDeathEvent event) {
    		
    		//Check for assassinBlessing Power
    		if (event.source.getEntity() instanceof EntityPlayer) {
    			
    			EntityPlayer player = (EntityPlayer) event.source.getEntity();
    			
    			for (int i = 0; i<4; i++) {
    				
    				int assassinBlessingEnchantmentLevel = EnchantmentHelper.getEnchantmentLevel(GlobalVariables.assassinBlessing.effectId, player.inventory.armorItemInSlot(i));
    				
    				if (assassinBlessingEnchantmentLevel > 0) {
    					
    					player.addPotionEffect(new PotionEffect(Potion.invisibility.id, 159, 1, false));
    					
    					if (!GlobalVariables.assassinBlessingBonus) {
    						
    						GlobalVariables.assassinBlessingBonus = true;
                            	break;
    					
    					}
    				
    				}
    				
    			}
    			
    		}
    		
    	}
    	
    	//The check for the assassinBlessing Bonus is in ClientOnlyEventHandler 'cause its a Render event
    	
    }

     

     

     

    The SetArmorModel event:
     

    Spoiler
    
    package com.WLLC.mysticWeapons.handlers;
    
    import com.WLLC.mysticWeapons.GlobalVariables;
    
    import cpw.mods.fml.common.eventhandler.SubscribeEvent;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraftforge.client.event.RenderPlayerEvent.SetArmorModel;
    
    public class WLLC_myWE_ClientOnlyEventHandler {
    
    	@SubscribeEvent
    	public void onArmorEvent(SetArmorModel event) {
    		
    		//Check for assassinBlessin Bonus
    		if (event.entity instanceof EntityPlayer && GlobalVariables.assassinBlessingBonus) {
    			
    			if (((EntityPlayer) event.entity).isInvisible()){
    				
    				event.result = 0;
    				
    			} else {
    				
    				GlobalVariables.assassinBlessingBonus = false;
    				
    			}
    			
    		}
    		
    	}
    	
    }

     

     

     

    My proxys (Client and Common):

     

    Spoiler
    
    package com.WLLC.mysticWeapons.proxy;
    
    import com.WLLC.mysticWeapons.handlers.WLLC_myWE_ClientOnlyEventHandler;
    
    import cpw.mods.fml.common.event.FMLInitializationEvent;
    import cpw.mods.fml.common.event.FMLPostInitializationEvent;
    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
    import net.minecraftforge.common.MinecraftForge;
    
    public class ClientProxy extends CommonProxy{
    
    	public void preInit(FMLPreInitializationEvent preEvent) {
    		
    		super.preInit(preEvent);
    		
    	}
    	
    	@Override
    	public void init(FMLInitializationEvent event) {
    		
    		super.init(event);
    		MinecraftForge.EVENT_BUS.register(new WLLC_myWE_ClientOnlyEventHandler());
    		
    	}
    
    	public void postInit(FMLPostInitializationEvent postEvent) {
    	
    	super.postInit(postEvent);
    	
    }
    	
    }

     

    Spoiler
    
    package com.WLLC.mysticWeapons.proxy;
    
    import com.WLLC.mysticWeapons.crafting.WLLC_myWE_Recipes;
    import com.WLLC.mysticWeapons.handlers.WLLC_myWE_BloodPowersEventHandler;
    import com.WLLC.mysticWeapons.handlers.WLLC_myWE_DarkPowersEventHandler;
    import com.WLLC.mysticWeapons.handlers.WLLC_myWE_SoulPowersEventHandler;
    import com.WLLC.mysticWeapons.items.WLLC_myWE_Items;
    
    import cpw.mods.fml.common.event.FMLInitializationEvent;
    import cpw.mods.fml.common.event.FMLPostInitializationEvent;
    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
    import net.minecraftforge.common.MinecraftForge;
    
    public class CommonProxy {
    
    	public void preInit(FMLPreInitializationEvent preEvent) {
    		
    		WLLC_myWE_Items.initItems();
    		
    		WLLC_myWE_Recipes.initRecipes();
    		
    	}
    	
    	public void init(FMLInitializationEvent event) {
    		
    		MinecraftForge.EVENT_BUS.register(new WLLC_myWE_BloodPowersEventHandler());
    		MinecraftForge.EVENT_BUS.register(new WLLC_myWE_SoulPowersEventHandler());
    		MinecraftForge.EVENT_BUS.register(new WLLC_myWE_DarkPowersEventHandler());
    		
    	}
    
    	public void postInit(FMLPostInitializationEvent postEvent) {
    	
    	
    	
    	}
    	
    }

     

     

     

    And the GlobalVariables class:
     

    Spoiler

     

    
    package com.WLLC.mysticWeapons;
    
    import com.WLLC.mysticWeapons.enchantments.WLLC_myWE_AssassinBlessing;
    import com.WLLC.mysticWeapons.enchantments.WLLC_myWE_LifeSteal;
    import com.WLLC.mysticWeapons.enchantments.WLLC_myWE_SolidAir;
    
    import net.minecraft.enchantment.Enchantment;
    
    public class GlobalVariables {
    
    	public static final String MOD_ID = "wllc_mywe";
    	public static final String MOD_NAME = "[WLLC]Mystic Weapons";
    	public static final String VERSION = "V 1.0";
    	
    	public static final String WLLC_COMMON_PROXY = "com.WLLC.mysticWeapons.proxy.CommonProxy";
    	public static final String WLLC_CLIENT_PROXY = "com.WLLC.mysticWeapons.proxy.ClientProxy";
    	
    	public static final Enchantment lifeSteal = new WLLC_myWE_LifeSteal(69, 5);
    	public static final Enchantment solidAir = new WLLC_myWE_SolidAir(70, 5);
    	public static final Enchantment assassinBlessing = new WLLC_myWE_AssassinBlessing(71, 5);
    	
    	public static boolean solidAirBonus = false;
    	public static boolean assassinBlessingBonus = false;
    }

     

    There is a way to make it works also on server or should I give up?

    Thx for the help

  5. I everybody,

     

    I'm making a mod and I'm following shadowfacts' tutorial.

     

    Today I wanted to da a simple crop, so following this tutorial I made my corn crops.

     

    Everythink work except for one thing. When I righ-click on a block with my seeds the game crash.

     

    My project: https://github.com/IlTosaerba/Minecraft-1.12.2-WLLC-Mod/tree/IlTosaerba-WLLC-1.12.2]-Mod   (The "resource/assets" has been exploded 'cause GitHub don't permit the upload of +100 files and I don't understand how to create folders and so on)

     

    Crash Error: 

    Spoiler

    ---- Minecraft Crash Report ----
    // You should try our sister game, Minceraft!

    Time: 3/11/18 5:33 PM
    Description: Unexpected error

    java.lang.NullPointerException: Unexpected error
        at net.minecraft.item.ItemSeeds.getPlant(ItemSeeds.java:61)
        at net.minecraft.block.Block.canSustainPlant(Block.java:1931)
        at net.minecraft.item.ItemSeeds.onItemUse(ItemSeeds.java:34)
        at net.minecraft.item.ItemStack.onItemUse(ItemStack.java:201)
        at net.minecraft.client.multiplayer.PlayerControllerMP.processRightClickBlock(PlayerControllerMP.java:499)
        at net.minecraft.client.Minecraft.rightClickMouse(Minecraft.java:1692)
        at net.minecraft.client.Minecraft.processKeyBinds(Minecraft.java:2379)
        at net.minecraft.client.Minecraft.runTickKeyboard(Minecraft.java:2145)
        at net.minecraft.client.Minecraft.runTick(Minecraft.java:1933)
        at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1186)
        at net.minecraft.client.Minecraft.run(Minecraft.java:441)
        at net.minecraft.client.main.Main.main(Main.java:118)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
        at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
        at GradleStart.main(GradleStart.java:26)


    A detailed walkthrough of the error, its code path and all known details is as follows:
    ---------------------------------------------------------------------------------------

    -- Head --
    Thread: Client thread
    Stacktrace:
        at net.minecraft.item.ItemSeeds.getPlant(ItemSeeds.java:61)
        at net.minecraft.block.Block.canSustainPlant(Block.java:1931)
        at net.minecraft.item.ItemSeeds.onItemUse(ItemSeeds.java:34)
        at net.minecraft.item.ItemStack.onItemUse(ItemStack.java:201)
        at net.minecraft.client.multiplayer.PlayerControllerMP.processRightClickBlock(PlayerControllerMP.java:499)
        at net.minecraft.client.Minecraft.rightClickMouse(Minecraft.java:1692)
        at net.minecraft.client.Minecraft.processKeyBinds(Minecraft.java:2379)
        at net.minecraft.client.Minecraft.runTickKeyboard(Minecraft.java:2145)

    -- Affected level --
    Details:
        Level name: MpServer
        All players: 1 total; [EntityPlayerSP['Player617'/226, l='MpServer', x=289.27, y=72.00, z=262.34]]
        Chunk stats: MultiplayerChunkCache: 539, 539
        Level seed: 0
        Level generator: ID 00 - default, ver 1. Features enabled: false
        Level generator options: 
        Level spawn location: World: (286,64,260), Chunk: (at 14,4,4 in 17,16; contains blocks 272,0,256 to 287,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
        Level time: 3635 game time, 3635 day time
        Level dimension: 0
        Level storage version: 0x00000 - Unknown?
        Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
        Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
        Forced entities: 88 total; [EntitySkeleton['Skeleton'/128, l='MpServer', x=286.52, y=49.00, z=238.27], EntitySkeleton['Skeleton'/129, l='MpServer', x=284.98, y=48.00, z=233.92], EntityZombie['Zombie'/130, l='MpServer', x=275.40, y=48.00, z=233.78], EntityBat['Bat'/131, l='MpServer', x=281.49, y=50.34, z=235.50], EntityCreeper['Creeper'/132, l='MpServer', x=279.23, y=48.00, z=237.52], EntitySpider['Spider'/133, l='MpServer', x=283.97, y=49.00, z=233.99], EntityCreeper['Creeper'/134, l='MpServer', x=283.82, y=39.00, z=269.58], EntityZombie['Zombie'/135, l='MpServer', x=274.50, y=30.00, z=275.50], EntityCreeper['Creeper'/136, l='MpServer', x=280.47, y=40.00, z=277.15], EntityCreeper['Creeper'/137, l='MpServer', x=285.43, y=39.00, z=277.79], EntityBat['Bat'/138, l='MpServer', x=279.38, y=32.87, z=274.65], EntitySkeleton['Skeleton'/139, l='MpServer', x=286.50, y=21.00, z=312.50], EntitySkeleton['Skeleton'/140, l='MpServer', x=274.16, y=24.00, z=307.82], EntityZombie['Zombie'/141, l='MpServer', x=275.75, y=24.00, z=311.49], EntitySkeleton['Skeleton'/142, l='MpServer', x=275.90, y=25.00, z=312.50], EntitySkeleton['Skeleton'/143, l='MpServer', x=274.50, y=25.00, z=316.50], EntityCreeper['Creeper'/144, l='MpServer', x=289.20, y=24.00, z=309.57], EntitySquid['Squid'/145, l='MpServer', x=276.21, y=57.89, z=321.77], EntityZombie['Zombie'/146, l='MpServer', x=280.50, y=15.00, z=334.50], EntitySkeleton['Skeleton'/147, l='MpServer', x=275.73, y=20.00, z=324.46], EntitySlime['Slime'/148, l='MpServer', x=278.78, y=17.55, z=326.85], EntityWitch['Witch'/149, l='MpServer', x=284.29, y=23.00, z=326.50], EntityZombie['Zombie'/150, l='MpServer', x=285.48, y=22.00, z=322.77], EntityItem['item.tile.mushroom'/155, l='MpServer', x=288.78, y=25.00, z=265.13], EntityEnderman['Enderman'/156, l='MpServer', x=300.76, y=29.00, z=263.50], EntitySkeleton['Skeleton'/157, l='MpServer', x=297.33, y=27.00, z=264.48], EntityCreeper['Creeper'/158, l='MpServer', x=288.83, y=39.00, z=271.51], EntityZombie['Zombie'/159, l='MpServer', x=296.21, y=42.00, z=284.58], EntityCreeper['Creeper'/160, l='MpServer', x=290.50, y=42.00, z=279.50], EntitySpider['Spider'/161, l='MpServer', x=303.30, y=32.00, z=278.00], EntityItem['item.tile.flower1.dandelion'/162, l='MpServer', x=293.93, y=61.00, z=312.42], EntityItem['item.tile.flower1.dandelion'/163, l='MpServer', x=294.65, y=63.00, z=308.25], EntitySquid['Squid'/164, l='MpServer', x=296.34, y=61.01, z=315.57], EntityItem['item.item.seeds'/165, l='MpServer', x=292.58, y=64.00, z=309.29], EntityItem['item.tile.flower1.dandelion'/166, l='MpServer', x=290.61, y=64.00, z=308.55], EntityItem['item.tile.flower1.dandelion'/167, l='MpServer', x=290.37, y=64.00, z=310.61], EntityPig['Pig'/174, l='MpServer', x=315.44, y=73.00, z=281.26], EntityPig['Pig'/175, l='MpServer', x=323.25, y=74.00, z=279.49], EntityPig['Pig'/176, l='MpServer', x=311.25, y=72.00, z=281.27], EntityPig['Pig'/177, l='MpServer', x=317.21, y=70.00, z=294.67], EntityBat['Bat'/178, l='MpServer', x=311.58, y=18.14, z=314.43], EntityZombie['Zombie'/179, l='MpServer', x=316.50, y=39.00, z=304.82], EntityZombie['Zombie'/180, l='MpServer', x=316.50, y=14.00, z=320.50], EntityPig['Pig'/54, l='MpServer', x=219.81, y=69.00, z=237.79], EntityPig['Pig'/55, l='MpServer', x=223.66, y=69.00, z=242.20], EntityBat['Bat'/56, l='MpServer', x=223.95, y=32.05, z=277.57], EntityWitch['Witch'/57, l='MpServer', x=222.50, y=39.00, z=277.50], EntityCreeper['Creeper'/58, l='MpServer', x=219.84, y=33.00, z=285.45], EntityItem['item.tile.flower2.poppy'/186, l='MpServer', x=331.06, y=64.00, z=228.99], EntityZombie['Zombie'/59, l='MpServer', x=222.50, y=32.00, z=284.19], EntitySkeleton['Skeleton'/187, l='MpServer', x=320.50, y=22.00, z=292.50], EntityCreeper['Creeper'/60, l='MpServer', x=218.50, y=19.00, z=296.50], EntitySkeleton['Skeleton'/188, l='MpServer', x=335.25, y=52.00, z=297.47], EntityZombie['Zombie'/189, l='MpServer', x=333.50, y=52.00, z=293.71], EntityZombie['Zombie'/62, l='MpServer', x=215.50, y=34.00, z=288.50], EntitySkeleton['Skeleton'/195, l='MpServer', x=340.29, y=15.00, z=198.49], EntityPig['Pig'/68, l='MpServer', x=234.12, y=70.00, z=245.50], EntityItem['item.item.seeds'/196, l='MpServer', x=343.34, y=64.00, z=290.22], EntityPig['Pig'/69, l='MpServer', x=225.60, y=69.00, z=246.78], EntityCreeper['Creeper'/70, l='MpServer', x=227.50, y=39.00, z=275.50], EntityCreeper['Creeper'/71, l='MpServer', x=225.18, y=39.00, z=276.58], EntityZombie['Zombie'/72, l='MpServer', x=226.50, y=22.00, z=299.50], EntityCreeper['Creeper'/73, l='MpServer', x=237.21, y=25.00, z=303.50], EntityBat['Bat'/346, l='MpServer', x=341.75, y=29.99, z=333.59], EntityItem['item.tile.mushroom'/95, l='MpServer', x=252.88, y=11.00, z=200.20], EntityCreeper['Creeper'/97, l='MpServer', x=246.50, y=12.00, z=325.50], EntityPlayerSP['Player617'/226, l='MpServer', x=289.27, y=72.00, z=262.34], EntityPig['Pig'/104, l='MpServer', x=261.62, y=69.00, z=197.76], EntityPig['Pig'/105, l='MpServer', x=269.29, y=68.00, z=202.65], EntityPig['Pig'/106, l='MpServer', x=256.76, y=69.00, z=204.77], EntitySkeleton['Skeleton'/107, l='MpServer', x=267.76, y=48.00, z=237.24], EntitySkeleton['Skeleton'/108, l='MpServer', x=257.34, y=32.00, z=252.08], EntityCreeper['Creeper'/109, l='MpServer', x=258.30, y=32.00, z=249.36], EntitySkeleton['Skeleton'/110, l='MpServer', x=256.51, y=33.00, z=253.25], EntityBat['Bat'/111, l='MpServer', x=269.57, y=53.10, z=241.06], EntityCreeper['Creeper'/112, l='MpServer', x=261.50, y=39.00, z=271.50], EntitySkeleton['Skeleton'/113, l='MpServer', x=260.45, y=39.00, z=276.23], EntityCreeper['Creeper'/114, l='MpServer', x=261.42, y=24.00, z=301.79], EntityZombie['Zombie'/115, l='MpServer', x=270.18, y=24.00, z=311.25], EntityZombie['Zombie'/116, l='MpServer', x=265.83, y=26.00, z=309.36], EntityZombie['Zombie'/117, l='MpServer', x=275.07, y=25.00, z=312.50], EntityZombie['Zombie'/118, l='MpServer', x=270.27, y=24.00, z=313.50], EntitySkeleton['Skeleton'/119, l='MpServer', x=256.49, y=28.00, z=308.32], EntityZombie['Zombie'/120, l='MpServer', x=257.50, y=28.00, z=312.50], EntityCreeper['Creeper'/124, l='MpServer', x=281.50, y=57.00, z=200.50], EntityPig['Pig'/125, l='MpServer', x=272.23, y=68.00, z=197.70], EntityZombie['Zombie'/126, l='MpServer', x=278.91, y=49.00, z=238.26], EntitySkeleton['Skeleton'/127, l='MpServer', x=282.50, y=48.00, z=235.50]]
        Retry entities: 0 total; []
        Server brand: fml,forge
        Server type: Integrated singleplayer server
    Stacktrace:
        at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:461)
        at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2896)
        at net.minecraft.client.Minecraft.run(Minecraft.java:470)
        at net.minecraft.client.main.Main.main(Main.java:118)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
        at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
        at GradleStart.main(GradleStart.java:26)

    -- System Details --
    Details:
        Minecraft Version: 1.12.2
        Operating System: Windows 10 (amd64) version 10.0
        Java Version: 1.8.0_162, Oracle Corporation
        Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
        Memory: 523714776 bytes (499 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB)
        JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
        IntCache: cache: 4, tcache: 0, allocated: 13, tallocated: 95
        FML: MCP 9.42 Powered by Forge 14.23.2.2624 5 mods loaded, 5 mods active
        States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored

        | State     | ID        | Version      | Source                           | Signature |
        |:--------- |:--------- |:------------ |:-------------------------------- |:--------- |
        | UCHIJAAAA | minecraft | 1.12.2       | minecraft.jar                    | None      |
        | UCHIJAAAA | mcp       | 9.42         | minecraft.jar                    | None      |
        | UCHIJAAAA | FML       | 8.0.99.99    | forgeSrc-1.12.2-14.23.2.2624.jar | None      |
        | UCHIJAAAA | forge     | 14.23.2.2624 | forgeSrc-1.12.2-14.23.2.2624.jar | None      |
        | UCHIJAAAA | wllc      | 1.0          | bin                              | None      |

        Loaded coremods (and transformers): 
        GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 391.01' Renderer: 'GeForce GTX 1060 6GB/PCIe/SSE2'
        Launched Version: 1.12.2
        LWJGL: 2.9.4
        OpenGL: GeForce GTX 1060 6GB/PCIe/SSE2 GL version 4.6.0 NVIDIA 391.01, NVIDIA Corporation
        GL Caps: Using GL 1.3 multitexturing.
    Using GL 1.3 texture combiners.
    Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
    Shaders are available because OpenGL 2.1 is supported.
    VBOs are available because OpenGL 1.5 is supported.

        Using VBOs: Yes
        Is Modded: Definitely; Client brand changed to 'fml,forge'
        Type: Client (map_client.txt)
        Resource Packs: 
        Current Language: English (US)
        Profiler Position: N/A (disabled)
        CPU: 8x AMD FX(tm)-9590 Eight-Core Processor 

     

  6. 7 hours ago, Choonster said:

    Your model extends from builtin/entity, which means Minecraft expects it to be rendered by a TileEntitySpecialRenderer. Since you don't have one, nothing renders.

     

    Ideally you should use a regular baked model for the shield rather than a TESR.

    So I need to create a costum model, right?

  7. 5 hours ago, diesieben07 said:

    What for? What are you trying to achieve?

     I think he's trying to give Items a rarity and than base the drop of this Items on the rarity of the item itself.

     

    Like, think that we put a LivingDropEvent on Zombie and say it can drop "Rusty sword [common]", "Elite sword [Rare]", "Creator's sword [Legendary]". You will have only one sword dropped by every single Zombie, the rusty will be the more common up to the rarest "Creator's sword".

  8. 4 hours ago, diesieben07 said:

    1.12.2.

     

    Call Block::getDrops (the deprecated one, for backwards compatibility) to obtain the drops.

    I'm installing the 1.12.2 forge version. I first install the 1.12.2 vannila but when I try to lunch the forge version it gave me an error:

     

    Seems like you are using a not supported modded game version

    The game crashed whilst initializing game

    Quote

    The game crashed whilst initializing game
    Error: java.lang.NoClassDefFoundError: net/minecraft/util/Vec3

     

    No error's report

     

     

    How can I fix it?

     

     

    Fix it, I forgot to remove 1.8.9's mods lol

  9. 13 hours ago, diesieben07 said:

    First of all stop using 1.8.9.

     

    This is not as easy as you might think. Do you want the block to turn into it's drops? Or do you want to get the "pick block" (middle click) result?

    What version should I use? Keep in mind that I'm doing this mod for a forge server. So I need a version that has lot of cool mods and that doesen't weight too much on the CPU and GPU.

     

     

    What I want to do is that:

     

    When u break a block it gives u the itemBlock right? It's drop.

     

    I want this appening when I right click with my item without breaking the block. So when I right click on a random block with my Item it spawn its drop without being break.

  10. Hello modders

     

    For my mod I have a block which can power.

     

    I need that the block power only when i click on it with a particular item...

     

    For example

    Block : Card reader

    Item : Personal card

     

    When I click with the personal card on the card reader, after a while the card reader power the Office Printer .

    If i click on the card reader with any other Item it will do nothing

  11. 18 hours ago, Socratic_Phoenix said:

    @IlTosaerba You're not supposed to copy the code... your supposed to look at the code and ask questions if you need help, I'm just providing another example. The Keys class just stores some constants, and the Tome class isn't at all connected to the crafting table... Use the example to write your own classes.

    And the CraftingBlocks class what exatly contain?

  12. 2 hours ago, Socratic_Phoenix said:

    Go figure! I've done this exact thing!

     

    See here and here for the relevant files. Basically, what you have to do is:

    1. Create the block (if you want to store the items in the block after a player has quit, you will need a TileEntity - normal crafting table & my crafting table do not do this)
    2. Create the container & gui
    3. Register the slots in the container & the textures in the gui
    4. Setup a GUI handler
    5. Add an right-click action to the block so that it opens the gui
    6. Create a custom recipe class or use minecraft's IRecipe (I created my own so it could access the player doing the crafting - this is probably not necessary, but it depends on what you're doing)
    7. If you made your own class, create some kind of registry to hold the recipes you want to have, otherwise just use CraftingManager
    8. Add checks in the crafting slot / container to see if the recipe is matched, and if it is, get the result and clear the table
    9. Voila! Tables!

    If you have any specific questions, I'd be willing to help when I've got time.

     

     

     

    Thanks but I can't apply your method 'cause u use a lot of class which I haven't. So if I try to copy ur code it will never work 'cause I haven't all class (for example Tome class and Keys class and others)

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.