diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..3bc9eb8e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+/target/
+.classpath
+.settings/**
+.project
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 00000000..1e48be34
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1 @@
+sign the Contributor License Agreement
diff --git a/Config Scripts/ConfigObjects.py b/Config Scripts/ConfigObjects.py
deleted file mode 100644
index 21d03790..00000000
--- a/Config Scripts/ConfigObjects.py
+++ /dev/null
@@ -1,184 +0,0 @@
-test=1
-defaults={}
-defaults['name']='Default Name'
-defaults['time']=2
-defaults['durability']=0
-defaults['amount']=1
-defaults['probability']=1.0
-defaults['useOnce']=False
-defaults['displayName']=None
-defaults['lore']=None
-defaults['fuelTime']=2
-defaults['level']=1
-defaults['repairMultiple']=0
-
-import pydot
-
-class CraftedRecipe:
- def __init__(self,identifier,inputs=None,shape=None,output=None):
- self.identifier=identifier
- self.inputs=inputs if inputs!=None else {}
- self.shape=shape if shape!=None else []
- self.output=output if output!=None else []
- def cOutput(self):
- out='\n '+self.identifier+':'
- out+='\n inputs:'
- if len(self.shape)==0:
- for input in self.inputs.values():
- out+=input.cOutput('\n ')
- else:
- for key,input in self.inputs.items():
- out+='\n '+key+':'
- out+=input.cOutput('\n ')
- out+='\n shape:'
- for string in self.shape:
- out+='\n - '+string
- out+='\n output:'
- out+=self.output.cOutput('\n ')
- return out
-
-class Recipe:
- def __init__(self,identifier,name=defaults['name'],time=defaults['time'],inputs=None,upgrades=None,outputs=None,enchantments=None,useOnce=defaults['useOnce'],outputRecipes=None):
- self.identifier=identifier
- self.name=name
- self.time=int(time)
- self.inputs=inputs if inputs!=None else []
- self.upgrades=upgrades if upgrades!=None else []
- self.outputs=outputs if outputs!=None else []
- self.enchantments=enchantments if enchantments!=None else []
- self.outputRecipes=outputRecipes if outputRecipes!=None else []
- self.useOnce=useOnce
- from math import ceil
- self.checkEnchantments()
- def checkEnchantments(self):
- removeEnchantments=[]
- for enchantment in self.enchantments:
- valid=False
- for output in self.outputs:
- for target in enchantment.targets:
- if target in output.name:
- valid=True
- if not valid:
- removeEnchantments.append(enchantment)
- for enchantment in removeEnchantments:
- self.enchantments.remove(enchantment)
- def addEnchant(self,enchant):
- self.enchantments.append(enchant)
- def addOutputRecipe(self,recipe):
- self.outputRecipes.append(recipe)
- def cOutput(self):
- out='\n '+self.identifier+':'
- if self.name!=defaults['name']: out+='\n name: '+self.name
- if self.time!=defaults['time']: out+='\n production_time: '+str(self.time)
- if len(self.inputs)>0:
- out+='\n inputs:'
- for input in self.inputs:out+=input.cOutput('\n ')
- if len(self.upgrades)>0:
- out+='\n upgrades:'
- for upgrade in self.upgrades:out+=upgrade.cOutput('\n ')
- if len(self.outputs)>0:
- out+='\n outputs:'
- for output in self.outputs:out+=output.cOutput('\n ')
- if len(self.enchantments)>0:
- out+='\n enchantments:'
- for enchantment in self.enchantments:
- if enchantment.probability!=0:
- out+=enchantment.cOutput('\n ')
- if len(self.outputRecipes)>0:
- out+='\n output_recipes:'
- for outputRecipe in self.outputRecipes:
- out+='\n - '+outputRecipe.identifier
- if self.useOnce!=defaults['useOnce']:out+='\n use_once: '+str(self.useOnce).lower()
- return out
-
-class Enchantment:
- enchantments={}
- def __init__(self,name=None,type=None,level=defaults['level'],probability=defaults['probability'],targets=[]):
- self.name=name
- self.type=Enchantment.enchantments[name][0]
- self.level=level
- self.probability=probability
- self.targets=Enchantment.enchantments[name][1]
- @staticmethod
- def importEnchantments(filename='enchantments.csv'):
- import csv
- myfile=open(filename)
- csvReader=csv.reader(myfile)
- for line in csvReader:
- Enchantment.enchantments[line[0]]=(line[1],filter(None,line[2:]))
- def cOutput(self,spacer):
- out=spacer+self.name+' '+str(self.level)+':'
- spacer=spacer+' '
- out+=spacer+'type: '+self.type
- out+=spacer+'level: '+str(self.level)
- if self.probability!=defaults['probability']: out+=spacer+'probability: '+str(self.probability)
- return out
-
-class ItemStack:
- materials={}
-
- def __init__(self,name,material=None,amount=defaults['amount'],durability=None,displayName=defaults['displayName'],lore=defaults['lore']):
- self.name=name
- self.material=material if material!=None else ItemStack.materials[name][1]
- self.durability=durability if durability!=None else ItemStack.materials[name][3]
- import math
- self.amount=int(math.ceil(amount))
- self.displayName=displayName
- self.lore=lore
- @staticmethod
- def importMaterials(filename='materials.csv'):
- import csv
- myfile=open(filename)
- csvReader=csv.reader(myfile)
- for line in csvReader:
- commonName,material,id,durability=line
- ItemStack.materials[commonName]=(commonName,material,int(id),int(durability))
-
- def modifyAmount(self,modifier):
- import copy,math
- copy=copy.copy(self)
- copy.amount=int(math.ceil(copy.amount*modifier))
- return copy
- def cOutput(self,spacer):
- out=spacer+self.name+':'
- spacer=spacer+' '
- out+=spacer+'material: '+self.material
- if self.amount!=defaults['amount']:out+=spacer+'amount: '+str(self.amount)
- if self.durability!=defaults['durability']:out+=spacer+'durability: '+str(self.durability)
- if self.displayName!=defaults['displayName']:out+=spacer+'display_name: '+self.displayName
- if self.lore!=defaults['lore']:out+=spacer+'lore: '+self.lore
- return out
- def equals(self,otherItemStack):
- return self.material==otherItemStack.material and self.durability==otherItemStack.durability and self.amount==otherItemStack.amount and self.displayName==otherItemStack.displayName and self.lore==otherItemStack.lore
-ItemStack.importMaterials()
-
-defaults['fuel']=ItemStack(name='Charcoal')
-defaults['repairInputs']=[ItemStack(name='Charcoal',amount=0)]
-class Factory:
- def __init__(self,identifier,name=defaults['name'],fuel=defaults['fuel'],fuelTime=defaults['fuelTime'],inputs=None,outputRecipes=None,repairMultiple=defaults['repairMultiple'],repairInputs=None):
- self.name=name
- self.identifier=identifier
- self.fuel=fuel
- self.fuelTime=int(fuelTime)
- self.inputs=inputs if inputs!=None else []
- self.outputRecipes=outputRecipes if outputRecipes!=None else []
- self.repairMultiple=repairMultiple
- self.repairInputs=repairInputs if repairInputs!=None else defaults['repairInputs']
- def addRecipe(self,outputRecipe):
- self.outputRecipes.append(outputRecipe)
- def cOutput(self):
- out='\n '+self.identifier+':'
- out+='\n name: '+self.name
- out+='\n fuel:'+self.fuel.cOutput('\n ')
- if self.fuelTime!=defaults['fuelTime']:out+='\n fuel_time: '+str(self.fuelTime)
- out+='\n inputs:'
- for input in self.inputs:out+=input.cOutput('\n ')
- if len(self.outputRecipes)>0:
- out+='\n recipes:'
- for outputRecipe in self.outputRecipes:
- out+='\n - '+outputRecipe.identifier
- if self.repairMultiple!=defaults['repairMultiple']:out+='\n repair_multiple: '+str(self.repairMultiple)
- if len(self.repairInputs)>0:
- out+='\n repair_inputs:'
- for repairInput in self.repairInputs:out+=repairInput.cOutput('\n ')
- return out
\ No newline at end of file
diff --git a/Config Scripts/GenerateConfig.py b/Config Scripts/GenerateConfig.py
deleted file mode 100644
index dce33acd..00000000
--- a/Config Scripts/GenerateConfig.py
+++ /dev/null
@@ -1,251 +0,0 @@
-from ConfigObjects import Recipe, Enchantment, ItemStack, Factory, CraftedRecipe
-from ParseConfig import ParseConfig
-
-coeffs={}
-gMod=1
-mMod=0.1
-
-def main():
- print 'Running....'
- ItemStack.importMaterials()
- Enchantment.importEnchantments()
- createConfigFile()
-
-def createConfigFile():
- config={}
- config['factories'],config['recipes']=createFactorieAndRecipes()
- config['disabled_recipes']=[]
- config['enabled_recipes']=createCraftingRecipes()
- checkConflicts(config['factories'])
- print 'Fixing Conflicts...'
- fixConflicts(config['factories'])
- checkConflicts(config['factories'])
- ParseConfig.saveConfig(config)
- ParseConfig.prettyList(config)
-
-def createFactorieAndRecipes():
- inputs={}
- outputs={}
- enchantments={}
- recipes={}
- factories={}
-
- #Smelting
- #Stone
- id='Smelt_Stone'
- inputs[id]=[ItemStack(name='Cobblestone',amount=640)]
- outputs[id]=[ItemStack(name='Stone',amount=640*1.333)]
- recipes[id]=Recipe(identifier=id,name='Smelt Stone',inputs=inputs[id],outputs=outputs[id],time=80)
- id='Stone_Smelter'
- inputs[id]=[ItemStack(name='Stone',amount=2048*gMod)]
- factories[id]=Factory(identifier=id,name='Stone Smelter',inputs=inputs[id],outputRecipes=[recipes['Smelt_Stone']])
- #Charcoal
- woods=['Oak Wood','Spruce Wood','Birch Wood','Jungle Wood']
- id='Charcoal_Smelter'
- inputs[id]=[ItemStack(name='Charcoal',amount=600*gMod)]
- factories[id]=Factory(identifier=id,name='Charcoal Burner',inputs=inputs[id])
- for wood in woods:
- id='Smelt_'+wood.replace(' ','_')
- inputs[id]=[ItemStack(name=wood,amount=256)]
- outputs[id]=[ItemStack(name='Charcoal',amount=256*2)]
- recipes[id]=Recipe(identifier=id,name='Burn '+wood,inputs=inputs[id],outputs=outputs[id],time=256/8*3/4)
- factories['Charcoal_Smelter'].addRecipe(recipes[id])
- id='Smelt_Coal'
- inputs[id]=[ItemStack(name='Coal',amount=256)]
- outputs[id]=[ItemStack(name='Charcoal',amount=256*2)]
- recipes[id]=Recipe(identifier=id,name='Burn Coal',inputs=inputs[id],outputs=outputs[id],time=256/8*3/4)
- factories['Charcoal_Smelter'].addRecipe(recipes[id])
- #Glass
- id='Smelt_Glass'
- inputs[id]=[ItemStack(name='Sand',amount=256)]
- outputs[id]=[ItemStack(name='Glass',amount=256*3)]
- recipes[id]=Recipe(identifier=id,name='Smelt Glass',inputs=inputs[id],outputs=outputs[id],time=48)
- id='Glass_Smelter'
- inputs[id]=[ItemStack(name='Sand',amount=2048*gMod),ItemStack(name='Charcoal',amount=256*gMod)]
- factories[id]=Factory(identifier=id,name='Glass Smelter',inputs=inputs[id],outputRecipes=[recipes['Smelt_Glass']])
- #Stone Brick Smelter
- bricks={'Cracked':'Flint','Mossy':'Vine','Chiseled':'Gravel'}
- id='Stone_Brick_Smelter'
- inputs[id]=[ItemStack(name='Stone Brick',amount=512*gMod),ItemStack(name='Lapis Lazuli',amount=256*gMod)]
- factories[id]=Factory(identifier=id,name='Fancy Stone Brick Smelter',inputs=inputs[id])
- factoryid=id
- for brick in bricks:
- id='Smelt_'+brick+'_Stone_Brick'
- inputs[id]=[ItemStack(name='Stone Brick',amount=64),ItemStack(name='Lapis Lazuli',amount=32),ItemStack(bricks[brick],amount=64)]
- outputs[id]=[ItemStack(brick+' Stone Brick',amount=64)]
- recipes[id]=Recipe(identifier=id,name='Smelt '+brick+' Stone Brick',inputs=inputs[id],outputs=outputs[id],time=64)
- factories[factoryid].addRecipe(recipes[id])
- #Smelter
- ores={'Coal Ore':('Coal',512,3,128),'Iron Ore':('Iron Ingot',384,1.75,128),'Gold Ore':('Gold Ingot',192,7,32),'Diamond Ore':('Diamond',96,3,16)}
- inputs['Smelter']=[ItemStack(name=values[0],amount=values[1]) for ore,values in ores.items()]
- factories['Smelter']=Factory(identifier='Smelter',name='Ore Smelter',inputs=inputs['Smelter'])
- for ore,values in ores.items():
- id='Smelt_'+ore.replace(' ','_')
- inputs[id]=[ItemStack(name=ore,amount=values[3])]
- outputs[id]=[ItemStack(name=values[0],amount=values[3]*values[2])]
- recipes[id]=Recipe(identifier=id,name='Smelt '+ore,inputs=inputs[id],outputs=outputs[id],time=values[3]/8*3/4)
- factories['Smelter'].addRecipe(recipes[id])
-
- #Equipment
- enchantmentData=[]
- enchantmentData.extend([('Unbreaking',[(3,1)]),('Silk Touch',[(1,0.1)]),('Efficiency',[(1,.3),(2,.2),(3,0.1),(4,0.05),(5,0.01)])])
- enchantmentData.extend([('Bane of the Anthropods',[(1,.4),(2,.3),(3,.2),(4,.1),(5,0.3)]),('Smite',[(1,.4),(2,.3),(3,.2),(4,.1),(5,0.05)]),('Looting',[(1,0.5),(2,0.4),(3,0.3)])])
- enchantmentData.extend([('Respiration',[(1,0.5),(2,0.4),(3,0.3),(4,0.4)]),('Blast Protection',[(1,0.5),(2,0.4),(3,0.3),(4,0.4)]),('Feather Falling',[(1,0.5),(2,0.4),(3,0.3),(4,0.4)]),('Fire Protection',[(1,0.5),(2,0.4),(3,0.3),(4,0.4)]),('Projectile Protection',[(1,0.5),(2,0.4),(3,0.3),(4,0.4)])])
- enchantmentsInputs=sum([[Enchantment(name=name,level=level,probability=prob) for level,prob in pairs] for name,pairs in enchantmentData],[])
-
- inputDict={'Iron':'Iron Ingot','Gold':'Gold Ingot','Diamond':'Diamond'}
- coeffs['i']={'Helmet':5,'Chestplate':8,'Leggings':7,'Boots':4,'Sword':2,'Axe':3,'Pickaxe':3,'Spade':1,'Hoe':2}# Modifier for different branches of the tree, based on vanilla costs
- coeffs['b']={'Helmet':1,'Chestplate':1,'Leggings':1,'Boots':1,'Sword':1,'Axe':1,'Pickaxe':1,'Spade':1,'Hoe':1}
- for key,value in coeffs['b'].items():coeffs['b'][key]=value*5
- coeffs['e']={'Helmet':3,'Chestplate':3,'Leggings':3,'Boots':3,'Sword':3,'Axe':6,'Pickaxe':3,'Spade':3,'Hoe':6}
- buildCosts={'Helmet':192,'Chestplate':320,'Leggings':256,'Boots':160,'Sword':80,'Axe':64,'Pickaxe':96,'Spade':48,'Hoe':32}
- for tech in inputDict.keys():
- for equipment in coeffs['i'].keys():
- enchantments[tech+'_'+equipment]=[]
- if tech=='Gold':
- enchantments[tech+'_'+equipment]=list(enchantmentsInputs)
- inputs[tech+'_'+equipment]=[ItemStack(name=inputDict[tech],amount=coeffs['i'][equipment]*coeffs['b'][equipment])]
- outputs[tech+'_'+equipment]=[ItemStack(name=tech+' '+equipment,amount=coeffs['b'][equipment]*coeffs['e'][equipment])]
- recipes[tech+'_'+equipment]=Recipe(identifier=tech+'_'+equipment,name='Forge '+tech+' '+equipment+'.',inputs=inputs[tech+'_'+equipment],outputs=outputs[tech+'_'+equipment],enchantments=enchantments[tech+'_'+equipment],time=inputs[tech+'_'+equipment][0].amount)
- inputs[tech+'_'+equipment+'_Smithy']=[ItemStack(name=inputDict[tech],amount=buildCosts[equipment])]
- factories[tech+'_'+equipment+'_Smithy']=Factory(identifier=tech+'_'+equipment+'_Smithy',name=tech+' '+equipment+' Smithy',inputs=inputs[tech+'_'+equipment+'_Smithy'],outputRecipes=[recipes[tech+'_'+equipment]])
-
- #Food output:([inputs],build cost,efficieny,bulk)
- #Butchers
- oi={('Cooked Chicken',1):([('Raw Chicken',1)],192,2,64),('Grilled Pork',1):([('Pork',1)],160,2,64),('Cooked Beef',1):([('Raw Beef',1)],64,2,64),('Cooked Fish',1):([('Raw Fish',1)],16,2,64)}
- id='Grill'
- inputs[id]=[ItemStack(name=key[0],amount=value[1]) for key,value in oi.items()]
- factories[id]=Factory(identifier=id,name='Bakery',inputs=inputs[id])
- for key,value in oi.items():
- id=key[0].replace(' ','_')
- inputs[id]=[ItemStack(name=name,amount=amount*value[3]) for name,amount in value[0]]
- outputs[id]=[ItemStack(name=key[0],amount=key[1]*value[2]*value[3])]
- recipes[id]=Recipe(identifier=id,name='Grill '+name,inputs=inputs[id],outputs=outputs[id],time=inputs[id][0].amount/8*3/4)
- factories['Grill'].addRecipe(recipes[id])
- #Bakery
- oi={('Bread',1):([('Wheat',3)],256,2,128),('Baked Potato',1):([('Potato',1)],512,2,192),('Cookie',8):([('Wheat',2),('Cocoa',1)],1024,2,128)}
- id='Bakery'
- inputs[id]=[ItemStack(name=key[0],amount=value[1]) for key,value in oi.items()]
- factories[id]=Factory(identifier=id,name='Bakery',inputs=inputs[id])
- for key,value in oi.items():
- id=key[0].replace(' ','_')
- inputs[id]=[ItemStack(name=name,amount=amount*value[3]) for name,amount in value[0]]
- outputs[id]=[ItemStack(name=key[0],amount=key[1]*value[2]*value[3])]
- recipes[id]=Recipe(identifier=id,name='Bake '+name,inputs=inputs[id],outputs=outputs[id],time=256/8*3/4)
- factories['Bakery'].addRecipe(recipes[id])
- #Items
- ##Wool
- inputColors=['White', 'Light Gray', 'Gray', 'Black', 'Brown', 'Pink']
- dyes={'White':'Bone Meal','Light Gray':'Light Gray Dye','Gray':'Gray Dye','Black':'Ink Sack','Red':'Rose Red','Orange':'Orange Dye','Yellow':'Dandelion Yellow','Lime':'Lime Dye','Green':'Cactus Green','Cyan':'Cyan Dye','Light Blue':'Light Blue Dye','Blue':'Lapis Lazuli','Purple':'Purple Dye','Magenta':'Magenta Dye','Pink':'Pink Dye','Brown':'Cocoa'}
- for inputColor in inputColors:
- factoryId=inputColor.replace(' ','_')+'_Wool_Processing'
- inputs[factoryId]=[ItemStack(name=dye,amount=20*gMod) for dye in dyes.values()]+[ItemStack(name=inputColor+' Wool',amount=20)]
- factories[factoryId]=Factory(identifier=factoryId,name=inputColor+' Wool Processing',inputs=inputs[factoryId])
- for outputColor,dye in dyes.items():
- if inputColor!=outputColor:
- id='Dye_'+inputColor.replace(' ','_')+'_Wool_'+outputColor.replace(' ','_')
- inputs[id]=[ItemStack(name=inputColor+' Wool',amount=64),ItemStack(name=dyes[outputColor],amount=4)]
- outputs[id]=[ItemStack(name=outputColor+' Wool',amount=64)]
- recipes[id]=Recipe(identifier=id,name='Dye '+inputColor+' Wool '+outputColor,inputs=inputs[id],outputs=outputs[id])
- factories[factoryId].addRecipe(recipes[id])
- ##Rail
- factoryid='Rail_Factory'
- inputs[factoryid]=[ItemStack(name='Iron Ingot',amount=256),ItemStack(name='Stick',amount=96),ItemStack(name='Gold Ingot',amount=192),ItemStack(name='Redstone',amount=32)]
- factories[factoryid]=Factory(identifier=factoryid,name='Rail Factory',inputs=inputs[factoryid])
- id='Produce_Rail'
- inputs[id]=[ItemStack(name='Iron Ingot',amount=128),ItemStack(name='Stick',amount=32)]
- outputs[id]=[ItemStack(name='Rail',amount=528)]
- recipes[id]=Recipe(identifier=id,name='Produce Rails',inputs=inputs[id],outputs=outputs[id])
- factories[factoryid].addRecipe(recipes[id])
- id='Produce_Powered_Rail'
- inputs[id]=[ItemStack(name='Gold Ingot',amount=64),ItemStack(name='Redstone',amount=10),ItemStack(name='Stick',amount=10)]
- outputs[id]=[ItemStack(name='Powered Rail',amount=102)]
- recipes[id]=Recipe(identifier=id,name='Produce Powered Rails',inputs=inputs[id],outputs=outputs[id])
- factories[factoryid].addRecipe(recipes[id])
-
- #Enchanting
- inputs['Wood_Cauldron']=[ItemStack(name='Stick',amount=1024*gMod)]
- inputs['Iron_Cauldron']=[ItemStack(name='Iron Ingot',amount=200*gMod)]
- inputs['Diamond_Cauldron']=[ItemStack(name='Diamond',amount=50*gMod)]
- factories['Wood_Cauldron']=Factory(identifier='Wood_Cauldron',name='Wood Cauldron',inputs=inputs['Wood_Cauldron'])
- factories['Iron_Cauldron']=Factory(identifier='Iron_Cauldron',name='Iron Cauldron',inputs=inputs['Iron_Cauldron'])
- factories['Diamond_Cauldron']=Factory(identifier='Diamond_Cauldron',name='Diamond Cauldron',inputs=inputs['Diamond_Cauldron'])
- ##cauldronInputs[Cauldron Type].append(([(Input Name 1,Input amount 1),(Input Name 2,Input amount 2),...],Number of XP bottles output))
- cauldronInputs={}
- cauldronInputs['Wood']=[]
- cauldronInputs['Wood'].append(([('Glass Bottle',24),('Wheat',1280)],24))
- cauldronInputs['Wood'].append(([('Glass Bottle',10),('Nether Wart',1280)],10))
- cauldronInputs['Wood'].append(([('Glass Bottle',10),('Baked Potato',1280)],10))
- cauldronInputs['Wood'].append(([('Glass Bottle',8),('Cookie',1280)],8))
- cauldronInputs['Wood'].append(([('Glass Bottle',14),('Carrot',1280)],14))
- #cauldronInputs['Wood'].append(([('Glass Bottle',64),('Melon',1280)],64))
- cauldronInputs['Iron']=[]
- cauldronInputs['Iron'].append(([('Glass Bottle',24),('Carrot',256),('Cactus',256),('Bread',256)],24))
- cauldronInputs['Iron'].append(([('Glass Bottle',14),('Carrot',256),('Nether Wart',256),('Baked Potato',256)],14))
- cauldronInputs['Iron'].append(([('Glass Bottle',42),('Carrot',128),('Cocoa',64),('Pumpkin',64),('Cactus',64),('Bread',64),('Cooked Beef',32)],42))
- cauldronInputs['Iron'].append(([('Glass Bottle',42),('Nether Wart',256),('Melon Block',64),('Sugar Cane',64),('Cookie',512),('Baked Potato',64),('Grilled Pork',64)],42))
- cauldronInputs['Diamond']=[]
- cauldronInputs['Diamond'].append(([('Glass Bottle',128),('Carrot',96),('Melon Block',32),('Cactus',256),('Red Rose',8),('Rotten Flesh',128),('Red Mushroom',32),('Vine',32),('Bread',128),('Grilled Pork',32)],128))
- cauldronInputs['Diamond'].append(([('Glass Bottle',128),('Nether Wart',64),('Melon Block',32),('Sugar Cane',128),('Yellow Flower',16),('Rotten Flesh',128),('Brown Mushroom',64),('Vine',32),('Baked Potato',256),('Cooked Chicken',16)],128))
- cauldronInputs['Diamond'].append(([('Glass Bottle',128),('Wheat',128),('Cocoa',16),('Pumpkin',128),('Cactus',256),('Red Rose',8),('Spider Eye',32),('Red Mushroom',16),('Grass',32),('Cooked Fish',16)],128))
- cauldronInputs['Diamond'].append(([('Glass Bottle',128),('Nether Wart',64),('Pumpkin',128),('Sugar Cane',128),('Yellow Flower',16),('Spider Eye',32),('Brown Mushroom',64),('Grass',64),('Cookie',256),('Cooked Beef',32)],128))
- for cauldron in cauldronInputs.keys():
- i=0
- for recipeInput,bottles in cauldronInputs[cauldron]:
- id=cauldron+'_XP_Bottle_'+str(i)
- i+=1
- inputs[id]=[ItemStack(name=name,amount=amount) for name,amount in recipeInput]
- outputs[id]=[ItemStack(name='Exp Bottle',amount=bottles)]
- recipes[id]=Recipe(identifier=id,name='Brew XP Bottles - '+str(i),inputs=inputs[id],outputs=outputs[id])
- factories[cauldron+'_Cauldron'].addRecipe(recipes[id])
-
- #inputs[id+'_Bulk']=[itemStack.modifyAmount(64) for itemStack in recipes[id].inputs]
- #outputs[id+'_Bulk']=[itemStack.modifyAmount(64) for itemStack in recipes[id].outputs]
- #recipes[id+'_Bulk']=Recipe(identifier=id+'_Bulk',name='Brew XP Bottles - '+str(i),inputs=inputs[id+'_Bulk'],outputs=outputs[id+'_Bulk'],time=128)
- #factories[cauldron+'_Cauldron'].addRecipe(recipes[id+'_Bulk'])
-
-
- #Add in repair
- for factory in factories.values():
- factory.repairMultiple=min([input.amount for input in [input.modifyAmount(mMod) for input in factory.inputs]])
- factory.repairInputs=[input.modifyAmount(1.0/factory.repairMultiple) for input in [input.modifyAmount(mMod) for input in factory.inputs]]
- return (factories,recipes)
-
-def createCraftingRecipes():
- enabledRecipes=[]
- enabledRecipes.append(CraftedRecipe('XP to Emerald',inputs={'a':ItemStack('Exp Bottle',amount=9)},output=ItemStack('Emerald')))
- enabledRecipes.append(CraftedRecipe('Emerald to XP',inputs={'a':ItemStack('Emerald')},output=ItemStack('Exp Bottle',amount=9)))
- enabledRecipes.append(CraftedRecipe('Stone to Double Slab',inputs={'s':ItemStack('Stone')},shape=['sss','sss'],output=ItemStack('Double Stone Slab')))
- enabledRecipes.append(CraftedRecipe('Slab to Double Slab',inputs={'s':ItemStack('Stone Slab')},shape=['s','s'],output=ItemStack('Double Stone Slab')))
- return enabledRecipes
-
-def checkConflicts(factories):
- for factory in factories.values():
- for otherFactory in factories.values():
- if factory!=otherFactory:
- sameInputs=len(factory.inputs)==len(otherFactory.inputs)
- for itemStack in factory.inputs:
- inOtherFactory=False
- for otherItemStack in otherFactory.inputs:
- if itemStack.equals(otherItemStack):
- inOtherFactory=True
- sameInputs=sameInputs and inOtherFactory
- if sameInputs:
- print 'Conflict of '+factory.name+' and '+otherFactory.name
-def fixConflicts(factories):
- for factory in factories.values():
- for otherFactory in factories.values():
- if factory!=otherFactory:
- sameInputs=len(factory.inputs)==len(otherFactory.inputs)
- for itemStack in factory.inputs:
- inOtherFactory=False
- for otherItemStack in otherFactory.inputs:
- if itemStack.equals(otherItemStack):
- inOtherFactory=True
- sameInputs=sameInputs and inOtherFactory
- if sameInputs:
- factory.inputs[0].amount+=1
-
-
-if __name__ == '__main__':
- main()
\ No newline at end of file
diff --git a/Config Scripts/ParseConfig.py b/Config Scripts/ParseConfig.py
deleted file mode 100644
index 1d781541..00000000
--- a/Config Scripts/ParseConfig.py
+++ /dev/null
@@ -1,58 +0,0 @@
-from ConfigObjects import Recipe, Enchantment, ItemStack, Factory, defaults
-import ConfigObjects
-import pydot
-import math
-
-class ParseConfig:
- @staticmethod
- def prettyList(config,filename='prettylist.txt'):
- myfile=open(filename,'w')
- myfile.write('\n\n##Factory List')
- sortedFactoryKeys=config['factories'].keys()
- sortedFactoryKeys.sort()
- types=[('Enchanting',['Cauldron']),('Smelting',['Smelter']),('Food',['Bakery','Grill']),('Equipment',['Smithy']),('Items',['Wool','Rail'])]
- for type,names in types:
- myfile.write('\n\n- ['+type+'](https://github.com/gmlaxfanatic/FactoryMod/wiki#'+type.lower()+')')
- for type,names in types:
- myfile.write('\n\n###'+type)
- for key in sortedFactoryKeys:
- factory=config['factories'][key]
- if sum([(name in factory.identifier) for name in names])>0:
- myfile.write('\n\n**'+factory.name+'**')
- myfile.write(' - ')
- for input in factory.inputs:
- myfile.write(str(input.amount)+' '+input.name)
- if(factory.inputs.index(input)!=len(factory.inputs)-1):
- myfile.write(', ')
- for recipe in factory.outputRecipes:
- myfile.write('\n\n\t')
- for output in recipe.outputs:
- myfile.write(str(output.amount)+' '+output.name)
- myfile.write(' for ')
- for input in recipe.inputs:
- myfile.write(str(input.amount)+' '+input.name)
- if(recipe.inputs.index(input)!=len(recipe.inputs)-1):
- myfile.write(', ')
- myfile.write(' using '+str(int(math.ceil(recipe.time/float(factory.fuelTime))))+' '+factory.fuel.name)
-
- @staticmethod
- def saveConfig(config,filename='config.yml'):
- from shutil import copyfile
- copyfile('template.yml',filename)
- myfile=open(filename,'a')
- myfile.write('\ncrafting:')
- myfile.write('\n disable:')
- for disabled_recipe in config['disabled_recipes']:
- myfile.write('\n - '+disabled_recipe)
- myfile.write('\n enable:')
- for enabledRecipe in config['enabled_recipes']:
- myfile.write(enabledRecipe.cOutput())
- myfile.write('\nproduction_factories:')
- sortedFactoryKeys=config['factories'].keys()
- sortedFactoryKeys.sort()
- for key in sortedFactoryKeys:
- myfile.write(config['factories'][key].cOutput())
- myfile.write('\nproduction_recipes:')
- for recipe in config['recipes'].values():
- myfile.write(recipe.cOutput())
- myfile.close()
\ No newline at end of file
diff --git a/Config Scripts/enchantments.csv b/Config Scripts/enchantments.csv
deleted file mode 100644
index 13c5bb14..00000000
--- a/Config Scripts/enchantments.csv
+++ /dev/null
@@ -1,22 +0,0 @@
-Power,ARROW_DAMAGE,Bow,,,,,,,,,,,
-Flame,ARROW_FIRE,Bow,,,,,,,,,,,
-Infinite,ARROW_INFINITE,Bow,,,,,,,,,,,
-Arrow Knockback,ARROW_KNOCKBACK,Bow,,,,,,,,,,,
-Sharpness,DAMAGE_ALL,Sword,Axe,,,,,,,,,,
-Bane of the Anthropods,DAMAGE_ARTHROPODS,Sword,Axe,,,,,,,,,,
-Smite,DAMAGE_UNDEAD,Sword,Axe,,,,,,,,,,
-Efficiency,DIG_SPEED,Pick,Shovel,Axe,Shears,,,,,,,,
-Unbreaking,DURABILITY,Helmet,Chest,Leggings,Boots,Sword,Axe,Bow,Pick,Shovel,Axe,Shears,Hoe
-Fire Aspect,FIRE_ASPECT,Sword,Axe,,,,,,,,,,
-Knockback,KNOCKBACK,Sword,Axe,,,,,,,,,,
-Fortune,LOOT_BONUS_BLOCKS,Pick,Shovel,Axe,,,,,,,,,
-Looting,LOOT_BONUS_MOBS,Sword,Axe,,,,,,,,,,
-Respiration,OXYGEN,Helmet,,,,,,,,,,,
-Protection,PROTECTION_ENVIRONMENTAL,Helmet,Chest,Leggings,Boots,,,,,,,,
-Blast Protection,PROTECTION_EXPLOSIONS,Helmet,Chest,Leggings,Boots,,,,,,,,
-Feather Falling,PROTECTION_FALL,Boots,,,,,,,,,,,
-Fire Protection,PROTECTION_FIRE,Helmet,Chest,Leggings,Boots,,,,,,,,
-Projectile Protection,PROTECTION_PROJECTILE,Helmet,Chest,Leggings,Boots,,,,,,,,
-Silk Touch,SILK_TOUCH,Pick,Shovel,Axe,Shears,,,,,,,,
-Thorns,THORNS,Helmet,Chest,Leggings,Boots,,,,,,,,
-Aqua Affinity,WATER_WORKER,Helmet,,,,,,,,,,,
diff --git a/Config Scripts/materials.csv b/Config Scripts/materials.csv
deleted file mode 100644
index cc8adc5d..00000000
--- a/Config Scripts/materials.csv
+++ /dev/null
@@ -1,430 +0,0 @@
-Stone,STONE,1,0
-Grass Block,GRASS,2,0
-Dirt,DIRT,3,0
-Grassless Dirt,DIRT,3,1
-Podzol,DIRT,3,2
-Cobblestone,COBBLESTONE,4,0
-Oak Wood Planks,WOOD,5,0
-Spruce Wood Planks,WOOD,5,1
-Birch Wood Planks,WOOD,5,2
-Jungle Wood Planks,WOOD,5,3
-Acacia Wood Planks,WOOD,5,4
-Dark Oak Wood Planks,WOOD,5,5
-Oak Sapling,SAPLING,6,0
-Spruce Sapling,SAPLING,6,1
-Birch Sapling,SAPLING,6,2
-Jungle Sapling,SAPLING,6,3
-Acacia Sapling,SAPLING,6,4
-Dark Oak Sapling,SAPLING,6,5
-Bedrock,BEDROCK,7,0
-Water,WATER,8,0
-Stationary Water,STATIONARY_WATER,9,0
-Lava,LAVA,10,0
-Stationary Lava,STATIONARY_LAVA,11,0
-Sand,SAND,12,0
-Gravel,GRAVEL,13,0
-Gold Ore,GOLD_ORE,14,0
-Iron Ore,IRON_ORE,15,0
-Coal Ore,COAL_ORE,16,0
-Oak Wood,LOG,17,0
-Spruce Wood,LOG,17,1
-Birch Wood,LOG,17,2
-Jungle Wood,LOG,17,3
-Leaves,LEAVES,18,0
-Sponge,SPONGE,19,0
-Glass,GLASS,20,0
-Lapis Ore,LAPIS_ORE,21,0
-Lapis Block,LAPIS_BLOCK,22,0
-Dispenser,DISPENSER,23,0
-Sandstone,SANDSTONE,24,0
-Note Block,NOTE_BLOCK,25,0
-Bed Block,BED_BLOCK,26,0
-Powered Rail,POWERED_RAIL,27,0
-Detector Rail,DETECTOR_RAIL,28,0
-Piston Sticky Base,PISTON_STICKY_BASE,29,0
-Web,WEB,30,0
-Shrub,LONG_GRASS,31,0
-Grass,LONG_GRASS,31,1
-Fern,LONG_GRASS,31,2
-Dead Bush,DEAD_BUSH,32,0
-Piston Base,PISTON_BASE,33,0
-Piston Extension,PISTON_EXTENSION,34,0
-White Wool,WOOL,35,0
-Orange Wool,WOOL,35,1
-Magenta Wool,WOOL,35,2
-Light Blue Wool,WOOL,35,3
-Yellow Wool,WOOL,35,4
-Lime Wool,WOOL,35,5
-Pink Wool,WOOL,35,6
-Gray Wool,WOOL,35,7
-Light Gray Wool,WOOL,35,8
-Cyan Wool,WOOL,35,9
-Purple Wool,WOOL,35,10
-Blue Wool,WOOL,35,11
-Brown Wool,WOOL,35,12
-Green Wool,WOOL,35,13
-Red Wool,WOOL,35,14
-Black Wool,WOOL,35,15
-Piston Moving Piece,PISTON_MOVING_PIECE,36,0
-Dandelion,YELLOW_FLOWER,37,0
-Poppy,RED_ROSE,38,0
-Blue Orchid,RED_ROSE,38,1
-Allium,RED_ROSE,38,2
-Azure Bluet,RED_ROSE,38,3
-Red Tulip,RED_ROSE,38,4
-Orange Tulip,RED_ROSE,38,5
-White Tulip,RED_ROSE,38,6
-Pink Tulip,RED_ROSE,38,7
-Oxeye Daisy,RED_ROSE,38,8
-Brown Mushroom,BROWN_MUSHROOM,39,0
-Red Mushroom,RED_MUSHROOM,40,0
-Gold Block,GOLD_BLOCK,41,0
-Iron Block,IRON_BLOCK,42,0
-Double Stone Slab,DOUBLE_STEP,43,0
-Nether Brick Slab,DOUBLE_STEP,43,6
-Stone Slab,STEP,44,0
-Brick,BRICK,45,0
-TNT,TNT,46,0
-Bookshelf,BOOKSHELF,47,0
-Mossy Cobblestone,MOSSY_COBBLESTONE,48,0
-Obsidian,OBSIDIAN,49,0
-Torch,TORCH,50,0
-Fire,FIRE,51,0
-Mob Spawner,MOB_SPAWNER,52,0
-Wood Stairs,WOOD_STAIRS,53,0
-Chest,CHEST,54,0
-Redstone Wire,REDSTONE_WIRE,55,0
-Diamond Ore,DIAMOND_ORE,56,0
-Diamond Block,DIAMOND_BLOCK,57,0
-Workbench,WORKBENCH,58,0
-Crops,CROPS,59,0
-Soil,SOIL,60,0
-Furnace,FURNACE,61,0
-Burning Furnace,BURNING_FURNACE,62,0
-Sign Post,SIGN_POST,63,0
-Wooden Door,WOODEN_DOOR,64,0
-Ladder,LADDER,65,0
-Rail,RAILS,66,0
-Cobblestone Stairs,COBBLESTONE_STAIRS,67,0
-Wall Sign,WALL_SIGN,68,0
-Lever,LEVER,69,0
-Stone Plate,STONE_PLATE,70,0
-Iron Door Block,IRON_DOOR_BLOCK,71,0
-Wood Plate,WOOD_PLATE,72,0
-Redstone Ore,REDSTONE_ORE,73,0
-Glowing Redstone Ore,GLOWING_REDSTONE_ORE,74,0
-Redstone Torch Off,REDSTONE_TORCH_OFF,75,0
-Redstone Torch On,REDSTONE_TORCH_ON,76,0
-Stone Button,STONE_BUTTON,77,0
-Snow,SNOW,78,0
-Ice,ICE,79,0
-Snow Block,SNOW_BLOCK,80,0
-Cactus,CACTUS,81,0
-Clay,CLAY,82,0
-Sugar Cane Block,SUGAR_CANE_BLOCK,83,0
-Jukebox,JUKEBOX,84,0
-Fence,FENCE,85,0
-Pumpkin,PUMPKIN,86,0
-Netherrack,NETHERRACK,87,0
-Soul Sand,SOUL_SAND,88,0
-Glowstone,GLOWSTONE,89,0
-Portal,PORTAL,90,0
-Jack O Lantern,JACK_O_LANTERN,91,0
-Cake Block,CAKE_BLOCK,92,0
-Diode Block Off,DIODE_BLOCK_OFF,93,0
-Diode Block On,DIODE_BLOCK_ON,94,0
-White Stained Glass,STAINED_GLASS,95,0
-Orange Stained Glass,STAINED_GLASS,95,1
-Magenta Stained Glass,STAINED_GLASS,95,2
-Light Blue Stained Glass,STAINED_GLASS,95,3
-Yellow Stained Glass,STAINED_GLASS,95,4
-Lime Stained Glass,STAINED_GLASS,95,5
-Pink Stained Glass,STAINED_GLASS,95,6
-Gray Stained Glass,STAINED_GLASS,95,7
-Light Gray Stained Glass,STAINED_GLASS,95,8
-Cyan Stained Glass,STAINED_GLASS,95,9
-Purple Stained Glass,STAINED_GLASS,95,10
-Blue Stained Glass,STAINED_GLASS,95,11
-Brown Stained Glass,STAINED_GLASS,95,12
-Green Stained Glass,STAINED_GLASS,95,13
-Red Stained Glass,STAINED_GLASS,95,14
-Black Stained Glass,STAINED_GLASS,95,15
-Trap Door,TRAP_DOOR,96,0
-Monster Eggs,MONSTER_EGGS,97,0
-Stone Brick,SMOOTH_BRICK,98,0
-Mossy Stone Brick,SMOOTH_BRICK,98,1
-Cracked Stone Brick,SMOOTH_BRICK,98,2
-Chiseled Stone Brick,SMOOTH_BRICK,98,3
-Huge Mushroom 1,HUGE_MUSHROOM_1,99,0
-Huge Mushroom 2,HUGE_MUSHROOM_2,100,0
-Iron Fence,IRON_FENCE,101,0
-Thin Glass,THIN_GLASS,102,0
-Melon Block,MELON_BLOCK,103,0
-Pumpkin Stem,PUMPKIN_STEM,104,0
-Melon Stem,MELON_STEM,105,0
-Vine,VINE,106,0
-Fence Gate,FENCE_GATE,107,0
-Brick Stairs,BRICK_STAIRS,108,0
-Smooth Stairs,SMOOTH_STAIRS,109,0
-Mycel,MYCEL,110,0
-Water Lily,WATER_LILY,111,0
-Nether Brick,NETHER_BRICK,112,0
-Nether Fence,NETHER_FENCE,113,0
-Nether Brick Stairs,NETHER_BRICK_STAIRS,114,0
-Nether Wart Block,NETHER_WARTS,115,0
-Enchantment Table,ENCHANTMENT_TABLE,116,0
-Brewing Stand,BREWING_STAND,117,0
-Cauldron,CAULDRON,118,0
-Ender Portal,ENDER_PORTAL,119,0
-Ender Portal Frame,ENDER_PORTAL_FRAME,120,0
-Ender Stone,ENDER_STONE,121,0
-Dragon Egg,DRAGON_EGG,122,0
-Redstone Lamp Off,REDSTONE_LAMP_OFF,123,0
-Redstone Lamp On,REDSTONE_LAMP_ON,124,0
-Wood Double Step,WOOD_DOUBLE_STEP,125,0
-Wood Step,WOOD_STEP,126,0
-Cocoa Stalk,COCOA,127,0
-Sandstone Stairs,SANDSTONE_STAIRS,128,0
-Emerald Ore,EMERALD_ORE,129,0
-Ender Chest,ENDER_CHEST,130,0
-Tripwire Hook,TRIPWIRE_HOOK,131,0
-Tripwire,TRIPWIRE,132,0
-Emerald Block,EMERALD_BLOCK,133,0
-Spruce Wood Stairs,SPRUCE_WOOD_STAIRS,134,0
-Birch Wood Stairs,BIRCH_WOOD_STAIRS,135,0
-Jungle Wood Stairs,JUNGLE_WOOD_STAIRS,136,0
-Command,COMMAND,137,0
-Beacon,BEACON,138,0
-Cobble Wall,COBBLE_WALL,139,0
-Flower Pot,FLOWER_POT,140,0
-Carrot Crop,CARROT,141,0
-Potato Crop,POTATO,142,0
-Wood Button,WOOD_BUTTON,143,0
-Skull,SKULL,144,0
-Anvil,ANVIL,145,0
-Trapped Chest,TRAPPED_CHEST,146,0
-Gold Plate,GOLD_PLATE,147,0
-Iron Plate,IRON_PLATE,148,0
-Redstone Comparator Off,REDSTONE_COMPARATOR_OFF,149,0
-Redstone Comparator On,REDSTONE_COMPARATOR_ON,150,0
-Daylight Detector,DAYLIGHT_DETECTOR,151,0
-Redstone Block,REDSTONE_BLOCK,152,0
-Quartz Ore,QUARTZ_ORE,153,0
-Hopper,HOPPER,154,0
-Quartz Block,QUARTZ_BLOCK,155,0
-Quartz Stairs,QUARTZ_STAIRS,156,0
-Activator Rail,ACTIVATOR_RAIL,157,0
-Dropper,DROPPER,158,0
-White Stained Glass Pane,STAINED_GLASS_PANE,160,0
-Orange Stained Glass Pane,STAINED_GLASS_PANE,160,1
-Magenta Stained Glass Pane,STAINED_GLASS_PANE,160,2
-Light Blue Stained Glass Pane,STAINED_GLASS_PANE,160,3
-Yellow Stained Glass Pane,STAINED_GLASS_PANE,160,4
-Lime Stained Glass Pane,STAINED_GLASS_PANE,160,5
-Pink Stained Glass Pane,STAINED_GLASS_PANE,160,6
-Gray Stained Glass Pane,STAINED_GLASS_PANE,160,7
-Light Gray Stained Glass Pane,STAINED_GLASS_PANE,160,8
-Cyan Stained Glass Pane,STAINED_GLASS_PANE,160,9
-Purple Stained Glass Pane,STAINED_GLASS_PANE,160,10
-Blue Stained Glass Pane,STAINED_GLASS_PANE,160,11
-Brown Stained Glass Pane,STAINED_GLASS_PANE,160,12
-Green Stained Glass Pane,STAINED_GLASS_PANE,160,13
-Red Stained Glass Pane,STAINED_GLASS_PANE,160,14
-Black Stained Glass Pane,STAINED_GLASS_PANE,160,15
-Acacia Wood,LOG_2,162,0
-Dark Oak Wood,LOG_2,162,1
-Packed Ice,PACKED_ICE,174,0
-Iron Spade,IRON_SPADE,256,0
-Iron Pickaxe,IRON_PICKAXE,257,0
-Iron Axe,IRON_AXE,258,0
-Flint And Steel,FLINT_AND_STEEL,259,0
-Apple,APPLE,260,0
-Bow,BOW,261,0
-Arrow,ARROW,262,0
-Coal,COAL,263,0
-Charcoal,COAL,263,1
-Diamond,DIAMOND,264,0
-Iron Ingot,IRON_INGOT,265,0
-Gold Ingot,GOLD_INGOT,266,0
-Iron Sword,IRON_SWORD,267,0
-Wood Sword,WOOD_SWORD,268,0
-Wood Spade,WOOD_SPADE,269,0
-Wood Pickaxe,WOOD_PICKAXE,270,0
-Wood Axe,WOOD_AXE,271,0
-Stone Sword,STONE_SWORD,272,0
-Stone Spade,STONE_SPADE,273,0
-Stone Pickaxe,STONE_PICKAXE,274,0
-Stone Axe,STONE_AXE,275,0
-Diamond Sword,DIAMOND_SWORD,276,0
-Diamond Spade,DIAMOND_SPADE,277,0
-Diamond Pickaxe,DIAMOND_PICKAXE,278,0
-Diamond Axe,DIAMOND_AXE,279,0
-Stick,STICK,280,0
-Bowl,BOWL,281,0
-Mushroom Soup,MUSHROOM_SOUP,282,0
-Gold Sword,GOLD_SWORD,283,0
-Gold Spade,GOLD_SPADE,284,0
-Gold Pickaxe,GOLD_PICKAXE,285,0
-Gold Axe,GOLD_AXE,286,0
-String,STRING,287,0
-Feather,FEATHER,288,0
-Sulphur,SULPHUR,289,0
-Wood Hoe,WOOD_HOE,290,0
-Stone Hoe,STONE_HOE,291,0
-Iron Hoe,IRON_HOE,292,0
-Diamond Hoe,DIAMOND_HOE,293,0
-Gold Hoe,GOLD_HOE,294,0
-Seeds,SEEDS,295,0
-Wheat,WHEAT,296,0
-Bread,BREAD,297,0
-Leather Helmet,LEATHER_HELMET,298,0
-Leather Chestplate,LEATHER_CHESTPLATE,299,0
-Leather Leggings,LEATHER_LEGGINGS,300,0
-Leather Boots,LEATHER_BOOTS,301,0
-Chainmail Helmet,CHAINMAIL_HELMET,302,0
-Chainmail Chestplate,CHAINMAIL_CHESTPLATE,303,0
-Chainmail Leggings,CHAINMAIL_LEGGINGS,304,0
-Chainmail Boots,CHAINMAIL_BOOTS,305,0
-Iron Helmet,IRON_HELMET,306,0
-Iron Chestplate,IRON_CHESTPLATE,307,0
-Iron Leggings,IRON_LEGGINGS,308,0
-Iron Boots,IRON_BOOTS,309,0
-Diamond Helmet,DIAMOND_HELMET,310,0
-Diamond Chestplate,DIAMOND_CHESTPLATE,311,0
-Diamond Leggings,DIAMOND_LEGGINGS,312,0
-Diamond Boots,DIAMOND_BOOTS,313,0
-Gold Helmet,GOLD_HELMET,314,-218
-Gold Chestplate,GOLD_CHESTPLATE,315,-218
-Gold Leggings,GOLD_LEGGINGS,316,-218
-Gold Boots,GOLD_BOOTS,317,-218
-Flint,FLINT,318,0
-Pork,PORK,319,0
-Grilled Pork,GRILLED_PORK,320,0
-Painting,PAINTING,321,0
-Golden Apple,GOLDEN_APPLE,322,0
-Sign,SIGN,323,0
-Wood Door,WOOD_DOOR,324,0
-Bucket,BUCKET,325,0
-Water Bucket,WATER_BUCKET,326,0
-Lava Bucket,LAVA_BUCKET,327,0
-Minecart,MINECART,328,0
-Saddle,SADDLE,329,0
-Iron Door,IRON_DOOR,330,0
-Redstone,REDSTONE,331,0
-Snow Ball,SNOW_BALL,332,0
-Boat,BOAT,333,0
-Leather,LEATHER,334,0
-Milk Bucket,MILK_BUCKET,335,0
-Clay Brick,CLAY_BRICK,336,0
-Clay Ball,CLAY_BALL,337,0
-Sugar Cane,SUGAR_CANE,338,0
-Paper,PAPER,339,0
-Book,BOOK,340,0
-Slime Ball,SLIME_BALL,341,0
-Storage Minecart,STORAGE_MINECART,342,0
-Powered Minecart,POWERED_MINECART,343,0
-Egg,EGG,344,0
-Compass,COMPASS,345,0
-Fishing Rod,FISHING_ROD,346,0
-Watch,WATCH,347,0
-Glowstone Dust,GLOWSTONE_DUST,348,0
-Raw Fish,RAW_FISH,349,0
-Raw Salmon,RAW_FISH,349,1
-Cooked Fish,COOKED_FISH,350,0
-Cooked Salmon,RAW_FISH,350,1
-Ink Sack,INK_SACK,351,0
-Rose Red,INK_SACK,351,1
-Cactus Green,INK_SACK,351,2
-Cocoa,INK_SACK,351,3
-Lapis Lazuli,INK_SACK,351,4
-Purple Dye,INK_SACK,351,5
-Cyan Dye,INK_SACK,351,6
-Light Gray Dye,INK_SACK,351,7
-Gray Dye,INK_SACK,351,8
-Pink Dye,INK_SACK,351,9
-Lime Dye,INK_SACK,351,10
-Dandelion Yellow,INK_SACK,351,11
-Light Blue Dye,INK_SACK,351,12
-Magenta Dye,INK_SACK,351,13
-Orange Dye,INK_SACK,351,14
-Bone Meal,INK_SACK,351,15
-Bone,BONE,352,0
-Sugar,SUGAR,353,0
-Cake,CAKE,354,0
-Bed,BED,355,0
-Diode,DIODE,356,0
-Cookie,COOKIE,357,0
-Map,MAP,358,0
-Shears,SHEARS,359,0
-Melon,MELON,360,0
-Pumpkin Seeds,PUMPKIN_SEEDS,361,0
-Melon Seeds,MELON_SEEDS,362,0
-Raw Beef,RAW_BEEF,363,0
-Cooked Beef,COOKED_BEEF,364,0
-Raw Chicken,RAW_CHICKEN,365,0
-Cooked Chicken,COOKED_CHICKEN,366,0
-Rotten Flesh,ROTTEN_FLESH,367,0
-Ender Pearl,ENDER_PEARL,368,0
-Blaze Rod,BLAZE_ROD,369,0
-Ghast Tear,GHAST_TEAR,370,0
-Gold Nugget,GOLD_NUGGET,371,0
-Nether Wart,NETHER_STALK,372,0
-Clear Potion,POTION,373,7
-Diffuse Potion,POTION,373,11
-Artless Potion,POTION,373,13
-Bungling Potion,POTION,373,23
-Suave Potion,POTION,373,29
-Smooth Potion,POTION,373,91
-Refined Potion,POTION,373,107
-Cordial Potion,POTION,373,109
-Potent Potion,POTION,373,112
-Acrid Potion,POTION,373,123
-Gross Potion,POTION,373,125
-Potion,POTION,373,0
-Glass Bottle,GLASS_BOTTLE,374,0
-Spider Eye,SPIDER_EYE,375,0
-Fermented Spider Eye,FERMENTED_SPIDER_EYE,376,0
-Blaze Powder,BLAZE_POWDER,377,0
-Magma Cream,MAGMA_CREAM,378,0
-Brewing Stand Item,BREWING_STAND_ITEM,379,0
-Cauldron Item,CAULDRON_ITEM,380,0
-Eye Of Ender,EYE_OF_ENDER,381,0
-Speckled Melon,SPECKLED_MELON,382,0
-Monster Egg,MONSTER_EGG,383,0
-Exp Bottle,EXP_BOTTLE,384,0
-Fireball,FIREBALL,385,0
-Book And Quill,BOOK_AND_QUILL,386,0
-Written Book,WRITTEN_BOOK,387,0
-Emerald,EMERALD,388,0
-Item Frame,ITEM_FRAME,389,0
-Flower Pot Item,FLOWER_POT_ITEM,390,0
-Carrot,CARROT_ITEM,391,0
-Potato,POTATO_ITEM,392,0
-Baked Potato,BAKED_POTATO,393,0
-Poisonous Potato,POISONOUS_POTATO,394,0
-Empty Map,EMPTY_MAP,395,0
-Golden Carrot,GOLDEN_CARROT,396,0
-Skull Item,SKULL_ITEM,397,0
-Carrot Stick,CARROT_STICK,398,0
-Nether Star,NETHER_STAR,399,0
-Pumpkin Pie,PUMPKIN_PIE,400,0
-Firework,FIREWORK,401,0
-Firework Charge,FIREWORK_CHARGE,402,0
-Enchanted Book,ENCHANTED_BOOK,403,0
-Redstone Comparator,REDSTONE_COMPARATOR,404,0
-Nether Brick Item,NETHER_BRICK_ITEM,405,0
-Quartz,QUARTZ,406,0
-Explosive Minecart,EXPLOSIVE_MINECART,407,0
-Hopper Minecart,HOPPER_MINECART,408,0
-Gold Record,GOLD_RECORD,2256,0
-Green Record,GREEN_RECORD,2257,0
-Record 3,RECORD_3,2258,0
-Record 4,RECORD_4,2259,0
-Record 5,RECORD_5,2260,0
-Record 6,RECORD_6,2261,0
-Record 7,RECORD_7,2262,0
-Record 8,RECORD_8,2263,0
-Record 9,RECORD_9,2264,0
-Record 10,RECORD_10,2265,0
-Record 11,RECORD_11,2266,0
-Record 12,RECORD_12,2267,0
diff --git a/Config Scripts/template.yml b/Config Scripts/template.yml
deleted file mode 100644
index 612336a8..00000000
--- a/Config Scripts/template.yml
+++ /dev/null
@@ -1,149 +0,0 @@
-#Example: production_general
-# update_cycle: 20 the period of ticks between which factories are updated
-# maintenance_cycle: 15 the period of ticks between which the maintenance of the factories are updated
-# maintenance_rate: 1 %Modifies the rate at which factories degrade, higher numbers degrade the factories faster
-#Example recipe entry with defaults included any section should be able to be excluded
-# TITLE: (Don't use spaces, should be a unique identifier)
-# name: Default Name (Displayed name to user)
-# production_time: 1 (Time to produce the recipe)
-# inputs: (only include if there are inputs)
-# Common Name:
-# material: MATERIAL_NAME (Official bukkit material name)
-# amount: 1 (number of a particular item)
-# durability: 0 (damage value, 0 represents max durability, negative represents greater than max)
-# data: 0 (data value of the item stack
-# display_name: (display name of the item, null by default)
-# lore: (lore of the item, null by default)
-# upgrades: (only include if there are inputs)
-# Common Name:
-# material: MATERIAL_NAME (Official bukkit material name)
-# amount: 1 (number of a particular item)
-# durability: 0 (damage value, 0 represents max durability, negative represents greater than max)
-# data: 0 (data value of the item stack
-# display_name: (display name of the item, null by default)
-# lore: (lore of the item, null by default)
-# outputs: (only include if there are outputs)
-# Common Name:
-# material: MATERIAL_NAME (Official bukkit material name)
-# amount: 1 (number of a particular item)
-# durability: 0 (damage value, 0 represents max durability, negative represents greater than max)
-# data: 0 (data value of the item stack
-# display_name: (display name of the item, null by default)
-# lore: (lore of the item, null by default)
-# enchantments:
-# Common Name:
-# type: (Offificial bukkit enchantment name, Require)
-# level: 1 (level of the enchantment
-# probability: 1 (0-1 probability of the enchantment being applied)
-# output_recipes:
-# - TITLE (TITLE of the output recipe)
-# use_once: false (If this recipe is removed after its first use)
-# maintenance: 0 (Maximum amount of maintence required for this recipe)
-######################################################################
-#Example factory entry with defaults included any section should be able to be excluded
-# TITLE: (Don't use spaces, should be a unique identifier)
-# name: Default Name (Displayed name to user)
-# fuel: (Defaults to charcoal if not present, only first entry used)
-# Common Name:
-# material: MATERIAL_NAME (Official bukkit material name)
-# amount: 1 (number of a particular item)
-# durability: 0 (damage value, 0 represents max durability, negative represents greater than max)
-# data: 0 (data value of the item stack
-# display_name: (display name of the item, null by default)
-# lore: (lore of the item, null by default)# fuel_time: 1 (Time that a piece of fuel lasts)
-# fuel_time: 1 (Time which fuel lasts)
-# inputs: (required)
-# Common Name:
-# material: MATERIAL_NAME (Official bukkit material name)
-# amount: 1 (number of a particular item)
-# durability: 0 (damage value, 0 represents max durability, negative represents greater than max)
-# data: 0 (data value of the item stack
-# display_name: (display name of the item, null by default)
-# lore: (lore of the item, null by default)
-# production_recipes:
-# - TITLE (title of recipe)
-# repair_material: (Defaults to coal if none are present)
-# Common Name:
-# material: MATERIAL_NAME (Official bukkit material name)
-# amount: 1 (number of a particular item)
-# durability: 0 (damage value, 0 represents max durability, negative represents greater than max)
-# data: 0 (data value of the item stack
-# display_name: (display name of the item, null by default)
-# lore: (lore of the item, null by default)
-copy_defaults: false
-general:
- central_block: WORKBENCH
- save_cycle: 15
- return_build_materials: false
- citadel_enabled: true
- factory_interaction_material: STICK
- disable_experience: true
-production_general:
- update_cycle: 20
- repair_period: 28
- disrepair_period: 14
-printing_presses:
- fuel:
- Charcoal:
- material: 'COAL'
- durability: 1
- costs:
- construction:
- "Iron block":
- material: 'IRON_BLOCK'
- amount: 60
- "Redstone":
- material: REDSTONE
- amount: 256
- "Quartz":
- material: QUARTZ
- amount: 64
- "Piston":
- material: PISTON_BASE
- amount: 20
- "Gold plate":
- material: GOLD_PLATE
- amount: 20
- plates:
- "Iron ingot":
- material: 'IRON_INGOT'
- amount: 4
- "Gold nugget":
- material: "GOLD_NUGGET"
- amount: 1
- repair:
- "Iron block":
- material: 'IRON_BLOCK'
- amount: 1
- repair_multiple: 5
- binding: # Each
- Leather:
- material: 'LEATHER'
- amount: 1
- page_lot:
- Paper:
- material: 'PAPER'
- amount: 4
- Ink:
- material: 'INK_SACK'
- durability: 0
- amount: 1
- pages_per_lot: 32
- pamphlet_lot:
- Paper:
- material: 'PAPER'
- amount: 8
- Ink:
- material: 'INK_SACK'
- durability: 0
- amount: 1
- pamphlets_per_lot: 32
- security_lot:
- "Gold nuggets":
- material: 'GOLD_NUGGET'
- amount: 1
- "Cactus green":
- material: 'INK_SACK'
- durability: 2
- amount: 6
- security_notes_per_lot: 64
diff --git a/FactoryMod_NetherBackend_9.3.14.jar b/FactoryMod_NetherBackend_9.3.14.jar
deleted file mode 100644
index eef58607..00000000
Binary files a/FactoryMod_NetherBackend_9.3.14.jar and /dev/null differ
diff --git a/config.yml b/config.yml
deleted file mode 100644
index 1ba37ca3..00000000
--- a/config.yml
+++ /dev/null
@@ -1,7545 +0,0 @@
-#Example: production_general
-# update_cycle: 20 the period of ticks between which factories are updated
-# maintenance_cycle: 15 the period of ticks between which the maintenance of the factories are updated
-# maintenance_rate: 1 %Modifies the rate at which factories degrade, higher numbers degrade the factories faster
-#Example recipe entry with defaults included any section should be able to be excluded
-# TITLE: (Don't use spaces, should be a unique identifier)
-# name: Default Name (Displayed name to user)
-# production_time: 1 (Time to produce the recipe)
-# inputs: (only include if there are inputs)
-# Common Name:
-# material: MATERIAL_NAME (Official bukkit material name)
-# amount: 1 (number of a particular item)
-# durability: 0 (damage value, 0 represents max durability, negative represents greater than max)
-# data: 0 (data value of the item stack
-# display_name: (display name of the item, null by default)
-# lore: (lore of the item, null by default)
-# upgrades: (only include if there are inputs)
-# Common Name:
-# material: MATERIAL_NAME (Official bukkit material name)
-# amount: 1 (number of a particular item)
-# durability: 0 (damage value, 0 represents max durability, negative represents greater than max)
-# data: 0 (data value of the item stack
-# display_name: (display name of the item, null by default)
-# lore: (lore of the item, null by default)
-# outputs: (only include if there are outputs)
-# Common Name:
-# material: MATERIAL_NAME (Official bukkit material name)
-# amount: 1 (number of a particular item)
-# durability: 0 (damage value, 0 represents max durability, negative represents greater than max)
-# data: 0 (data value of the item stack
-# display_name: (display name of the item, null by default)
-# lore: (lore of the item, null by default)
-# enchantments:
-# Common Name:
-# type: (Offificial bukkit enchantment name, Require)
-# level: 1 (level of the enchantment
-# probability: 1 (0-1 probability of the enchantment being applied)
-# output_recipes:
-# - TITLE (TITLE of the output recipe)
-# use_once: false (If this recipe is removed after its first use)
-# maintenance: 0 (Maximum amount of maintence required for this recipe)
-######################################################################
-#Example factory entry with defaults included any section should be able to be excluded
-# TITLE: (Don't use spaces, should be a unique identifier)
-# name: Default Name (Displayed name to user)
-# fuel: (Defaults to charcoal if not present, only first entry used)
-# Common Name:
-# material: MATERIAL_NAME (Official bukkit material name)
-# amount: 1 (number of a particular item)
-# durability: 0 (damage value, 0 represents max durability, negative represents greater than max)
-# data: 0 (data value of the item stack
-# display_name: (display name of the item, null by default)
-# lore: (lore of the item, null by default)#
-# lore: (lore of the item, null by default)# fuel_time: 1 (Time that a piece of fuel lasts)
-# fuel_time: 1 (Time which fuel lasts)
-# inputs: (required)
-# Common Name:
-# material: MATERIAL_NAME (Official bukkit material name)
-# amount: 1 (number of a particular item)
-# durability: 0 (damage value, 0 represents max durability, negative represents greater than max)
-# data: 0 (data value of the item stack
-# display_name: (display name of the item, null by default)
-# lore: (lore of the item, null by default)
-# production_recipes:
-# - TITLE (title of recipe)
-# repair_material: (Defaults to coal if none are present)
-# Common Name:
-# material: MATERIAL_NAME (Official bukkit material name)
-# amount: 1 (number of a particular item)
-# durability: 0 (damage value, 0 represents max durability, negative represents greater than max)
-# data: 0 (data value of the item stack
-# display_name: (display name of the item, null by default)
-# lore: (lore of the item, null by default)
-copy_defaults: false
-general:
- central_block: WORKBENCH
- save_cycle: 15
- return_build_materials: false
- citadel_enabled: true
- factory_interaction_material: STICK
- disable_experience: true
-production_general:
- update_cycle: 20
- repair_period: 28
- disrepair_period: 14
-nether_general:
- disable_portals: true
- nether_scale: 8
- world_name: world
- nether_name: world_nether
- teleport_platform_material_nether_factory: OBSIDIAN
- marker_material_nether_factory: COAL_BLOCK
- marker_max_distance: 64
- allow_reinforcement_creation_above_teleport_platform: false
- allow_block_placement_above_teleport_platform: true
- teleport_platform_invunerable: false
- regenerate_teleport_block_on_teleport: false
- remove_blocks_above_teleport_platform_on_teleport: true
-printing_presses:
- fuel:
- Charcoal:
- material: 'COAL'
- durability: 1
- fuel_time: 5
- costs:
- construction:
- "Iron block":
- material: 'IRON_BLOCK'
- amount: 60
- "Redstone":
- material: REDSTONE
- amount: 256
- "Quartz":
- material: QUARTZ
- amount: 64
- "Piston":
- material: PISTON_BASE
- amount: 20
- "Gold plate":
- material: GOLD_PLATE
- amount: 20
- plates:
- "Iron ingot":
- material: 'IRON_INGOT'
- amount: 1
- "Gold nugget":
- material: "GOLD_NUGGET"
- amount: 1
- set_page_time: 5
- repair:
- "Iron block":
- material: 'IRON_BLOCK'
- amount: 1
- repair_multiple: 5
- binding: # Each
- Leather:
- material: 'LEATHER'
- amount: 1
- page_lot:
- Paper:
- material: 'PAPER'
- amount: 4
- Ink:
- material: 'INK_SACK'
- durability: 0
- amount: 1
- pages_per_lot: 32
- page_lead: 6
- pamphlet_lot:
- Paper:
- material: 'PAPER'
- amount: 4
- Ink:
- material: 'INK_SACK'
- durability: 0
- amount: 1
- pamphlets_per_lot: 32
- security_lot:
- "Gold nuggets":
- material: 'GOLD_NUGGET'
- amount: 1
- "Cactus green":
- material: 'INK_SACK'
- durability: 2
- amount: 6
- security_notes_per_lot: 128
-
-crafting:
- disable:
- enable:
- XP to Emerald:
- inputs:
- Exp Bottle:
- material: EXP_BOTTLE
- amount: 9
- output:
- Emerald:
- material: EMERALD
- Emerald to XP:
- inputs:
- Emerald:
- material: EMERALD
- output:
- Exp Bottle:
- material: EXP_BOTTLE
- amount: 9
- Stone to Double Slab:
- inputs:
- s:
- Stone:
- material: STONE
- shape:
- - sss
- - sss
- output:
- Double Stone Slab:
- material: DOUBLE_STEP
- Slab to Double Slab:
- inputs:
- s:
- Stone Slab:
- material: STEP
- shape:
- - s
- - s
- output:
- Double Stone Slab:
- material: DOUBLE_STEP
-production_factories:
- Bakery:
- name: Bakery
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Baked Potato:
- material: BAKED_POTATO
- amount: 512
- Cookie:
- material: COOKIE
- amount: 1024
- Bread:
- material: BREAD
- amount: 256
- Pumpkin Pie:
- material: PUMPKIN_PIE
- amount: 192
- recipes:
- - Baked_Potato
- - Bake_Cookie
- - Bake_Bread
- - Bake_Cake
- - Bake_Pumpkin_Pie
- repair_multiple: 26
- repair_inputs:
- Baked Potato:
- material: BAKED_POTATO
- amount: 2
- Cookie:
- material: COOKIE
- amount: 4
- Bread:
- material: BREAD
- Pumpkin Pie:
- material: PUMPKIN_PIE
- Black_Wool_Processing:
- name: Black Wool Processing
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Lapis Lazuli:
- material: INK_SACK
- amount: 20
- durability: 4
- Gray Dye:
- material: INK_SACK
- amount: 20
- durability: 8
- Cocoa:
- material: INK_SACK
- amount: 20
- durability: 3
- Purple Dye:
- material: INK_SACK
- amount: 20
- durability: 5
- Dandelion Yellow:
- material: INK_SACK
- amount: 20
- durability: 11
- Ink Sack:
- material: INK_SACK
- amount: 20
- Magenta Dye:
- material: INK_SACK
- amount: 20
- durability: 13
- Pink Dye:
- material: INK_SACK
- amount: 20
- durability: 9
- Cyan Dye:
- material: INK_SACK
- amount: 20
- durability: 6
- Orange Dye:
- material: INK_SACK
- amount: 20
- durability: 14
- Cactus Green:
- material: INK_SACK
- amount: 20
- durability: 2
- Bone Meal:
- material: INK_SACK
- amount: 20
- durability: 15
- Light Gray Dye:
- material: INK_SACK
- amount: 20
- durability: 7
- Light Blue Dye:
- material: INK_SACK
- amount: 20
- durability: 12
- Rose Red:
- material: INK_SACK
- amount: 20
- durability: 1
- Lime Dye:
- material: INK_SACK
- amount: 20
- durability: 10
- Black Wool:
- material: WOOL
- amount: 20
- durability: 15
- recipes:
- - Dye_Black_Wool_Blue
- - Dye_Black_Wool_Gray
- - Dye_Black_Wool_Brown
- - Dye_Black_Wool_Purple
- - Dye_Black_Wool_Yellow
- - Dye_Black_Wool_Magenta
- - Dye_Black_Wool_Pink
- - Dye_Black_Wool_Cyan
- - Dye_Black_Wool_Orange
- - Dye_Black_Wool_Green
- - Dye_Black_Wool_White
- - Dye_Black_Wool_Light_Gray
- - Dye_Black_Wool_Light_Blue
- - Dye_Black_Wool_Red
- - Dye_Black_Wool_Lime
- repair_multiple: 2
- repair_inputs:
- Lapis Lazuli:
- material: INK_SACK
- durability: 4
- Gray Dye:
- material: INK_SACK
- durability: 8
- Cocoa:
- material: INK_SACK
- durability: 3
- Purple Dye:
- material: INK_SACK
- durability: 5
- Dandelion Yellow:
- material: INK_SACK
- durability: 11
- Ink Sack:
- material: INK_SACK
- Magenta Dye:
- material: INK_SACK
- durability: 13
- Pink Dye:
- material: INK_SACK
- durability: 9
- Cyan Dye:
- material: INK_SACK
- durability: 6
- Orange Dye:
- material: INK_SACK
- durability: 14
- Cactus Green:
- material: INK_SACK
- durability: 2
- Bone Meal:
- material: INK_SACK
- durability: 15
- Light Gray Dye:
- material: INK_SACK
- durability: 7
- Light Blue Dye:
- material: INK_SACK
- durability: 12
- Rose Red:
- material: INK_SACK
- durability: 1
- Lime Dye:
- material: INK_SACK
- durability: 10
- Black Wool:
- material: WOOL
- durability: 15
- Brown_Wool_Processing:
- name: Brown Wool Processing
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Lapis Lazuli:
- material: INK_SACK
- amount: 20
- durability: 4
- Gray Dye:
- material: INK_SACK
- amount: 20
- durability: 8
- Cocoa:
- material: INK_SACK
- amount: 20
- durability: 3
- Purple Dye:
- material: INK_SACK
- amount: 20
- durability: 5
- Dandelion Yellow:
- material: INK_SACK
- amount: 20
- durability: 11
- Ink Sack:
- material: INK_SACK
- amount: 20
- Magenta Dye:
- material: INK_SACK
- amount: 20
- durability: 13
- Pink Dye:
- material: INK_SACK
- amount: 20
- durability: 9
- Cyan Dye:
- material: INK_SACK
- amount: 20
- durability: 6
- Orange Dye:
- material: INK_SACK
- amount: 20
- durability: 14
- Cactus Green:
- material: INK_SACK
- amount: 20
- durability: 2
- Bone Meal:
- material: INK_SACK
- amount: 20
- durability: 15
- Light Gray Dye:
- material: INK_SACK
- amount: 20
- durability: 7
- Light Blue Dye:
- material: INK_SACK
- amount: 20
- durability: 12
- Rose Red:
- material: INK_SACK
- amount: 20
- durability: 1
- Lime Dye:
- material: INK_SACK
- amount: 20
- durability: 10
- Brown Wool:
- material: WOOL
- amount: 20
- durability: 12
- recipes:
- - Dye_Brown_Wool_Blue
- - Dye_Brown_Wool_Gray
- - Dye_Brown_Wool_Purple
- - Dye_Brown_Wool_Yellow
- - Dye_Brown_Wool_Black
- - Dye_Brown_Wool_Magenta
- - Dye_Brown_Wool_Pink
- - Dye_Brown_Wool_Cyan
- - Dye_Brown_Wool_Orange
- - Dye_Brown_Wool_Green
- - Dye_Brown_Wool_White
- - Dye_Brown_Wool_Light_Gray
- - Dye_Brown_Wool_Light_Blue
- - Dye_Brown_Wool_Red
- - Dye_Brown_Wool_Lime
- repair_multiple: 2
- repair_inputs:
- Lapis Lazuli:
- material: INK_SACK
- durability: 4
- Gray Dye:
- material: INK_SACK
- durability: 8
- Cocoa:
- material: INK_SACK
- durability: 3
- Purple Dye:
- material: INK_SACK
- durability: 5
- Dandelion Yellow:
- material: INK_SACK
- durability: 11
- Ink Sack:
- material: INK_SACK
- Magenta Dye:
- material: INK_SACK
- durability: 13
- Pink Dye:
- material: INK_SACK
- durability: 9
- Cyan Dye:
- material: INK_SACK
- durability: 6
- Orange Dye:
- material: INK_SACK
- durability: 14
- Cactus Green:
- material: INK_SACK
- durability: 2
- Bone Meal:
- material: INK_SACK
- durability: 15
- Light Gray Dye:
- material: INK_SACK
- durability: 7
- Light Blue Dye:
- material: INK_SACK
- durability: 12
- Rose Red:
- material: INK_SACK
- durability: 1
- Lime Dye:
- material: INK_SACK
- durability: 10
- Brown Wool:
- material: WOOL
- durability: 12
- Charcoal_Smelter:
- name: Charcoal Burner
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Charcoal:
- material: COAL
- amount: 600
- durability: 1
- recipes:
- - Smelt_Oak_Wood
- - Smelt_Spruce_Wood
- - Smelt_Birch_Wood
- - Smelt_Jungle_Wood
- - Burn_Acacia_Wood
- - Burn_Dark_Oak_Wood
- - Smelt_Coal
- repair_multiple: 60
- repair_inputs:
- Charcoal:
- material: COAL
- durability: 1
- Diamond_Axe_Smithy:
- name: Diamond Axe Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Diamond:
- material: DIAMOND
- amount: 64
- recipes:
- - Diamond_Axe
- repair_multiple: 7
- repair_inputs:
- Diamond:
- material: DIAMOND
- Diamond_Boots_Smithy:
- name: Diamond Boots Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Diamond:
- material: DIAMOND
- amount: 160
- recipes:
- - Diamond_Boots
- repair_multiple: 16
- repair_inputs:
- Diamond:
- material: DIAMOND
- Diamond_Cauldron:
- name: Diamond Cauldron
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Diamond:
- material: DIAMOND
- amount: 50
- recipes:
- - Diamond_XP_Bottle_0
- - Diamond_XP_Bottle_1
- - Diamond_XP_Bottle_2
- - Diamond_XP_Bottle_3
- repair_multiple: 5
- repair_inputs:
- Diamond:
- material: DIAMOND
- Diamond_Chestplate_Smithy:
- name: Diamond Chestplate Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Diamond:
- material: DIAMOND
- amount: 320
- recipes:
- - Diamond_Chestplate
- repair_multiple: 32
- repair_inputs:
- Diamond:
- material: DIAMOND
- Diamond_Helmet_Smithy:
- name: Diamond Helmet Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Diamond:
- material: DIAMOND
- amount: 192
- recipes:
- - Diamond_Helmet
- repair_multiple: 20
- repair_inputs:
- Diamond:
- material: DIAMOND
- Diamond_Hoe_Smithy:
- name: Diamond Hoe Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Diamond:
- material: DIAMOND
- amount: 32
- recipes:
- - Diamond_Hoe
- repair_multiple: 4
- repair_inputs:
- Diamond:
- material: DIAMOND
- Diamond_Leggings_Smithy:
- name: Diamond Leggings Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Diamond:
- material: DIAMOND
- amount: 256
- recipes:
- - Diamond_Leggings
- repair_multiple: 26
- repair_inputs:
- Diamond:
- material: DIAMOND
- Diamond_Pickaxe_Smithy:
- name: Diamond Pickaxe Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Diamond:
- material: DIAMOND
- amount: 96
- recipes:
- - Diamond_Pickaxe
- repair_multiple: 10
- repair_inputs:
- Diamond:
- material: DIAMOND
- Diamond_Spade_Smithy:
- name: Diamond Spade Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Diamond:
- material: DIAMOND
- amount: 48
- recipes:
- - Diamond_Spade
- repair_multiple: 5
- repair_inputs:
- Diamond:
- material: DIAMOND
- Diamond_Sword_Smithy:
- name: Diamond Sword Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Diamond:
- material: DIAMOND
- amount: 80
- recipes:
- - Diamond_Sword
- repair_multiple: 8
- repair_inputs:
- Diamond:
- material: DIAMOND
- Glass_Smelter:
- name: Glass Smelter
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Sand:
- material: SAND
- amount: 2048
- Charcoal:
- material: COAL
- amount: 256
- durability: 1
- recipes:
- - Smelt_Glass
- - Smelt_Sandstone
- - Smelt_Glass_Panes
- - Smelt_Bottles
- - Smelt_Red_Sand
- - Smelt_Glass_From_Sandstone
- repair_multiple: 26
- repair_inputs:
- Sand:
- material: SAND
- amount: 8
- Charcoal:
- material: COAL
- durability: 1
- Nether_Brick_Smelter:
- name: Nether Brick Smelter
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Netherrack:
- material: NETHERRACK
- amount: 2048
- Charcoal:
- material: COAL
- amount: 256
- durability: 1
- recipes:
- - Smelt_Nether_bricks
- repair_multiple: 26
- repair_inputs:
- Netherrack:
- material: NETHERRACK
- amount: 8
- Charcoal:
- material: COAL
- durability: 1
- Kiln:
- name: Kiln
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Clay:
- material: CLAY
- amount: 1280
- Charcoal:
- material: COAL
- amount: 256
- durability: 1
- recipes:
- - Bake_clay_blocks
- - Bake_bricks
- - Bake_pots
- repair_multiple: 26
- repair_inputs:
- Clay:
- material: CLAY
- amount: 8
- Charcoal:
- material: COAL
- durability: 1
- Gold_Axe_Smithy:
- name: Gold Axe Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 64
- recipes:
- - Gold_Axe
- repair_multiple: 7
- repair_inputs:
- Gold Ingot:
- material: GOLD_INGOT
- Gold_Boots_Smithy:
- name: Gold Boots Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 160
- recipes:
- - Gold_Boots
- repair_multiple: 16
- repair_inputs:
- Gold Ingot:
- material: GOLD_INGOT
- Gold_Chestplate_Smithy:
- name: Gold Chestplate Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 320
- recipes:
- - Gold_Chestplate
- repair_multiple: 32
- repair_inputs:
- Gold Ingot:
- material: GOLD_INGOT
- Gold_Helmet_Smithy:
- name: Gold Helmet Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 192
- recipes:
- - Gold_Helmet
- repair_multiple: 20
- repair_inputs:
- Gold Ingot:
- material: GOLD_INGOT
- Gold_Hoe_Smithy:
- name: Gold Hoe Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 32
- recipes:
- - Gold_Hoe
- repair_multiple: 4
- repair_inputs:
- Gold Ingot:
- material: GOLD_INGOT
- Gold_Leggings_Smithy:
- name: Gold Leggings Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 256
- recipes:
- - Gold_Leggings
- repair_multiple: 26
- repair_inputs:
- Gold Ingot:
- material: GOLD_INGOT
- Gold_Pickaxe_Smithy:
- name: Gold Pickaxe Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 96
- recipes:
- - Gold_Pickaxe
- repair_multiple: 10
- repair_inputs:
- Gold Ingot:
- material: GOLD_INGOT
- Gold_Spade_Smithy:
- name: Gold Spade Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 48
- recipes:
- - Gold_Spade
- repair_multiple: 5
- repair_inputs:
- Gold Ingot:
- material: GOLD_INGOT
- Gold_Sword_Smithy:
- name: Gold Sword Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 80
- recipes:
- - Gold_Sword
- repair_multiple: 8
- repair_inputs:
- Gold Ingot:
- material: GOLD_INGOT
- Gray_Wool_Processing:
- name: Gray Wool Processing
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Lapis Lazuli:
- material: INK_SACK
- amount: 20
- durability: 4
- Gray Dye:
- material: INK_SACK
- amount: 20
- durability: 8
- Cocoa:
- material: INK_SACK
- amount: 20
- durability: 3
- Purple Dye:
- material: INK_SACK
- amount: 20
- durability: 5
- Dandelion Yellow:
- material: INK_SACK
- amount: 20
- durability: 11
- Ink Sack:
- material: INK_SACK
- amount: 20
- Magenta Dye:
- material: INK_SACK
- amount: 20
- durability: 13
- Pink Dye:
- material: INK_SACK
- amount: 20
- durability: 9
- Cyan Dye:
- material: INK_SACK
- amount: 20
- durability: 6
- Orange Dye:
- material: INK_SACK
- amount: 20
- durability: 14
- Cactus Green:
- material: INK_SACK
- amount: 20
- durability: 2
- Bone Meal:
- material: INK_SACK
- amount: 20
- durability: 15
- Light Gray Dye:
- material: INK_SACK
- amount: 20
- durability: 7
- Light Blue Dye:
- material: INK_SACK
- amount: 20
- durability: 12
- Rose Red:
- material: INK_SACK
- amount: 20
- durability: 1
- Lime Dye:
- material: INK_SACK
- amount: 20
- durability: 10
- Gray Wool:
- material: WOOL
- amount: 20
- durability: 7
- recipes:
- - Dye_Gray_Wool_Blue
- - Dye_Gray_Wool_Brown
- - Dye_Gray_Wool_Purple
- - Dye_Gray_Wool_Yellow
- - Dye_Gray_Wool_Black
- - Dye_Gray_Wool_Magenta
- - Dye_Gray_Wool_Pink
- - Dye_Gray_Wool_Cyan
- - Dye_Gray_Wool_Orange
- - Dye_Gray_Wool_Green
- - Dye_Gray_Wool_White
- - Dye_Gray_Wool_Light_Gray
- - Dye_Gray_Wool_Light_Blue
- - Dye_Gray_Wool_Red
- - Dye_Gray_Wool_Lime
- repair_multiple: 2
- repair_inputs:
- Lapis Lazuli:
- material: INK_SACK
- durability: 4
- Gray Dye:
- material: INK_SACK
- durability: 8
- Cocoa:
- material: INK_SACK
- durability: 3
- Purple Dye:
- material: INK_SACK
- durability: 5
- Dandelion Yellow:
- material: INK_SACK
- durability: 11
- Ink Sack:
- material: INK_SACK
- Magenta Dye:
- material: INK_SACK
- durability: 13
- Pink Dye:
- material: INK_SACK
- durability: 9
- Cyan Dye:
- material: INK_SACK
- durability: 6
- Orange Dye:
- material: INK_SACK
- durability: 14
- Cactus Green:
- material: INK_SACK
- durability: 2
- Bone Meal:
- material: INK_SACK
- durability: 15
- Light Gray Dye:
- material: INK_SACK
- durability: 7
- Light Blue Dye:
- material: INK_SACK
- durability: 12
- Rose Red:
- material: INK_SACK
- durability: 1
- Lime Dye:
- material: INK_SACK
- durability: 10
- Gray Wool:
- material: WOOL
- durability: 7
- Grill:
- name: Grill
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Cooked Chicken:
- material: COOKED_CHICKEN
- amount: 192
- Cooked Fish:
- material: COOKED_FISH
- amount: 16
- Cooked Salmon:
- material: COOKED_FISH
- amount: 16
- durability: 1
- Grilled Pork:
- material: GRILLED_PORK
- amount: 160
- Cooked Beef:
- material: COOKED_BEEF
- amount: 64
- recipes:
- - Cooked_Chicken
- - Cooked_Fish
- - Grilled_Pork
- - Cooked_Beef
- - Cook_Salmon
- - Bastion_Rations
- repair_multiple: 2
- repair_inputs:
- Cooked Chicken:
- material: COOKED_CHICKEN
- amount: 10
- Cooked Fish:
- material: COOKED_FISH
- Cooked Salmon:
- material: COOKED_FISH
- durability: 1
- Grilled Pork:
- material: GRILLED_PORK
- amount: 8
- Cooked Beef:
- material: COOKED_BEEF
- amount: 4
- Iron_Axe_Smithy:
- name: Iron Axe Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 64
- recipes:
- - Iron_Axe
- repair_multiple: 7
- repair_inputs:
- Iron Ingot:
- material: IRON_INGOT
- Iron_Boots_Smithy:
- name: Iron Boots Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 160
- recipes:
- - Iron_Boots
- repair_multiple: 16
- repair_inputs:
- Iron Ingot:
- material: IRON_INGOT
- Iron_Cauldron:
- name: Iron Cauldron
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 200
- recipes:
- - Iron_XP_Bottle_0
- - Iron_XP_Bottle_1
- - Iron_XP_Bottle_2
- - Iron_XP_Bottle_3
- - Bastion_Smaragdus_Polisher
- repair_multiple: 20
- repair_inputs:
- Iron Ingot:
- material: IRON_INGOT
- Iron_Chestplate_Smithy:
- name: Iron Chestplate Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 320
- recipes:
- - Iron_Chestplate
- repair_multiple: 32
- repair_inputs:
- Iron Ingot:
- material: IRON_INGOT
- Iron_Helmet_Smithy:
- name: Iron Helmet Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 192
- recipes:
- - Iron_Helmet
- repair_multiple: 20
- repair_inputs:
- Iron Ingot:
- material: IRON_INGOT
- Iron_Hoe_Smithy:
- name: Iron Hoe Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 32
- recipes:
- - Iron_Hoe
- repair_multiple: 4
- repair_inputs:
- Iron Ingot:
- material: IRON_INGOT
- Iron_Leggings_Smithy:
- name: Iron Leggings Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 256
- recipes:
- - Iron_Leggings
- repair_multiple: 26
- repair_inputs:
- Iron Ingot:
- material: IRON_INGOT
- Iron_Pickaxe_Smithy:
- name: Iron Pickaxe Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 96
- recipes:
- - Iron_Pickaxe
- repair_multiple: 10
- repair_inputs:
- Iron Ingot:
- material: IRON_INGOT
- Iron_Spade_Smithy:
- name: Iron Spade Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 48
- recipes:
- - Iron_Spade
- repair_multiple: 5
- repair_inputs:
- Iron Ingot:
- material: IRON_INGOT
- Iron_Sword_Smithy:
- name: Iron Sword Smithy
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 80
- recipes:
- - Iron_Sword
- repair_multiple: 8
- repair_inputs:
- Iron Ingot:
- material: IRON_INGOT
- Light_Gray_Wool_Processing:
- name: Light Gray Wool Processing
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Lapis Lazuli:
- material: INK_SACK
- amount: 20
- durability: 4
- Gray Dye:
- material: INK_SACK
- amount: 20
- durability: 8
- Cocoa:
- material: INK_SACK
- amount: 20
- durability: 3
- Purple Dye:
- material: INK_SACK
- amount: 20
- durability: 5
- Dandelion Yellow:
- material: INK_SACK
- amount: 20
- durability: 11
- Ink Sack:
- material: INK_SACK
- amount: 20
- Magenta Dye:
- material: INK_SACK
- amount: 20
- durability: 13
- Pink Dye:
- material: INK_SACK
- amount: 20
- durability: 9
- Cyan Dye:
- material: INK_SACK
- amount: 20
- durability: 6
- Orange Dye:
- material: INK_SACK
- amount: 20
- durability: 14
- Cactus Green:
- material: INK_SACK
- amount: 20
- durability: 2
- Bone Meal:
- material: INK_SACK
- amount: 20
- durability: 15
- Light Gray Dye:
- material: INK_SACK
- amount: 20
- durability: 7
- Light Blue Dye:
- material: INK_SACK
- amount: 20
- durability: 12
- Rose Red:
- material: INK_SACK
- amount: 20
- durability: 1
- Lime Dye:
- material: INK_SACK
- amount: 20
- durability: 10
- Light Gray Wool:
- material: WOOL
- amount: 20
- durability: 8
- recipes:
- - Dye_Light_Gray_Wool_Blue
- - Dye_Light_Gray_Wool_Gray
- - Dye_Light_Gray_Wool_Brown
- - Dye_Light_Gray_Wool_Purple
- - Dye_Light_Gray_Wool_Yellow
- - Dye_Light_Gray_Wool_Black
- - Dye_Light_Gray_Wool_Magenta
- - Dye_Light_Gray_Wool_Pink
- - Dye_Light_Gray_Wool_Cyan
- - Dye_Light_Gray_Wool_Orange
- - Dye_Light_Gray_Wool_Green
- - Dye_Light_Gray_Wool_White
- - Dye_Light_Gray_Wool_Light_Blue
- - Dye_Light_Gray_Wool_Red
- - Dye_Light_Gray_Wool_Lime
- repair_multiple: 2
- repair_inputs:
- Lapis Lazuli:
- material: INK_SACK
- durability: 4
- Gray Dye:
- material: INK_SACK
- durability: 8
- Cocoa:
- material: INK_SACK
- durability: 3
- Purple Dye:
- material: INK_SACK
- durability: 5
- Dandelion Yellow:
- material: INK_SACK
- durability: 11
- Ink Sack:
- material: INK_SACK
- Magenta Dye:
- material: INK_SACK
- durability: 13
- Pink Dye:
- material: INK_SACK
- durability: 9
- Cyan Dye:
- material: INK_SACK
- durability: 6
- Orange Dye:
- material: INK_SACK
- durability: 14
- Cactus Green:
- material: INK_SACK
- durability: 2
- Bone Meal:
- material: INK_SACK
- durability: 15
- Light Gray Dye:
- material: INK_SACK
- durability: 7
- Light Blue Dye:
- material: INK_SACK
- durability: 12
- Rose Red:
- material: INK_SACK
- durability: 1
- Lime Dye:
- material: INK_SACK
- durability: 10
- Light Gray Wool:
- material: WOOL
- durability: 8
- Pink_Wool_Processing:
- name: Pink Wool Processing
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Lapis Lazuli:
- material: INK_SACK
- amount: 20
- durability: 4
- Gray Dye:
- material: INK_SACK
- amount: 20
- durability: 8
- Cocoa:
- material: INK_SACK
- amount: 20
- durability: 3
- Purple Dye:
- material: INK_SACK
- amount: 20
- durability: 5
- Dandelion Yellow:
- material: INK_SACK
- amount: 20
- durability: 11
- Ink Sack:
- material: INK_SACK
- amount: 20
- Magenta Dye:
- material: INK_SACK
- amount: 20
- durability: 13
- Pink Dye:
- material: INK_SACK
- amount: 20
- durability: 9
- Cyan Dye:
- material: INK_SACK
- amount: 20
- durability: 6
- Orange Dye:
- material: INK_SACK
- amount: 20
- durability: 14
- Cactus Green:
- material: INK_SACK
- amount: 20
- durability: 2
- Bone Meal:
- material: INK_SACK
- amount: 20
- durability: 15
- Light Gray Dye:
- material: INK_SACK
- amount: 20
- durability: 7
- Light Blue Dye:
- material: INK_SACK
- amount: 20
- durability: 12
- Rose Red:
- material: INK_SACK
- amount: 20
- durability: 1
- Lime Dye:
- material: INK_SACK
- amount: 20
- durability: 10
- Pink Wool:
- material: WOOL
- amount: 20
- durability: 6
- recipes:
- - Dye_Pink_Wool_Blue
- - Dye_Pink_Wool_Gray
- - Dye_Pink_Wool_Brown
- - Dye_Pink_Wool_Purple
- - Dye_Pink_Wool_Yellow
- - Dye_Pink_Wool_Black
- - Dye_Pink_Wool_Magenta
- - Dye_Pink_Wool_Cyan
- - Dye_Pink_Wool_Orange
- - Dye_Pink_Wool_Green
- - Dye_Pink_Wool_White
- - Dye_Pink_Wool_Light_Gray
- - Dye_Pink_Wool_Light_Blue
- - Dye_Pink_Wool_Red
- - Dye_Pink_Wool_Lime
- repair_multiple: 2
- repair_inputs:
- Lapis Lazuli:
- material: INK_SACK
- durability: 4
- Gray Dye:
- material: INK_SACK
- durability: 8
- Cocoa:
- material: INK_SACK
- durability: 3
- Purple Dye:
- material: INK_SACK
- durability: 5
- Dandelion Yellow:
- material: INK_SACK
- durability: 11
- Ink Sack:
- material: INK_SACK
- Magenta Dye:
- material: INK_SACK
- durability: 13
- Pink Dye:
- material: INK_SACK
- durability: 9
- Cyan Dye:
- material: INK_SACK
- durability: 6
- Orange Dye:
- material: INK_SACK
- durability: 14
- Cactus Green:
- material: INK_SACK
- durability: 2
- Bone Meal:
- material: INK_SACK
- durability: 15
- Light Gray Dye:
- material: INK_SACK
- durability: 7
- Light Blue Dye:
- material: INK_SACK
- durability: 12
- Rose Red:
- material: INK_SACK
- durability: 1
- Lime Dye:
- material: INK_SACK
- durability: 10
- Pink Wool:
- material: WOOL
- durability: 6
- Rail_Factory:
- name: Rail Factory
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 320
- Stick:
- material: STICK
- amount: 128
- Gold Ingot:
- material: GOLD_INGOT
- amount: 192
- Redstone:
- material: REDSTONE
- amount: 32
- recipes:
- - Produce_Rail
- - Produce_Powered_Rail
- - Produce_Detector_Rail
- - Produce_Activator_Rail
- - Produce_Minecarts
- repair_multiple: 4
- repair_inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 7
- Stick:
- material: STICK
- amount: 3
- Gold Ingot:
- material: GOLD_INGOT
- amount: 5
- Redstone:
- material: REDSTONE
- Horse_Factory:
- name: Animal Husbandry Factory
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Iron Block:
- material: IRON_BLOCK
- amount: 64
- Hay Bale:
- material: HAY_BLOCK
- amount: 64
- Golden Apple:
- material: GOLDEN_APPLE
- amount: 64
- Slime ball:
- material: SLIME_BALL
- amount: 16
- recipes:
- - Produce_Saddle
- - Produce_Diamond_Horse_Armor
- - Produce_Gold_Horse_Armor
- - Produce_Iron_Horse_Armor
- - Produce_Leads
- - Produce_Donkey_Chest
- repair_multiple: 6
- repair_inputs:
- Iron Block:
- material: IRON_BLOCK
- Hay Bale:
- material: HAY_BLOCK
- Golden Apple:
- material: GOLDEN_APPLE
- amount: 1
- durability: 0
- Basic_Redstone_Factory:
- name: Basic Redstone Mechanism Factory
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Redstone:
- material: REDSTONE
- amount: 960
- Stick:
- material: STICK
- amount: 512
- Stone:
- material: STONE
- amount: 576
- Netherquartz:
- material: QUARTZ
- amount: 256
- Glass:
- material: GLASS
- amount: 128
- recipes:
- - Produce_Redstone_Torches
- - Produce_Repeaters
- - Produce_Comparators
- - Produce_Daylight_Sensors
- repair_multiple: 10
- repair_inputs:
- Netherquartz:
- material: QUARTZ
- amount: 25
- Glass:
- material: GLASS
- amount: 12
- Redstone:
- material: REDSTONE
- amount: 9
- Advanced_Redstone_Factory:
- name: Advanced Redstone Mechanism Factory
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Redstone:
- material: REDSTONE
- amount: 960
- Chest:
- material: CHEST
- amount: 72
- Glowstone:
- material: GLOWSTONE
- amount: 256
- Iron Ingot:
- material: IRON_INGOT
- amount: 576
- Slime ball:
- material: SLIME_BALL
- amount: 64
- Diamond:
- material: DIAMOND
- amount: 64
- recipes:
- - Produce_Noteblocks
- - Produce_Dispensers
- - Produce_Redstone_lamps
- - Produce_Pistons
- - Produce_Sticky_Pistons
- - Produce_Jukeboxes
- - Produce_Hoppers
- repair_multiple: 10
- repair_inputs:
- Redstone:
- material: REDSTONE
- amount: 9
- Glowstone:
- material: GLOWSTONE
- amount: 2
- Iron Ingot:
- material: IRON_INGOT
- amount: 6
- Slime ball:
- material: SLIME_BALL
- amount: 1
- Carpentry_factory:
- name: Carpentry factory
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Paper:
- material: PAPER
- amount: 384
- Chest:
- material: CHEST
- amount: 128
- Leather:
- material: LEATHER
- amount: 128
- recipes:
- - Craft_Fences
- - Craft_Boats
- - Craft_Signs
- - Craft_Ladders
- - Craft_Trap_Doors
- - Craft_Item_Frames
- - Craft_Bookshelfs
- - Bastion_Framing
- repair_multiple: 10
- repair_inputs:
- Paper:
- material: PAPER
- amount: 4
- Chest:
- material: CHEST
- amount: 1
- Leather:
- material: LEATHER
- amount: 1
- Fancy_Ore_Smelter:
- name: Fancy Ore Smelter
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Lapis Lazuli:
- material: INK_SACK
- amount: 1536
- durability: 4
- Redstone:
- material: REDSTONE
- amount: 1152
- Netherquartz:
- material: QUARTZ
- amount: 576
- recipes:
- - Smelt_Lapis_Lazuli_Ore
- - Smelt_Redstone_Ore
- - Smelt_Netherquartz_Ore
- - Bastion_Walls
- repair_multiple: 26
- repair_inputs:
- Lapis Lazuli:
- material: INK_SACK
- amount: 6
- durability: 4
- Redstone:
- material: REDSTONE
- amount: 5
- Netherquartz:
- material: QUARTZ
- amount: 2
- Smelter:
- name: Ore Smelter
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Coal:
- material: COAL
- amount: 512
- Iron Ingot:
- material: IRON_INGOT
- amount: 384
- Gold Ingot:
- material: GOLD_INGOT
- amount: 192
- Diamond:
- material: DIAMOND
- amount: 96
- recipes:
- - Smelt_Coal_Ore
- - Smelt_Iron_Ore
- - Smelt_Gold_Ore
- - Smelt_Diamond_Ore
- - Bastion_Base
- repair_multiple: 10
- repair_inputs:
- Coal:
- material: COAL
- amount: 6
- Iron Ingot:
- material: IRON_INGOT
- amount: 4
- Gold Ingot:
- material: GOLD_INGOT
- amount: 2
- Diamond:
- material: DIAMOND
- Stone_Brick_Smelter:
- name: Fancy Stone Brick Smelter
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Stone Brick:
- material: SMOOTH_BRICK
- amount: 512
- Lapis Lazuli:
- material: INK_SACK
- amount: 256
- durability: 4
- recipes:
- - Smelt_Cracked_Stone_Brick
- - Smelt_Mossy_Stone_Brick
- - Smelt_Chiseled_Stone_Brick
- - Bastion_Flooring
- repair_multiple: 26
- repair_inputs:
- Stone Brick:
- material: SMOOTH_BRICK
- amount: 2
- Lapis Lazuli:
- material: INK_SACK
- durability: 4
- Stone_Smelter:
- name: Stone Smelter
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Stone:
- material: STONE
- amount: 2048
- recipes:
- - Smelt_Stone
- repair_multiple: 205
- repair_inputs:
- Stone:
- material: STONE
- Bio_Lab:
- name: Bio Lab
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Oak Saplings:
- material: SAPLING
- amount: 512
- Grass:
- material: GRASS
- amount: 512
- recipes:
- - Mutate_Spruce_Saplings
- - Mutate_Birch_Saplings
- - Mutate_Jungle_Saplings
- - Mutate_Acacia_Saplings
- - Mutate_Dark_Oak_Saplings
- - Mutate_Podzol
- - Mutate_Grassless_Dirt
- - Sequencing_Sunflower
- - Sequencing_Lilac
- - Sequencing_Double_Tallgrass
- - Sequencing_Large_Fern
- - Sequencing_Rose_Bush
- - Sequencing_Peony
- repair_multiple: 10
- repair_inputs:
- Oak Saplings:
- material: SAPLING
- amount: 5
- Grass:
- material: GRASS
- amount: 5
- Mad_Scientist_Lab:
- name: Mad Scientist Lab
- fuel:
- Emeralds:
- material: EMERALD
- inputs:
- Glass bottles:
- material: GLASS_BOTTLE
- amount: 512
- Pig eggs:
- material: MONSTER_EGG
- durability: 90
- amount: 16
- Villager eggs:
- material: MONSTER_EGG
- durability: 120
- amount: 16
- Squid eggs:
- material: MONSTER_EGG
- durability: 94
- amount: 16
- Horse eggs:
- material: MONSTER_EGG
- durability: 100
- amount: 16
- Silk touch book:
- material: ENCHANTED_BOOK
- amount: 1
- stored_enchantments:
- Silk Touch 1:
- type: SILK_TOUCH
- level: 1
- recipes:
- - Mutate_Pigmen
- - Infect_Zombies
- - Mutate_Skeletons
- - Mutate_Creepers
- - Mutate_Witches
- - Mutate_Spiders
- - Mutate_Cave_Spiders
- - Mutate_Ghasts
- repair_multiple: 2
- repair_inputs:
- Glass_bottles:
- material: GLASS_BOTTLE
- amount: 32
- Pig eggs:
- material: MONSTER_EGG
- durability: 90
- amount: 1
- Villager eggs:
- material: MONSTER_EGG
- durability: 120
- amount: 1
- Squid eggs:
- material: MONSTER_EGG
- durability: 94
- amount: 1
- Horse eggs:
- material: MONSTER_EGG
- durability: 100
- amount: 1
- Explosives_Factory:
- name: Explosives Factory
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Sulphur:
- material: SULPHUR
- amount: 384
- Sand:
- material: SAND
- amount: 384
- Blaze Powder:
- material: BLAZE_POWDER
- amount: 64
- recipes:
- - Produce_TNT
- - Produce_Fire_Charges
- - Produce_Eyes_of_Ender
- - Bastion_Silicon_Tetranitratobihydrotrioxycarbon
- repair_multiple: 10
- repair_inputs:
- Sulphur:
- material: SULPHUR
- amount: 4
- Sand:
- material: SAND
- amount: 4
- Iron_Forge_factory:
- name: Iron Forge
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 1152
- recipes:
- - Forge_Shears
- - Forge_Anvils
- - Forge_Tripwire_Hooks
- - Forge_Iron_Bars
- - Forge_Buckets
- - Forge_Iron_Doors
- - Forge_Flint_And_Steel
- - Bastion_Gearbox
- repair_multiple: 10
- repair_inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 12
- Stained_Clay_Processing:
- name: Stained Clay Processing
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Lapis Lazuli:
- material: INK_SACK
- amount: 20
- durability: 4
- Gray Dye:
- material: INK_SACK
- amount: 20
- durability: 8
- Cocoa:
- material: INK_SACK
- amount: 20
- durability: 3
- Purple Dye:
- material: INK_SACK
- amount: 20
- durability: 5
- Dandelion Yellow:
- material: INK_SACK
- amount: 20
- durability: 11
- Ink Sack:
- material: INK_SACK
- amount: 20
- Magenta Dye:
- material: INK_SACK
- amount: 20
- durability: 13
- Pink Dye:
- material: INK_SACK
- amount: 20
- durability: 9
- Cyan Dye:
- material: INK_SACK
- amount: 20
- durability: 6
- Orange Dye:
- material: INK_SACK
- amount: 20
- durability: 14
- Cactus Green:
- material: INK_SACK
- amount: 20
- durability: 2
- Bone Meal:
- material: INK_SACK
- amount: 20
- durability: 15
- Light Gray Dye:
- material: INK_SACK
- amount: 20
- durability: 7
- Light Blue Dye:
- material: INK_SACK
- amount: 20
- durability: 12
- Rose Red:
- material: INK_SACK
- amount: 20
- durability: 1
- Lime Dye:
- material: INK_SACK
- amount: 20
- durability: 10
- Hardened Clay:
- material: HARD_CLAY
- amount: 20
- recipes:
- - Dye_Blue_Stained_Clay
- - Dye_Brown_Stained_Clay
- - Dye_Purple_Stained_Clay
- - Dye_Yellow_Stained_Clay
- - Dye_Black_Stained_Clay
- - Dye_Magenta_Stained_Clay
- - Dye_Pink_Stained_Clay
- - Dye_Cyan_Stained_Clay
- - Dye_Orange_Stained_Clay
- - Dye_Gray_Stained_Clay
- - Dye_Green_Stained_Clay
- - Dye_White_Stained_Clay
- - Dye_Light_Gray_Stained_Clay
- - Dye_Light_Blue_Stained_Clay
- - Dye_Red_Stained_Clay
- - Dye_Lime_Stained_Clay
- repair_multiple: 2
- repair_inputs:
- Lapis Lazuli:
- material: INK_SACK
- durability: 4
- Gray Dye:
- material: INK_SACK
- durability: 8
- Cocoa:
- material: INK_SACK
- durability: 3
- Purple Dye:
- material: INK_SACK
- durability: 5
- Dandelion Yellow:
- material: INK_SACK
- durability: 11
- Ink Sack:
- material: INK_SACK
- Magenta Dye:
- material: INK_SACK
- durability: 13
- Pink Dye:
- material: INK_SACK
- durability: 9
- Cyan Dye:
- material: INK_SACK
- durability: 6
- Orange Dye:
- material: INK_SACK
- durability: 14
- Cactus Green:
- material: INK_SACK
- durability: 2
- Bone Meal:
- material: INK_SACK
- durability: 15
- Light Gray Dye:
- material: INK_SACK
- durability: 7
- Light Blue Dye:
- material: INK_SACK
- durability: 12
- Rose Red:
- material: INK_SACK
- durability: 1
- Lime Dye:
- material: INK_SACK
- durability: 10
- Hardened Clay:
- material: HARD_CLAY
- Stained_Glass_Processing:
- name: Stained Glass Processing
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Lapis Lazuli:
- material: INK_SACK
- amount: 20
- durability: 4
- Gray Dye:
- material: INK_SACK
- amount: 20
- durability: 8
- Cocoa:
- material: INK_SACK
- amount: 20
- durability: 3
- Purple Dye:
- material: INK_SACK
- amount: 20
- durability: 5
- Dandelion Yellow:
- material: INK_SACK
- amount: 20
- durability: 11
- Ink Sack:
- material: INK_SACK
- amount: 20
- Magenta Dye:
- material: INK_SACK
- amount: 20
- durability: 13
- Pink Dye:
- material: INK_SACK
- amount: 20
- durability: 9
- Cyan Dye:
- material: INK_SACK
- amount: 20
- durability: 6
- Orange Dye:
- material: INK_SACK
- amount: 20
- durability: 14
- Cactus Green:
- material: INK_SACK
- amount: 20
- durability: 2
- Bone Meal:
- material: INK_SACK
- amount: 20
- durability: 15
- Light Gray Dye:
- material: INK_SACK
- amount: 20
- durability: 7
- Light Blue Dye:
- material: INK_SACK
- amount: 20
- durability: 12
- Rose Red:
- material: INK_SACK
- amount: 20
- durability: 1
- Lime Dye:
- material: INK_SACK
- amount: 20
- durability: 10
- Stained Glass:
- material: STAINED_GLASS
- amount: 20
- durability: 7
- Stained Glass Pane:
- material: STAINED_GLASS_PANE
- amount: 20
- durability: 7
- recipes:
- - Dye_Blue_Stained_Glass
- - Dye_Brown_Stained_Glass
- - Dye_Purple_Stained_Glass
- - Dye_Yellow_Stained_Glass
- - Dye_Black_Stained_Glass
- - Dye_Magenta_Stained_Glass
- - Dye_Pink_Stained_Glass
- - Dye_Cyan_Stained_Glass
- - Dye_Orange_Stained_Glass
- - Dye_Gray_Stained_Glass
- - Dye_Green_Stained_Glass
- - Dye_White_Stained_Glass
- - Dye_Light_Gray_Stained_Glass
- - Dye_Light_Blue_Stained_Glass
- - Dye_Red_Stained_Glass
- - Dye_Lime_Stained_Glass
- - Dye_Blue_Stained_Glass_Pane
- - Dye_Brown_Stained_Glass_Pane
- - Dye_Purple_Stained_Glass_Pane
- - Dye_Yellow_Stained_Glass_Pane
- - Dye_Black_Stained_Glass_Pane
- - Dye_Magenta_Stained_Glass_Pane
- - Dye_Pink_Stained_Glass_Pane
- - Dye_Cyan_Stained_Glass_Pane
- - Dye_Orange_Stained_Glass_Pane
- - Dye_Gray_Stained_Glass_Pane
- - Dye_Green_Stained_Glass_Pane
- - Dye_White_Stained_Glass_Pane
- - Dye_Light_Gray_Stained_Glass_Pane
- - Dye_Light_Blue_Stained_Glass_Pane
- - Dye_Red_Stained_Glass_Pane
- - Dye_Lime_Stained_Glass_Pane
- - Bastion_Objet_Dart
- repair_multiple: 2
- repair_inputs:
- Lapis Lazuli:
- material: INK_SACK
- durability: 4
- Gray Dye:
- material: INK_SACK
- durability: 8
- Cocoa:
- material: INK_SACK
- durability: 3
- Purple Dye:
- material: INK_SACK
- durability: 5
- Dandelion Yellow:
- material: INK_SACK
- durability: 11
- Ink Sack:
- material: INK_SACK
- Magenta Dye:
- material: INK_SACK
- durability: 13
- Pink Dye:
- material: INK_SACK
- durability: 9
- Cyan Dye:
- material: INK_SACK
- durability: 6
- Orange Dye:
- material: INK_SACK
- durability: 14
- Cactus Green:
- material: INK_SACK
- durability: 2
- Bone Meal:
- material: INK_SACK
- durability: 15
- Light Gray Dye:
- material: INK_SACK
- durability: 7
- Light Blue Dye:
- material: INK_SACK
- durability: 12
- Rose Red:
- material: INK_SACK
- durability: 1
- Lime Dye:
- material: INK_SACK
- durability: 10
- Gray Stained Glass:
- material: STAINED_GLASS
- durability: 7
- Gray Stained Glass Pane:
- material: STAINED_GLASS_PANE
- durability: 7
- Crystallisation_Factory:
- name: Crystallisation Factory
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Ice:
- material: ICE
- amount: 2048
- Charcoal:
- material: COAL
- amount: 256
- durability: 1
- recipes:
- - Compact_Ice
- - Bastion_Pure_Ice
- repair_multiple: 10
- repair_inputs:
- Ice:
- material: ICE
- amount: 20
- Charcoal:
- material: COAL
- durability: 1
- White_Wool_Processing:
- name: White Wool Processing
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Lapis Lazuli:
- material: INK_SACK
- amount: 20
- durability: 4
- Gray Dye:
- material: INK_SACK
- amount: 20
- durability: 8
- Cocoa:
- material: INK_SACK
- amount: 20
- durability: 3
- Purple Dye:
- material: INK_SACK
- amount: 20
- durability: 5
- Dandelion Yellow:
- material: INK_SACK
- amount: 20
- durability: 11
- Ink Sack:
- material: INK_SACK
- amount: 20
- Magenta Dye:
- material: INK_SACK
- amount: 20
- durability: 13
- Pink Dye:
- material: INK_SACK
- amount: 20
- durability: 9
- Cyan Dye:
- material: INK_SACK
- amount: 20
- durability: 6
- Orange Dye:
- material: INK_SACK
- amount: 20
- durability: 14
- Cactus Green:
- material: INK_SACK
- amount: 20
- durability: 2
- Bone Meal:
- material: INK_SACK
- amount: 20
- durability: 15
- Light Gray Dye:
- material: INK_SACK
- amount: 20
- durability: 7
- Light Blue Dye:
- material: INK_SACK
- amount: 20
- durability: 12
- Rose Red:
- material: INK_SACK
- amount: 20
- durability: 1
- Lime Dye:
- material: INK_SACK
- amount: 20
- durability: 10
- White Wool:
- material: WOOL
- amount: 20
- recipes:
- - Dye_White_Wool_Blue
- - Dye_White_Wool_Gray
- - Dye_White_Wool_Brown
- - Dye_White_Wool_Purple
- - Dye_White_Wool_Yellow
- - Dye_White_Wool_Black
- - Dye_White_Wool_Magenta
- - Dye_White_Wool_Pink
- - Dye_White_Wool_Cyan
- - Dye_White_Wool_Orange
- - Dye_White_Wool_Green
- - Dye_White_Wool_Light_Gray
- - Dye_White_Wool_Light_Blue
- - Dye_White_Wool_Red
- - Dye_White_Wool_Lime
- repair_multiple: 2
- repair_inputs:
- Lapis Lazuli:
- material: INK_SACK
- durability: 4
- Gray Dye:
- material: INK_SACK
- durability: 8
- Cocoa:
- material: INK_SACK
- durability: 3
- Purple Dye:
- material: INK_SACK
- durability: 5
- Dandelion Yellow:
- material: INK_SACK
- durability: 11
- Ink Sack:
- material: INK_SACK
- Magenta Dye:
- material: INK_SACK
- durability: 13
- Pink Dye:
- material: INK_SACK
- durability: 9
- Cyan Dye:
- material: INK_SACK
- durability: 6
- Orange Dye:
- material: INK_SACK
- durability: 14
- Cactus Green:
- material: INK_SACK
- durability: 2
- Bone Meal:
- material: INK_SACK
- durability: 15
- Light Gray Dye:
- material: INK_SACK
- durability: 7
- Light Blue Dye:
- material: INK_SACK
- durability: 12
- Rose Red:
- material: INK_SACK
- durability: 1
- Lime Dye:
- material: INK_SACK
- durability: 10
- White Wool:
- material: WOOL
- Wood_Cauldron:
- name: Wood Cauldron
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Stick:
- material: STICK
- amount: 1024
- recipes:
- - Wood_XP_Bottle_0
- - Wood_XP_Bottle_1
- - Wood_XP_Bottle_2
- - Wood_XP_Bottle_3
- - Wood_XP_Bottle_4
- - Wood_XP_Bottle_5
- repair_multiple: 103
- repair_inputs:
- Stick:
- material: STICK
- Bastion_Factory:
- name: Bastion Factory
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Silicon Tetranitratobihydrotrioxycarbon:
- material: FIREWORK_CHARGE
- amount: 64
- display_name: Silicon Tetranitratobihydrotrioxycarbon
- lore: An item used to create a Bastion Block
- Smaragdus:
- material: EMERALD
- amount: 64
- display_name: Smaragdus
- lore: An item used to create a Bastion Block
- Flooring:
- material: CLAY_BRICK
- amount: 8
- display_name: Flooring
- lore: An item used to create a Bastion Block
- Framing:
- material: STICK
- amount: 8
- display_name: Framing
- lore: An item used to create a Bastion Block
- Gearbox:
- material: WATCH
- amount: 8
- display_name: Gearbox
- lore: An item used to create a Bastion Block
- Base:
- material: IRON_INGOT
- amount: 8
- display_name: Base
- lore: An item used to create a Bastion Block
- Walls:
- material: INK_SACK
- amount: 32
- durablity: 4
- display_name: Walls
- lore: An item used to create a Bastion Block
- recipes:
- - Bastion_Block
- repair_multiple: 16
- repair_inputs:
- Pure Ice:
- material: QUARTZ
- amount: 1
- display_name: Pure Ice
- lore: An item used to repair the Bastion Factory
- Silicon Tetranitratobihydrotrioxycarbon:
- material: FIREWORK_CHARGE
- amount: 1
- display_name: Silicon Tetranitratobihydrotrioxycarbon
- lore: An item used to create a Bastion Block
- Smaragdus:
- material: EMERALD
- amount: 1
- display_name: Smaragdus
- lore: An item used to create a Bastion Block
-nether_factory:
- name: Nether Factory
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- costs:
- construction:
- Aspect of Nether:
- material: MAGMA_CREAM
- amount: 8
- display_name: Aspect of Nether
- lore: A concentrated essence of the Nether
- Aspect of Terra:
- material: DIAMOND
- amount: 8
- display_name: Aspect of Terra
- lore: A concentrated essence of Terra
- Aspect of END:
- material: FLINT
- amount: 8
- display_name: Aspect of End
- lore: A concentrated essence of the End
- repair:
- Diamond block:
- material: DIAMOND_BLOCK
- amount: 1
- repair_multiple: 1
- fuel_time: 10
- repair_time: 12
- scaling_radius: 5000
- cost_scaling_radius: 5000
- use_fuel_on_teleport: false
-production_recipes:
- Wood_XP_Bottle_0:
- name: Brew XP Bottles - 1
- inputs:
- Glass Bottle:
- material: GLASS_BOTTLE
- amount: 8
- Wheat:
- material: WHEAT
- amount: 1280
- outputs:
- Exp Bottle:
- material: EXP_BOTTLE
- amount: 8
- Baked_Potato:
- name: Bake Potato
- production_time: 24
- inputs:
- Potato:
- material: POTATO_ITEM
- amount: 192
- outputs:
- Baked Potato:
- material: BAKED_POTATO
- amount: 384
- Wood_XP_Bottle_2:
- name: Brew XP Bottles - 3
- inputs:
- Glass Bottle:
- material: GLASS_BOTTLE
- amount: 5
- Baked Potato:
- material: BAKED_POTATO
- amount: 1280
- outputs:
- Exp Bottle:
- material: EXP_BOTTLE
- amount: 5
- Dye_Black_Wool_Cyan:
- name: Dye Black Wool Cyan
- inputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Cyan Dye:
- material: INK_SACK
- amount: 4
- durability: 6
- outputs:
- Cyan Wool:
- material: WOOL
- amount: 64
- durability: 9
- Dye_Light_Gray_Wool_Purple:
- name: Dye Light Gray Wool Purple
- inputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Purple Dye:
- material: INK_SACK
- amount: 4
- durability: 5
- outputs:
- Purple Wool:
- material: WOOL
- amount: 64
- durability: 10
- Dye_Black_Wool_Orange:
- name: Dye Black Wool Orange
- inputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Orange Dye:
- material: INK_SACK
- amount: 4
- durability: 14
- outputs:
- Orange Wool:
- material: WOOL
- amount: 64
- durability: 1
- Dye_Light_Gray_Wool_Green:
- name: Dye Light Gray Wool Green
- inputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Cactus Green:
- material: INK_SACK
- amount: 4
- durability: 2
- outputs:
- Green Wool:
- material: WOOL
- amount: 64
- durability: 13
- Dye_Light_Gray_Wool_Gray:
- name: Dye Light Gray Wool Gray
- inputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Gray Dye:
- material: INK_SACK
- amount: 4
- durability: 8
- outputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Smelt_Diamond_Ore:
- name: Smelt Diamond Ore
- production_time: 1
- inputs:
- Diamond Ore:
- material: DIAMOND_ORE
- amount: 16
- outputs:
- Diamond:
- material: DIAMOND
- amount: 48
- Diamond_XP_Bottle_0:
- name: Brew XP Bottles - 1
- inputs:
- Glass Bottle:
- material: GLASS_BOTTLE
- amount: 128
- Carrot:
- material: CARROT_ITEM
- amount: 96
- Melon Block:
- material: MELON_BLOCK
- amount: 32
- Cactus:
- material: CACTUS
- amount: 256
- Red Rose:
- material: RED_ROSE
- amount: 8
- Rotten Flesh:
- material: ROTTEN_FLESH
- amount: 128
- Red Mushroom:
- material: RED_MUSHROOM
- amount: 32
- Vine:
- material: VINE
- amount: 32
- Bread:
- material: BREAD
- amount: 128
- Grilled Pork:
- material: GRILLED_PORK
- amount: 32
- outputs:
- Exp Bottle:
- material: EXP_BOTTLE
- amount: 128
- Dye_Brown_Wool_Orange:
- name: Dye Brown Wool Orange
- inputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Orange Dye:
- material: INK_SACK
- amount: 4
- durability: 14
- outputs:
- Orange Wool:
- material: WOOL
- amount: 64
- durability: 1
- Smelt_Jungle_Wood:
- name: Burn Jungle Wood
- production_time: 24
- inputs:
- Jungle Wood:
- material: LOG
- amount: 256
- durability: 3
- outputs:
- Charcoal:
- material: COAL
- amount: 512
- durability: 1
- Burn_Acacia_Wood:
- name: Burn Acacia Wood
- production_time: 24
- inputs:
- Acacia Wood:
- material: LOG_2
- amount: 256
- outputs:
- Charcoal:
- material: COAL
- amount: 512
- durability: 1
- Burn_Dark_Oak_Wood:
- name: Burn Dark Oak Wood
- production_time: 24
- inputs:
- Dark Oak Wood:
- material: LOG_2
- amount: 256
- durability: 1
- outputs:
- Charcoal:
- material: COAL
- amount: 512
- durability: 1
- Diamond_Boots:
- name: Forge Diamond Boots.
- production_time: 20
- inputs:
- Diamond:
- material: DIAMOND
- amount: 20
- outputs:
- Diamond Boots:
- material: DIAMOND_BOOTS
- amount: 15
- Dye_Gray_Wool_Black:
- name: Dye Gray Wool Black
- inputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Ink Sack:
- material: INK_SACK
- amount: 4
- outputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Dye_Black_Wool_Brown:
- name: Dye Black Wool Brown
- inputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Cocoa:
- material: INK_SACK
- amount: 4
- durability: 3
- outputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Iron_Boots:
- name: Forge Iron Boots.
- production_time: 20
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 20
- outputs:
- Iron Boots:
- material: IRON_BOOTS
- amount: 15
- Dye_Pink_Wool_Brown:
- name: Dye Pink Wool Brown
- inputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Cocoa:
- material: INK_SACK
- amount: 4
- durability: 3
- outputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Gold_Spade:
- name: Forge Gold Spade.
- production_time: 5
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 5
- outputs:
- Gold Spade:
- material: GOLD_SPADE
- amount: 15
- enchantments:
- Unbreaking 3:
- type: DURABILITY
- level: 3
- Silk Touch 1:
- type: SILK_TOUCH
- level: 1
- probability: 0.1
- Efficiency 1:
- type: DIG_SPEED
- level: 1
- probability: 0.3
- Efficiency 2:
- type: DIG_SPEED
- level: 2
- probability: 0.2
- Efficiency 3:
- type: DIG_SPEED
- level: 3
- probability: 0.1
- Efficiency 4:
- type: DIG_SPEED
- level: 4
- probability: 0.05
- Efficiency 5:
- type: DIG_SPEED
- level: 5
- probability: 0.01
- Dye_Black_Wool_Gray:
- name: Dye Black Wool Gray
- inputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Gray Dye:
- material: INK_SACK
- amount: 4
- durability: 8
- outputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Dye_Gray_Wool_Light_Gray:
- name: Dye Gray Wool Light Gray
- inputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Light Gray Dye:
- material: INK_SACK
- amount: 4
- durability: 7
- outputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Dye_White_Wool_Cyan:
- name: Dye White Wool Cyan
- inputs:
- White Wool:
- material: WOOL
- amount: 64
- Cyan Dye:
- material: INK_SACK
- amount: 4
- durability: 6
- outputs:
- Cyan Wool:
- material: WOOL
- amount: 64
- durability: 9
- Diamond_Hoe:
- name: Forge Diamond Hoe.
- production_time: 10
- inputs:
- Diamond:
- material: DIAMOND
- amount: 10
- outputs:
- Diamond Hoe:
- material: DIAMOND_HOE
- amount: 30
- Gold_Chestplate:
- name: Forge Gold Chestplate.
- production_time: 40
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 40
- outputs:
- Gold Chestplate:
- material: GOLD_CHESTPLATE
- amount: 15
- durability: -218
- enchantments:
- Unbreaking 3:
- type: DURABILITY
- level: 3
- Blast Protection 1:
- type: PROTECTION_EXPLOSIONS
- level: 1
- probability: 0.5
- Blast Protection 2:
- type: PROTECTION_EXPLOSIONS
- level: 2
- probability: 0.4
- Blast Protection 3:
- type: PROTECTION_EXPLOSIONS
- level: 3
- probability: 0.3
- Blast Protection 4:
- type: PROTECTION_EXPLOSIONS
- level: 4
- probability: 0.4
- Fire Protection 1:
- type: PROTECTION_FIRE
- level: 1
- probability: 0.5
- Fire Protection 2:
- type: PROTECTION_FIRE
- level: 2
- probability: 0.4
- Fire Protection 3:
- type: PROTECTION_FIRE
- level: 3
- probability: 0.3
- Fire Protection 4:
- type: PROTECTION_FIRE
- level: 4
- probability: 0.4
- Projectile Protection 1:
- type: PROTECTION_PROJECTILE
- level: 1
- probability: 0.5
- Projectile Protection 2:
- type: PROTECTION_PROJECTILE
- level: 2
- probability: 0.4
- Projectile Protection 3:
- type: PROTECTION_PROJECTILE
- level: 3
- probability: 0.3
- Projectile Protection 4:
- type: PROTECTION_PROJECTILE
- level: 4
- probability: 0.4
- Dye_Light_Gray_Wool_Light_Blue:
- name: Dye Light Gray Wool Light Blue
- inputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Light Blue Dye:
- material: INK_SACK
- amount: 4
- durability: 12
- outputs:
- Light Blue Wool:
- material: WOOL
- amount: 64
- durability: 3
- Dye_Brown_Wool_Cyan:
- name: Dye Brown Wool Cyan
- inputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Cyan Dye:
- material: INK_SACK
- amount: 4
- durability: 6
- outputs:
- Cyan Wool:
- material: WOOL
- amount: 64
- durability: 9
- Iron_XP_Bottle_1:
- name: Brew XP Bottles - 2
- inputs:
- Glass Bottle:
- material: GLASS_BOTTLE
- amount: 14
- Carrot:
- material: CARROT_ITEM
- amount: 256
- Nether Wart:
- material: NETHER_STALK
- amount: 256
- Baked Potato:
- material: BAKED_POTATO
- amount: 256
- outputs:
- Exp Bottle:
- material: EXP_BOTTLE
- amount: 14
- Dye_White_Wool_Red:
- name: Dye White Wool Red
- inputs:
- White Wool:
- material: WOOL
- amount: 64
- Rose Red:
- material: INK_SACK
- amount: 4
- durability: 1
- outputs:
- Red Wool:
- material: WOOL
- amount: 64
- durability: 14
- Dye_Brown_Wool_Purple:
- name: Dye Brown Wool Purple
- inputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Purple Dye:
- material: INK_SACK
- amount: 4
- durability: 5
- outputs:
- Purple Wool:
- material: WOOL
- amount: 64
- durability: 10
- Dye_White_Wool_Purple:
- name: Dye White Wool Purple
- inputs:
- White Wool:
- material: WOOL
- amount: 64
- Purple Dye:
- material: INK_SACK
- amount: 4
- durability: 5
- outputs:
- Purple Wool:
- material: WOOL
- amount: 64
- durability: 10
- Wood_XP_Bottle_4:
- name: Brew XP Bottles - 5
- inputs:
- Glass Bottle:
- material: GLASS_BOTTLE
- amount: 6
- Carrot:
- material: CARROT_ITEM
- amount: 1280
- outputs:
- Exp Bottle:
- material: EXP_BOTTLE
- amount: 6
- Wood_XP_Bottle_5:
- name: Brew XP Bottles - 6
- inputs:
- Glass Bottle:
- material: GLASS_BOTTLE
- amount: 8
- Hay Bale:
- material: HAY_BLOCK
- amount: 143
- outputs:
- Exp Bottle:
- material: EXP_BOTTLE
- amount: 8
- Dye_Light_Gray_Wool_Orange:
- name: Dye Light Gray Wool Orange
- inputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Orange Dye:
- material: INK_SACK
- amount: 4
- durability: 14
- outputs:
- Orange Wool:
- material: WOOL
- amount: 64
- durability: 1
- Dye_Black_Wool_Yellow:
- name: Dye Black Wool Yellow
- inputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Dandelion Yellow:
- material: INK_SACK
- amount: 4
- durability: 11
- outputs:
- Yellow Wool:
- material: WOOL
- amount: 64
- durability: 4
- Dye_Light_Gray_Wool_Pink:
- name: Dye Light Gray Wool Pink
- inputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Pink Dye:
- material: INK_SACK
- amount: 4
- durability: 9
- outputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Dye_Light_Gray_Wool_Brown:
- name: Dye Light Gray Wool Brown
- inputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Cocoa:
- material: INK_SACK
- amount: 4
- durability: 3
- outputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Smelt_Spruce_Wood:
- name: Burn Spruce Wood
- production_time: 24
- inputs:
- Spruce Wood:
- material: LOG
- amount: 256
- durability: 1
- outputs:
- Charcoal:
- material: COAL
- amount: 512
- durability: 1
- Dye_Brown_Wool_Magenta:
- name: Dye Brown Wool Magenta
- inputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Magenta Dye:
- material: INK_SACK
- amount: 4
- durability: 13
- outputs:
- Magenta Wool:
- material: WOOL
- amount: 64
- durability: 2
- Dye_White_Wool_Brown:
- name: Dye White Wool Brown
- inputs:
- White Wool:
- material: WOOL
- amount: 64
- Cocoa:
- material: INK_SACK
- amount: 4
- durability: 3
- outputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Dye_Gray_Wool_Lime:
- name: Dye Gray Wool Lime
- inputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Lime Dye:
- material: INK_SACK
- amount: 4
- durability: 10
- outputs:
- Lime Wool:
- material: WOOL
- amount: 64
- durability: 5
- Dye_Light_Gray_Wool_Black:
- name: Dye Light Gray Wool Black
- inputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Ink Sack:
- material: INK_SACK
- amount: 4
- outputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Dye_Brown_Wool_Yellow:
- name: Dye Brown Wool Yellow
- inputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Dandelion Yellow:
- material: INK_SACK
- amount: 4
- durability: 11
- outputs:
- Yellow Wool:
- material: WOOL
- amount: 64
- durability: 4
- Dye_Pink_Wool_White:
- name: Dye Pink Wool White
- inputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Bone Meal:
- material: INK_SACK
- amount: 4
- durability: 15
- outputs:
- White Wool:
- material: WOOL
- amount: 64
- Smelt_Coal_Ore:
- name: Smelt Coal Ore
- production_time: 12
- inputs:
- Coal Ore:
- material: COAL_ORE
- amount: 128
- outputs:
- Coal:
- material: COAL
- amount: 384
- Dye_Brown_Wool_Green:
- name: Dye Brown Wool Green
- inputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Cactus Green:
- material: INK_SACK
- amount: 4
- durability: 2
- outputs:
- Green Wool:
- material: WOOL
- amount: 64
- durability: 13
- Dye_Light_Gray_Wool_Lime:
- name: Dye Light Gray Wool Lime
- inputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Lime Dye:
- material: INK_SACK
- amount: 4
- durability: 10
- outputs:
- Lime Wool:
- material: WOOL
- amount: 64
- durability: 5
- Smelt_Birch_Wood:
- name: Burn Birch Wood
- production_time: 24
- inputs:
- Birch Wood:
- material: LOG
- amount: 256
- durability: 2
- outputs:
- Charcoal:
- material: COAL
- amount: 512
- durability: 1
- Diamond_Sword:
- name: Forge Diamond Sword.
- production_time: 10
- inputs:
- Diamond:
- material: DIAMOND
- amount: 10
- outputs:
- Diamond Sword:
- material: DIAMOND_SWORD
- amount: 15
- Dye_Pink_Wool_Orange:
- name: Dye Pink Wool Orange
- inputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Orange Dye:
- material: INK_SACK
- amount: 4
- durability: 14
- outputs:
- Orange Wool:
- material: WOOL
- amount: 64
- durability: 1
- Dye_Black_Wool_Blue:
- name: Dye Black Wool Blue
- inputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Lapis Lazuli:
- material: INK_SACK
- amount: 4
- durability: 4
- outputs:
- Blue Wool:
- material: WOOL
- amount: 64
- durability: 11
- Dye_Black_Wool_Magenta:
- name: Dye Black Wool Magenta
- inputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Magenta Dye:
- material: INK_SACK
- amount: 4
- durability: 13
- outputs:
- Magenta Wool:
- material: WOOL
- amount: 64
- durability: 2
- Iron_Helmet:
- name: Forge Iron Helmet.
- production_time: 25
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 25
- outputs:
- Iron Helmet:
- material: IRON_HELMET
- amount: 15
- Dye_Gray_Wool_Cyan:
- name: Dye Gray Wool Cyan
- inputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Cyan Dye:
- material: INK_SACK
- amount: 4
- durability: 6
- outputs:
- Cyan Wool:
- material: WOOL
- amount: 64
- durability: 9
- Cooked_Chicken:
- name: Grill Raw Chicken
- production_time: 6
- inputs:
- Raw Chicken:
- material: RAW_CHICKEN
- amount: 64
- outputs:
- Cooked Chicken:
- material: COOKED_CHICKEN
- amount: 128
- Dye_Brown_Wool_Pink:
- name: Dye Brown Wool Pink
- inputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Pink Dye:
- material: INK_SACK
- amount: 4
- durability: 9
- outputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Dye_Black_Wool_White:
- name: Dye Black Wool White
- inputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Bone Meal:
- material: INK_SACK
- amount: 4
- durability: 15
- outputs:
- White Wool:
- material: WOOL
- amount: 64
- Dye_Gray_Wool_Pink:
- name: Dye Gray Wool Pink
- inputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Pink Dye:
- material: INK_SACK
- amount: 4
- durability: 9
- outputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Dye_White_Wool_Pink:
- name: Dye White Wool Pink
- inputs:
- White Wool:
- material: WOOL
- amount: 64
- Pink Dye:
- material: INK_SACK
- amount: 4
- durability: 9
- outputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Dye_Light_Gray_Wool_Yellow:
- name: Dye Light Gray Wool Yellow
- inputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Dandelion Yellow:
- material: INK_SACK
- amount: 4
- durability: 11
- outputs:
- Yellow Wool:
- material: WOOL
- amount: 64
- durability: 4
- Dye_Pink_Wool_Green:
- name: Dye Pink Wool Green
- inputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Cactus Green:
- material: INK_SACK
- amount: 4
- durability: 2
- outputs:
- Green Wool:
- material: WOOL
- amount: 64
- durability: 13
- Dye_White_Wool_Black:
- name: Dye White Wool Black
- inputs:
- White Wool:
- material: WOOL
- amount: 64
- Ink Sack:
- material: INK_SACK
- amount: 4
- outputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Dye_Gray_Wool_Blue:
- name: Dye Gray Wool Blue
- inputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Lapis Lazuli:
- material: INK_SACK
- amount: 4
- durability: 4
- outputs:
- Blue Wool:
- material: WOOL
- amount: 64
- durability: 11
- Gold_Pickaxe:
- name: Forge Gold Pickaxe.
- production_time: 15
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 15
- outputs:
- Gold Pickaxe:
- material: GOLD_PICKAXE
- amount: 15
- enchantments:
- Unbreaking 3:
- type: DURABILITY
- level: 3
- Silk Touch 1:
- type: SILK_TOUCH
- level: 1
- probability: 0.1
- Efficiency 1:
- type: DIG_SPEED
- level: 1
- probability: 0.3
- Efficiency 2:
- type: DIG_SPEED
- level: 2
- probability: 0.2
- Efficiency 3:
- type: DIG_SPEED
- level: 3
- probability: 0.1
- Efficiency 4:
- type: DIG_SPEED
- level: 4
- probability: 0.05
- Efficiency 5:
- type: DIG_SPEED
- level: 5
- probability: 0.01
- Dye_Pink_Wool_Blue:
- name: Dye Pink Wool Blue
- inputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Lapis Lazuli:
- material: INK_SACK
- amount: 4
- durability: 4
- outputs:
- Blue Wool:
- material: WOOL
- amount: 64
- durability: 11
- Dye_Light_Gray_Wool_Cyan:
- name: Dye Light Gray Wool Cyan
- inputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Cyan Dye:
- material: INK_SACK
- amount: 4
- durability: 6
- outputs:
- Cyan Wool:
- material: WOOL
- amount: 64
- durability: 9
- Dye_Pink_Wool_Magenta:
- name: Dye Pink Wool Magenta
- inputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Magenta Dye:
- material: INK_SACK
- amount: 4
- durability: 13
- outputs:
- Magenta Wool:
- material: WOOL
- amount: 64
- durability: 2
- Dye_Light_Gray_Wool_Blue:
- name: Dye Light Gray Wool Blue
- inputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Lapis Lazuli:
- material: INK_SACK
- amount: 4
- durability: 4
- outputs:
- Blue Wool:
- material: WOOL
- amount: 64
- durability: 11
- Dye_White_Wool_Orange:
- name: Dye White Wool Orange
- inputs:
- White Wool:
- material: WOOL
- amount: 64
- Orange Dye:
- material: INK_SACK
- amount: 4
- durability: 14
- outputs:
- Orange Wool:
- material: WOOL
- amount: 64
- durability: 1
- Cooked_Beef:
- name: Cook Beef
- production_time: 6
- inputs:
- Raw Beef:
- material: RAW_BEEF
- amount: 64
- outputs:
- Cooked Beef:
- material: COOKED_BEEF
- amount: 128
- Cook_Salmon:
- name: Cook Salmon
- production_time: 6
- inputs:
- Raw Salmon:
- material: RAW_FISH
- amount: 64
- durability: 1
- outputs:
- Cooked Salmon:
- material: COOKED_FISH
- amount: 128
- durability: 1
- Produce_TNT:
- name: Produce TNT
- production_time: 128
- inputs:
- Sulphur:
- material: SULPHUR
- amount: 128
- Sand:
- material: SAND
- amount: 128
- outputs:
- TNT:
- material: TNT
- amount: 64
- Produce_Fire_Charges:
- name: Produce Fire Charges
- production_time: 128
- inputs:
- Sulphur:
- material: SULPHUR
- amount: 16
- Blaze Powder:
- material: BLAZE_POWDER
- amount: 16
- outputs:
- Fire Charge:
- material: FIREBALL
- amount: 128
- Produce_Eyes_of_Ender:
- name: Produce Eyes of Ender
- production_time: 8
- inputs:
- Ender pearls:
- material: ENDER_PEARL
- amount: 32
- Blaze Powder:
- material: BLAZE_POWDER
- amount: 16
- outputs:
- Eyes of Ender:
- material: EYE_OF_ENDER
- amount: 32
- Dye_White_Wool_Green:
- name: Dye White Wool Green
- inputs:
- White Wool:
- material: WOOL
- amount: 64
- Cactus Green:
- material: INK_SACK
- amount: 4
- durability: 2
- outputs:
- Green Wool:
- material: WOOL
- amount: 64
- durability: 13
- Wood_XP_Bottle_3:
- name: Brew XP Bottles - 4
- inputs:
- Glass Bottle:
- material: GLASS_BOTTLE
- amount: 4
- Cookie:
- material: COOKIE
- amount: 1280
- outputs:
- Exp Bottle:
- material: EXP_BOTTLE
- amount: 4
- Iron_Chestplate:
- name: Forge Iron Chestplate.
- production_time: 40
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 40
- outputs:
- Iron Chestplate:
- material: IRON_CHESTPLATE
- amount: 15
- Dye_Black_Wool_Red:
- name: Dye Black Wool Red
- inputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Rose Red:
- material: INK_SACK
- amount: 4
- durability: 1
- outputs:
- Red Wool:
- material: WOOL
- amount: 64
- durability: 14
- Gold_Leggings:
- name: Forge Gold Leggings.
- production_time: 35
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 35
- outputs:
- Gold Leggings:
- material: GOLD_LEGGINGS
- amount: 15
- durability: -218
- enchantments:
- Unbreaking 3:
- type: DURABILITY
- level: 3
- Blast Protection 1:
- type: PROTECTION_EXPLOSIONS
- level: 1
- probability: 0.5
- Blast Protection 2:
- type: PROTECTION_EXPLOSIONS
- level: 2
- probability: 0.4
- Blast Protection 3:
- type: PROTECTION_EXPLOSIONS
- level: 3
- probability: 0.3
- Blast Protection 4:
- type: PROTECTION_EXPLOSIONS
- level: 4
- probability: 0.4
- Fire Protection 1:
- type: PROTECTION_FIRE
- level: 1
- probability: 0.5
- Fire Protection 2:
- type: PROTECTION_FIRE
- level: 2
- probability: 0.4
- Fire Protection 3:
- type: PROTECTION_FIRE
- level: 3
- probability: 0.3
- Fire Protection 4:
- type: PROTECTION_FIRE
- level: 4
- probability: 0.4
- Projectile Protection 1:
- type: PROTECTION_PROJECTILE
- level: 1
- probability: 0.5
- Projectile Protection 2:
- type: PROTECTION_PROJECTILE
- level: 2
- probability: 0.4
- Projectile Protection 3:
- type: PROTECTION_PROJECTILE
- level: 3
- probability: 0.3
- Projectile Protection 4:
- type: PROTECTION_PROJECTILE
- level: 4
- probability: 0.4
- Dye_White_Wool_Light_Gray:
- name: Dye White Wool Light Gray
- inputs:
- White Wool:
- material: WOOL
- amount: 64
- Light Gray Dye:
- material: INK_SACK
- amount: 4
- durability: 7
- outputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Dye_Gray_Wool_Green:
- name: Dye Gray Wool Green
- inputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Cactus Green:
- material: INK_SACK
- amount: 4
- durability: 2
- outputs:
- Green Wool:
- material: WOOL
- amount: 64
- durability: 13
- Diamond_Chestplate:
- name: Forge Diamond Chestplate.
- production_time: 40
- inputs:
- Diamond:
- material: DIAMOND
- amount: 40
- outputs:
- Diamond Chestplate:
- material: DIAMOND_CHESTPLATE
- amount: 15
- Dye_Light_Gray_Wool_Magenta:
- name: Dye Light Gray Wool Magenta
- inputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Magenta Dye:
- material: INK_SACK
- amount: 4
- durability: 13
- outputs:
- Magenta Wool:
- material: WOOL
- amount: 64
- durability: 2
- Dye_Brown_Wool_Light_Gray:
- name: Dye Brown Wool Light Gray
- inputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Light Gray Dye:
- material: INK_SACK
- amount: 4
- durability: 7
- outputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Iron_Leggings:
- name: Forge Iron Leggings.
- production_time: 35
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 35
- outputs:
- Iron Leggings:
- material: IRON_LEGGINGS
- amount: 15
- Diamond_XP_Bottle_1:
- name: Brew XP Bottles - 2
- inputs:
- Glass Bottle:
- material: GLASS_BOTTLE
- amount: 128
- Nether Wart:
- material: NETHER_STALK
- amount: 64
- Melon Block:
- material: MELON_BLOCK
- amount: 32
- Sugar Cane:
- material: SUGAR_CANE
- amount: 128
- Yellow Flower:
- material: YELLOW_FLOWER
- amount: 16
- Rotten Flesh:
- material: ROTTEN_FLESH
- amount: 128
- Brown Mushroom:
- material: BROWN_MUSHROOM
- amount: 64
- Vine:
- material: VINE
- amount: 32
- Baked Potato:
- material: BAKED_POTATO
- amount: 256
- Cooked Chicken:
- material: COOKED_CHICKEN
- amount: 16
- outputs:
- Exp Bottle:
- material: EXP_BOTTLE
- amount: 128
- Diamond_XP_Bottle_2:
- name: Brew XP Bottles - 3
- inputs:
- Glass Bottle:
- material: GLASS_BOTTLE
- amount: 128
- Wheat:
- material: WHEAT
- amount: 128
- Cocoa:
- material: INK_SACK
- amount: 16
- durability: 3
- Pumpkin:
- material: PUMPKIN
- amount: 128
- Cactus:
- material: CACTUS
- amount: 256
- Red Rose:
- material: RED_ROSE
- amount: 8
- Spider Eye:
- material: SPIDER_EYE
- amount: 32
- Red Mushroom:
- material: RED_MUSHROOM
- amount: 16
- Grass:
- material: LONG_GRASS
- amount: 32
- durability: 1
- Cooked Fish:
- material: COOKED_FISH
- amount: 16
- outputs:
- Exp Bottle:
- material: EXP_BOTTLE
- amount: 128
- Diamond_XP_Bottle_3:
- name: Brew XP Bottles - 4
- inputs:
- Glass Bottle:
- material: GLASS_BOTTLE
- amount: 128
- Nether Wart:
- material: NETHER_STALK
- amount: 64
- Pumpkin:
- material: PUMPKIN
- amount: 128
- Sugar Cane:
- material: SUGAR_CANE
- amount: 128
- Yellow Flower:
- material: YELLOW_FLOWER
- amount: 16
- Spider Eye:
- material: SPIDER_EYE
- amount: 32
- Brown Mushroom:
- material: BROWN_MUSHROOM
- amount: 64
- Grass:
- material: LONG_GRASS
- amount: 64
- durability: 1
- Cookie:
- material: COOKIE
- amount: 256
- Cooked Beef:
- material: COOKED_BEEF
- amount: 32
- outputs:
- Exp Bottle:
- material: EXP_BOTTLE
- amount: 128
- Dye_White_Wool_Gray:
- name: Dye White Wool Gray
- inputs:
- White Wool:
- material: WOOL
- amount: 64
- Gray Dye:
- material: INK_SACK
- amount: 4
- durability: 8
- outputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Iron_Spade:
- name: Forge Iron Spade.
- production_time: 5
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 5
- outputs:
- Iron Spade:
- material: IRON_SPADE
- amount: 15
- Dye_Brown_Wool_Light_Blue:
- name: Dye Brown Wool Light Blue
- inputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Light Blue Dye:
- material: INK_SACK
- amount: 4
- durability: 12
- outputs:
- Light Blue Wool:
- material: WOOL
- amount: 64
- durability: 3
- Dye_White_Wool_Lime:
- name: Dye White Wool Lime
- inputs:
- White Wool:
- material: WOOL
- amount: 64
- Lime Dye:
- material: INK_SACK
- amount: 4
- durability: 10
- outputs:
- Lime Wool:
- material: WOOL
- amount: 64
- durability: 5
- Dye_Black_Wool_Light_Gray:
- name: Dye Black Wool Light Gray
- inputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Light Gray Dye:
- material: INK_SACK
- amount: 4
- durability: 7
- outputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Dye_White_Wool_Blue:
- name: Dye White Wool Blue
- inputs:
- White Wool:
- material: WOOL
- amount: 64
- Lapis Lazuli:
- material: INK_SACK
- amount: 4
- durability: 4
- outputs:
- Blue Wool:
- material: WOOL
- amount: 64
- durability: 11
- Dye_Brown_Wool_White:
- name: Dye Brown Wool White
- inputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Bone Meal:
- material: INK_SACK
- amount: 4
- durability: 15
- outputs:
- White Wool:
- material: WOOL
- amount: 64
- Dye_Pink_Wool_Purple:
- name: Dye Pink Wool Purple
- inputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Purple Dye:
- material: INK_SACK
- amount: 4
- durability: 5
- outputs:
- Purple Wool:
- material: WOOL
- amount: 64
- durability: 10
- Dye_Pink_Wool_Cyan:
- name: Dye Pink Wool Cyan
- inputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Cyan Dye:
- material: INK_SACK
- amount: 4
- durability: 6
- outputs:
-
- Cyan Wool:
- material: WOOL
- amount: 64
- durability: 9
- Dye_Light_Gray_Wool_Red:
- name: Dye Light Gray Wool Red
- inputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Rose Red:
- material: INK_SACK
- amount: 4
- durability: 1
- outputs:
- Red Wool:
- material: WOOL
- amount: 64
- durability: 14
- Iron_Axe:
- name: Forge Iron Axe.
- production_time: 15
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 15
- outputs:
- Iron Axe:
- material: IRON_AXE
- amount: 30
- Bake_Cookie:
- name: Bake Cocoa
- production_time: 24
- inputs:
- Wheat:
- material: WHEAT
- amount: 256
- Cocoa:
- material: INK_SACK
- amount: 128
- durability: 3
- outputs:
- Cookie:
- material: COOKIE
- amount: 2048
- Dye_White_Wool_Light_Blue:
- name: Dye White Wool Light Blue
- inputs:
- White Wool:
- material: WOOL
- amount: 64
- Light Blue Dye:
- material: INK_SACK
- amount: 4
- durability: 12
- outputs:
- Light Blue Wool:
- material: WOOL
- amount: 64
- durability: 3
- Dye_White_Wool_Yellow:
- name: Dye White Wool Yellow
- inputs:
- White Wool:
- material: WOOL
- amount: 64
- Dandelion Yellow:
- material: INK_SACK
- amount: 4
- durability: 11
- outputs:
- Yellow Wool:
- material: WOOL
- amount: 64
- durability: 4
- Dye_Light_Gray_Wool_White:
- name: Dye Light Gray Wool White
- inputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Bone Meal:
- material: INK_SACK
- amount: 4
- durability: 15
- outputs:
- White Wool:
- material: WOOL
- amount: 64
- Bake_Bread:
- name: Bake Wheat
- production_time: 24
- inputs:
- Wheat:
- material: WHEAT
- amount: 384
- outputs:
- Bread:
- material: BREAD
- amount: 256
- Bake_Cake:
- name: Bake Cake
- production_time: 24
- inputs:
- Sugar:
- material: SUGAR
- amount: 36
- Egg:
- material: EGG
- amount: 13
- Wheat:
- material: WHEAT
- amount: 54
- Milk Bucket:
- material: MILK_BUCKET
- amount: 18
- outputs:
- Cake:
- material: CAKE
- amount: 24
- Bucket:
- material: BUCKET
- amount: 18
- Bake_Pumpkin_Pie:
- name: Bake Pumpkin Pie
- production_time: 24
- inputs:
- Sugar:
- material: SUGAR
- amount: 192
- Egg:
- material: EGG
- amount: 192
- Pumpkin:
- material: PUMPKIN
- amount: 192
- outputs:
- Pumpkin_Pie:
- material: PUMPKIN_PIE
- amount: 256
- Smelt_Glass:
- name: Smelt Glass
- production_time: 48
- inputs:
- Sand:
- material: SAND
- amount: 256
- outputs:
- Glass:
- material: GLASS
- amount: 768
- Smelt_Nether_bricks:
- name: Smelt Nether bricks
- production_time: 32
- inputs:
- Netherrack:
- material: NETHERRACK
- amount: 512
- outputs:
- Nether bricks:
- material: NETHER_BRICK_ITEM
- amount: 1024
- Bake_clay_blocks:
- name: Bake Clay Blocks
- production_time: 32
- inputs:
- Clay:
- material: CLAY
- amount: 512
- outputs:
- Hardened Clay:
- material: HARD_CLAY
- amount: 1024
- Bake_bricks:
- name: Bake Bricks
- production_time: 32
- inputs:
- Clay:
- material: CLAY_BALL
- amount: 512
- outputs:
- Bricks:
- material: CLAY_BRICK
- amount: 1024
- Bake_pots:
- name: Bake Flowerpots
- production_time: 5
- inputs:
- Clay:
- material: CLAY_BALL
- amount: 64
- outputs:
- Flower Pots:
- material: FLOWER_POT_ITEM
- amount: 64
- Smelt_Sandstone:
- name: Smelt Sandstone
- production_time: 32
- inputs:
- Sand:
- material: SAND
- amount: 512
- outputs:
- Sandstone:
- material: SANDSTONE
- amount: 384
- Smelt_Glass_Panes:
- name: Smelt Glass Panes
- production_time: 32
- inputs:
- Glass:
- material: GLASS
- amount: 192
- outputs:
- Glass Pane:
- material: THIN_GLASS
- amount: 768
- Smelt_Bottles:
- name: Smelt Bottles
- production_time: 64
- inputs:
- Sand:
- material: SAND
- amount: 256
- outputs:
- Bottle:
- material: GLASS_BOTTLE
- amount: 768
- Smelt_Red_Sand:
- name: Smelt Red Sand
- production_time: 16
- inputs:
- Sand:
- material: SAND
- amount: 64
- outputs:
- Red Sand:
- material: SAND
- amount: 64
- durability: 1
- Smelt_Glass_From_Sandstone:
- name: Smelt Glass From Sandstone
- production_time: 32
- inputs:
- Sandstone:
- material: SANDSTONE
- amount: 512
- outputs:
- Glass:
- material: GLASS
- amount: 768
- production_time: 6
- Smelt_Lapis_Lazuli_Ore:
- name: Smelt Lapis Lazuli Ore
- production_time: 6
- inputs:
- Lapis Ore:
- material: LAPIS_ORE
- amount: 32
- outputs:
- Lapis Lazuli:
- material: INK_SACK
- amount: 512
- durability: 4
- Smelt_Redstone_Ore:
- name: Smelt Redstone Ore
- production_time: 16
- inputs:
- Redstone Ore:
- material: REDSTONE_ORE
- amount: 128
- outputs:
- Redstone:
- material: REDSTONE
- amount: 1024
- Smelt_Netherquartz_Ore:
- name: Smelt Netherquartz ore
- production_time: 6
- inputs:
- Netherquartz ore:
- material: QUARTZ_ORE
- amount: 64
- outputs:
- Quartz:
- material: QUARTZ
- amount: 192
- Dye_Brown_Wool_Gray:
- name: Dye Brown Wool Gray
- inputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Gray Dye:
- material: INK_SACK
- amount: 4
- durability: 8
- outputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Diamond_Helmet:
- name: Forge Diamond Helmet.
- production_time: 25
- inputs:
- Diamond:
- material: DIAMOND
- amount: 25
- outputs:
- Diamond Helmet:
- material: DIAMOND_HELMET
- amount: 15
- Produce_Rail:
- name: Produce Rails
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 128
- Stick:
- material: STICK
- amount: 16
- outputs:
- Rail:
- material: RAILS
- amount: 576
- Produce_Redstone_Torches:
- name: Produce Redstone Torches
- inputs:
- Redstone:
- material: REDSTONE
- amount: 128
- Stick:
- material: STICK
- amount: 128
- outputs:
- Redstone Torches:
- material: REDSTONE_TORCH_ON
- amount: 256
- Produce_Repeaters:
- name: Produce Repeaters
- inputs:
- Redstone:
- material: REDSTONE
- amount: 128
- Stone:
- material: STONE
- amount: 128
- outputs:
- Redstone Torches:
- material: DIODE
- amount: 96
- Produce_Comparators:
- name: Produce Comparators
- inputs:
- Redstone:
- material: REDSTONE
- amount: 32
- Stone:
- material: STONE
- amount: 128
- Netherquartz:
- material: QUARTZ
- amount: 24
- outputs:
- Comparators:
- material: REDSTONE_COMPARATOR
- amount: 32
- Produce_Daylight_Sensors:
- name: Produce Daylight Sensors
- inputs:
- Chest:
- material: CHEST
- amount: 4
- Glass:
- material: GLASS
- amount: 64
- Netherquartz:
- material: QUARTZ
- amount: 64
- outputs:
- Daylight sensors:
- material: DAYLIGHT_DETECTOR
- amount: 32
- Produce_Noteblocks:
- name: Produce Noteblocks
- inputs:
- Chest:
- material: CHEST
- amount: 48
- Redstone:
- material: REDSTONE
- amount: 32
- outputs:
- Noteblocks:
- material: NOTE_BLOCK
- amount: 64
- Produce_Dispensers:
- name: Produce Dispensers
- inputs:
- Cobblestone:
- material: COBBLESTONE
- amount: 320
- Redstone:
- material: REDSTONE
- amount: 32
- String:
- material: STRING
- amount: 128
- Chest:
- material: CHEST
- amount: 4
- outputs:
- Dispensers:
- material: DISPENSER
- amount: 64
- Produce_Redstone_lamps:
- name: Produce Redstone lamps
- inputs:
- Glowstone:
- material: GLOWSTONE
- amount: 128
- Redstone:
- material: REDSTONE
- amount: 256
- outputs:
- Redstone lamps:
- material: REDSTONE_LAMP_OFF
- amount: 128
- Produce_Pistons:
- name: Produce Pistons
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 128
- Chest:
- material: CHEST
- amount: 32
- Cobblestone:
- material: COBBLESTONE
- amount: 320
- Redstone:
- material: REDSTONE
- amount: 48
- outputs:
- Pistons:
- material: PISTON_BASE
- amount: 128
- Produce_Sticky_Pistons:
- name: Produce Sticky Pistons
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 32
- Chest:
- material: CHEST
- amount: 8
- Redstone:
- material: REDSTONE
- amount: 12
- Slime Ball:
- material: SLIME_BALL
- amount: 16
- outputs:
- Pistons:
- material: PISTON_STICKY_BASE
- amount: 32
- Produce_Jukeboxes:
- name: Produce Jukeboxes
- production_time: 16
- inputs:
- Chest:
- material: CHEST
- amount: 32
- Diamond:
- material: DIAMOND
- amount: 48
- outputs:
- Jukebox:
- material: JUKEBOX
- amount: 64
- Produce_Hoppers:
- name: Produce_Hoppers
- production_time: 16
- inputs:
- Chest:
- material: CHEST
- amount: 32
- Iron Ingot:
- material: IRON_INGOT
- amount: 192
- outputs:
- Hopper:
- material: HOPPER
- amount: 64
- Smelt_Gold_Ore:
- name: Smelt Gold Ore
- production_time: 3
- inputs:
- Gold Ore:
- material: GOLD_ORE
- amount: 32
- outputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 224
- Dye_Gray_Wool_Brown:
- name: Dye Gray Wool Brown
- inputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Cocoa:
- material: INK_SACK
- amount: 4
- durability: 3
- outputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Iron_Pickaxe:
- name: Forge Iron Pickaxe.
- production_time: 15
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 15
- outputs:
- Iron Pickaxe:
- material: IRON_PICKAXE
- amount: 15
- Dye_Black_Wool_Pink:
- name: Dye Black Wool Pink
- inputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Pink Dye:
- material: INK_SACK
- amount: 4
- durability: 9
- outputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Dye_Gray_Wool_Orange:
- name: Dye Gray Wool Orange
- inputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Orange Dye:
- material: INK_SACK
- amount: 4
- durability: 14
- outputs:
- Orange Wool:
- material: WOOL
- amount: 64
- durability: 1
- Smelt_Cracked_Stone_Brick:
- name: Smelt Cracked Stone Brick
- production_time: 64
- inputs:
- Stone Brick:
- material: SMOOTH_BRICK
- amount: 64
- Lapis Lazuli:
- material: INK_SACK
- amount: 32
- durability: 4
- Flint:
- material: FLINT
- amount: 64
- outputs:
- Cracked Stone Brick:
- material: SMOOTH_BRICK
- amount: 64
- durability: 2
- Iron_XP_Bottle_0:
- name: Brew XP Bottles - 1
- inputs:
- Glass Bottle:
- material: GLASS_BOTTLE
- amount: 24
- Carrot:
- material: CARROT_ITEM
- amount: 256
- Cactus:
- material: CACTUS
- amount: 256
- Bread:
- material: BREAD
- amount: 256
- outputs:
- Exp Bottle:
- material: EXP_BOTTLE
- amount: 24
- Iron_XP_Bottle_3:
- name: Brew XP Bottles - 4
- inputs:
- Glass Bottle:
- material: GLASS_BOTTLE
- amount: 42
- Nether Wart:
- material: NETHER_STALK
- amount: 256
- Melon Block:
- material: MELON_BLOCK
- amount: 64
- Sugar Cane:
- material: SUGAR_CANE
- amount: 64
- Cookie:
- material: COOKIE
- amount: 512
- Baked Potato:
- material: BAKED_POTATO
- amount: 64
- Grilled Pork:
- material: GRILLED_PORK
- amount: 64
- outputs:
- Exp Bottle:
- material: EXP_BOTTLE
- amount: 42
- Iron_XP_Bottle_2:
- name: Brew XP Bottles - 3
- inputs:
- Glass Bottle:
- material: GLASS_BOTTLE
- amount: 42
- Carrot:
- material: CARROT_ITEM
- amount: 128
- Cocoa:
- material: INK_SACK
- amount: 64
- durability: 3
- Pumpkin:
- material: PUMPKIN
- amount: 64
- Cactus:
- material: CACTUS
- amount: 64
- Bread:
- material: BREAD
- amount: 64
- Cooked Beef:
- material: COOKED_BEEF
- amount: 32
- outputs:
- Exp Bottle:
- material: EXP_BOTTLE
- amount: 42
- Diamond_Leggings:
- name: Forge Diamond Leggings.
- production_time: 35
- inputs:
- Diamond:
- material: DIAMOND
- amount: 35
- outputs:
- Diamond Leggings:
- material: DIAMOND_LEGGINGS
- amount: 15
- Dye_Gray_Wool_Red:
- name: Dye Gray Wool Red
- inputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Rose Red:
- material: INK_SACK
- amount: 4
- durability: 1
- outputs:
- Red Wool:
- material: WOOL
- amount: 64
- durability: 14
- Dye_Pink_Wool_Light_Gray:
- name: Dye Pink Wool Light Gray
- inputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Light Gray Dye:
- material: INK_SACK
- amount: 4
- durability: 7
- outputs:
- Light Gray Wool:
- material: WOOL
- amount: 64
- durability: 8
- Iron_Sword:
- name: Forge Iron Sword.
- production_time: 10
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 10
- outputs:
- Iron Sword:
- material: IRON_SWORD
- amount: 15
- Dye_Gray_Wool_Purple:
- name: Dye Gray Wool Purple
- inputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Purple Dye:
- material: INK_SACK
- amount: 4
- durability: 5
- outputs:
- Purple Wool:
- material: WOOL
- amount: 64
- durability: 10
- Dye_Black_Wool_Green:
- name: Dye Black Wool Green
- inputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Cactus Green:
- material: INK_SACK
- amount: 4
- durability: 2
- outputs:
- Green Wool:
- material: WOOL
- amount: 64
- durability: 13
- Dye_Brown_Wool_Red:
- name: Dye Brown Wool Red
- inputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Rose Red:
- material: INK_SACK
- amount: 4
- durability: 1
- outputs:
- Red Wool:
- material: WOOL
- amount: 64
- durability: 14
- Dye_Pink_Wool_Light_Blue:
- name: Dye Pink Wool Light Blue
- inputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Light Blue Dye:
- material: INK_SACK
- amount: 4
- durability: 12
- outputs:
- Light Blue Wool:
- material: WOOL
- amount: 64
- durability: 3
- Gold_Hoe:
- name: Forge Gold Hoe.
- production_time: 10
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 10
- outputs:
- Gold Hoe:
- material: GOLD_HOE
- amount: 30
- enchantments:
- Unbreaking 3:
- type: DURABILITY
- level: 3
- Gold_Sword:
- name: Forge Gold Sword.
- production_time: 10
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 10
- outputs:
- Gold Sword:
- material: GOLD_SWORD
- amount: 15
- enchantments:
- Unbreaking 3:
- type: DURABILITY
- level: 3
- Bane of the Anthropods 1:
- type: DAMAGE_ARTHROPODS
- level: 1
- probability: 0.4
- Bane of the Anthropods 2:
- type: DAMAGE_ARTHROPODS
- level: 2
- probability: 0.3
- Bane of the Anthropods 3:
- type: DAMAGE_ARTHROPODS
- level: 3
- probability: 0.2
- Bane of the Anthropods 4:
- type: DAMAGE_ARTHROPODS
- level: 4
- probability: 0.1
- Bane of the Anthropods 5:
- type: DAMAGE_ARTHROPODS
- level: 5
- probability: 0.3
- Smite 1:
- type: DAMAGE_UNDEAD
- level: 1
- probability: 0.4
- Smite 2:
- type: DAMAGE_UNDEAD
- level: 2
- probability: 0.3
- Smite 3:
- type: DAMAGE_UNDEAD
- level: 3
- probability: 0.2
- Smite 4:
- type: DAMAGE_UNDEAD
- level: 4
- probability: 0.1
- Smite 5:
- type: DAMAGE_UNDEAD
- level: 5
- probability: 0.05
- Looting 1:
- type: LOOT_BONUS_MOBS
- level: 1
- probability: 0.5
- Looting 2:
- type: LOOT_BONUS_MOBS
- level: 2
- probability: 0.4
- Looting 3:
- type: LOOT_BONUS_MOBS
- level: 3
- probability: 0.3
- Smelt_Chiseled_Stone_Brick:
- name: Smelt Chiseled Stone Brick
- production_time: 64
- inputs:
- Stone Brick:
- material: SMOOTH_BRICK
- amount: 64
- Lapis Lazuli:
- material: INK_SACK
- amount: 32
- durability: 4
- Gravel:
- material: GRAVEL
- amount: 64
- outputs:
- Chiseled Stone Brick:
- material: SMOOTH_BRICK
- amount: 64
- durability: 3
- Diamond_Pickaxe:
- name: Forge Diamond Pickaxe.
- production_time: 15
- inputs:
- Diamond:
- material: DIAMOND
- amount: 15
- outputs:
- Diamond Pickaxe:
- material: DIAMOND_PICKAXE
- amount: 15
- Smelt_Mossy_Stone_Brick:
- name: Smelt Mossy Stone Brick
- production_time: 64
- inputs:
- Stone Brick:
- material: SMOOTH_BRICK
- amount: 64
- Lapis Lazuli:
- material: INK_SACK
- amount: 32
- durability: 4
- Vine:
- material: VINE
- amount: 64
- outputs:
- Mossy Stone Brick:
- material: SMOOTH_BRICK
- amount: 64
- durability: 1
- Dye_White_Wool_Magenta:
- name: Dye White Wool Magenta
- inputs:
- White Wool:
- material: WOOL
- amount: 64
- Magenta Dye:
- material: INK_SACK
- amount: 4
- durability: 13
- outputs:
- Magenta Wool:
- material: WOOL
- amount: 64
- durability: 2
- Iron_Hoe:
- name: Forge Iron Hoe.
- production_time: 10
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 10
- outputs:
- Iron Hoe:
- material: IRON_HOE
- amount: 30
- Wood_XP_Bottle_1:
- name: Brew XP Bottles - 2
- inputs:
- Glass Bottle:
- material: GLASS_BOTTLE
- amount: 4
- Nether Wart:
- material: NETHER_STALK
- amount: 1280
- outputs:
- Exp Bottle:
- material: EXP_BOTTLE
- amount: 4
- Dye_Pink_Wool_Gray:
- name: Dye Pink Wool Gray
- inputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Gray Dye:
- material: INK_SACK
- amount: 4
- durability: 8
- outputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Dye_Pink_Wool_Red:
- name: Dye Pink Wool Red
- inputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Rose Red:
- material: INK_SACK
- amount: 4
- durability: 1
- outputs:
- Red Wool:
- material: WOOL
- amount: 64
- durability: 14
- Dye_Black_Wool_Purple:
- name: Dye Black Wool Purple
- inputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Purple Dye:
- material: INK_SACK
- amount: 4
- durability: 5
- outputs:
- Purple Wool:
- material: WOOL
- amount: 64
- durability: 10
- Dye_Gray_Wool_Light_Blue:
- name: Dye Gray Wool Light Blue
- inputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Light Blue Dye:
- material: INK_SACK
- amount: 4
- durability: 12
- outputs:
- Light Blue Wool:
- material: WOOL
- amount: 64
- durability: 3
- Smelt_Coal:
- name: Burn Coal
- production_time: 24
- inputs:
- Coal:
- material: COAL
- amount: 256
- outputs:
- Charcoal:
- material: COAL
- amount: 512
- durability: 1
- Gold_Axe:
- name: Forge Gold Axe.
- production_time: 15
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 15
- outputs:
- Gold Axe:
- material: GOLD_AXE
- amount: 30
- enchantments:
- Unbreaking 3:
- type: DURABILITY
- level: 3
- Silk Touch 1:
- type: SILK_TOUCH
- level: 1
- probability: 0.1
- Efficiency 1:
- type: DIG_SPEED
- level: 1
- probability: 0.3
- Efficiency 2:
- type: DIG_SPEED
- level: 2
- probability: 0.2
- Efficiency 3:
- type: DIG_SPEED
- level: 3
- probability: 0.1
- Efficiency 4:
- type: DIG_SPEED
- level: 4
- probability: 0.05
- Efficiency 5:
- type: DIG_SPEED
- level: 5
- probability: 0.01
- Bane of the Anthropods 1:
- type: DAMAGE_ARTHROPODS
- level: 1
- probability: 0.4
- Bane of the Anthropods 2:
- type: DAMAGE_ARTHROPODS
- level: 2
- probability: 0.3
- Bane of the Anthropods 3:
- type: DAMAGE_ARTHROPODS
- level: 3
- probability: 0.2
- Bane of the Anthropods 4:
- type: DAMAGE_ARTHROPODS
- level: 4
- probability: 0.1
- Bane of the Anthropods 5:
- type: DAMAGE_ARTHROPODS
- level: 5
- probability: 0.3
- Smite 1:
- type: DAMAGE_UNDEAD
- level: 1
- probability: 0.4
- Smite 2:
- type: DAMAGE_UNDEAD
- level: 2
- probability: 0.3
- Smite 3:
- type: DAMAGE_UNDEAD
- level: 3
- probability: 0.2
- Smite 4:
- type: DAMAGE_UNDEAD
- level: 4
- probability: 0.1
- Smite 5:
- type: DAMAGE_UNDEAD
- level: 5
- probability: 0.05
- Looting 1:
- type: LOOT_BONUS_MOBS
- level: 1
- probability: 0.5
- Looting 2:
- type: LOOT_BONUS_MOBS
- level: 2
- probability: 0.4
- Looting 3:
- type: LOOT_BONUS_MOBS
- level: 3
- probability: 0.3
- Cooked_Fish:
- name: Grill Raw Fish
- production_time: 6
- inputs:
- Raw Fish:
- material: RAW_FISH
- amount: 64
- outputs:
- Cooked Fish:
- material: COOKED_FISH
- amount: 256
- Dye_Pink_Wool_Black:
- name: Dye Pink Wool Black
- inputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Ink Sack:
- material: INK_SACK
- amount: 4
- outputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Diamond_Spade:
- name: Forge Diamond Spade.
- production_time: 5
- inputs:
- Diamond:
- material: DIAMOND
- amount: 5
- outputs:
- Diamond Spade:
- material: DIAMOND_SPADE
- amount: 15
- Dye_Pink_Wool_Yellow:
- name: Dye Pink Wool Yellow
- inputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Dandelion Yellow:
- material: INK_SACK
- amount: 4
- durability: 11
- outputs:
- Yellow Wool:
- material: WOOL
- amount: 64
- durability: 4
- Smelt_Iron_Ore:
- name: Smelt Iron Ore
- production_time: 12
- inputs:
- Iron Ore:
- material: IRON_ORE
- amount: 128
- outputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 224
- Produce_Powered_Rail:
- name: Produce Powered Rails
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 72
- Redstone:
- material: REDSTONE
- amount: 8
- Stick:
- material: STICK
- amount: 8
- outputs:
- Powered Rail:
- material: POWERED_RAIL
- amount: 128
- Produce_Detector_Rail:
- name: Produce Detector Rails
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 18
- Redstone:
- material: REDSTONE
- amount: 2
- outputs:
- Detector Rail:
- material: DETECTOR_RAIL
- amount: 32
- Produce_Activator_Rail:
- name: Produce Activator Rails
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 18
- Redstone:
- material: REDSTONE
- amount: 2
- Stick:
- material: STICK
- amount: 8
- outputs:
- Activator Rail:
- material: ACTIVATOR_RAIL
- amount: 32
- Produce_Minecarts:
- name: Produce Minecarts
- production_time: 16
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 64
- outputs:
- Minecart:
- material: MINECART
- amount: 27
- Gold_Helmet:
- name: Forge Gold Helmet.
- production_time: 25
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 25
- outputs:
- Gold Helmet:
- material: GOLD_HELMET
- amount: 15
- durability: -218
- enchantments:
- Unbreaking 3:
- type: DURABILITY
- level: 3
- Respiration 1:
- type: OXYGEN
- level: 1
- probability: 0.5
- Respiration 2:
- type: OXYGEN
- level: 2
- probability: 0.4
- Respiration 3:
- type: OXYGEN
- level: 3
- probability: 0.3
- Blast Protection 1:
- type: PROTECTION_EXPLOSIONS
- level: 1
- probability: 0.5
- Blast Protection 2:
- type: PROTECTION_EXPLOSIONS
- level: 2
- probability: 0.4
- Blast Protection 3:
- type: PROTECTION_EXPLOSIONS
- level: 3
- probability: 0.3
- Blast Protection 4:
- type: PROTECTION_EXPLOSIONS
- level: 4
- probability: 0.4
- Fire Protection 1:
- type: PROTECTION_FIRE
- level: 1
- probability: 0.5
- Fire Protection 2:
- type: PROTECTION_FIRE
- level: 2
- probability: 0.4
- Fire Protection 3:
- type: PROTECTION_FIRE
- level: 3
- probability: 0.3
- Fire Protection 4:
- type: PROTECTION_FIRE
- level: 4
- probability: 0.4
- Projectile Protection 1:
- type: PROTECTION_PROJECTILE
- level: 1
- probability: 0.5
- Projectile Protection 2:
- type: PROTECTION_PROJECTILE
- level: 2
- probability: 0.4
- Projectile Protection 3:
- type: PROTECTION_PROJECTILE
- level: 3
- probability: 0.3
- Projectile Protection 4:
- type: PROTECTION_PROJECTILE
- level: 4
- probability: 0.4
- Dye_Brown_Wool_Black:
- name: Dye Brown Wool Black
- inputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Ink Sack:
- material: INK_SACK
- amount: 4
- outputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Dye_Brown_Wool_Lime:
- name: Dye Brown Wool Lime
- inputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Lime Dye:
- material: INK_SACK
- amount: 4
- durability: 10
- outputs:
- Lime Wool:
- material: WOOL
- amount: 64
- durability: 5
- Gold_Boots:
- name: Forge Gold Boots.
- production_time: 20
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 20
- outputs:
- Gold Boots:
- material: GOLD_BOOTS
- amount: 15
- durability: -218
- enchantments:
- Unbreaking 3:
- type: DURABILITY
- level: 3
- Blast Protection 1:
- type: PROTECTION_EXPLOSIONS
- level: 1
- probability: 0.5
- Blast Protection 2:
- type: PROTECTION_EXPLOSIONS
- level: 2
- probability: 0.4
- Blast Protection 3:
- type: PROTECTION_EXPLOSIONS
- level: 3
- probability: 0.3
- Blast Protection 4:
- type: PROTECTION_EXPLOSIONS
- level: 4
- probability: 0.4
- Feather Falling 1:
- type: PROTECTION_FALL
- level: 1
- probability: 0.5
- Feather Falling 2:
- type: PROTECTION_FALL
- level: 2
- probability: 0.4
- Feather Falling 3:
- type: PROTECTION_FALL
- level: 3
- probability: 0.3
- Feather Falling 4:
- type: PROTECTION_FALL
- level: 4
- probability: 0.4
- Fire Protection 1:
- type: PROTECTION_FIRE
- level: 1
- probability: 0.5
- Fire Protection 2:
- type: PROTECTION_FIRE
- level: 2
- probability: 0.4
- Fire Protection 3:
- type: PROTECTION_FIRE
- level: 3
- probability: 0.3
- Fire Protection 4:
- type: PROTECTION_FIRE
- level: 4
- probability: 0.4
- Projectile Protection 1:
- type: PROTECTION_PROJECTILE
- level: 1
- probability: 0.5
- Projectile Protection 2:
- type: PROTECTION_PROJECTILE
- level: 2
- probability: 0.4
- Projectile Protection 3:
- type: PROTECTION_PROJECTILE
- level: 3
- probability: 0.3
- Projectile Protection 4:
- type: PROTECTION_PROJECTILE
- level: 4
- probability: 0.4
- Dye_Gray_Wool_Yellow:
- name: Dye Gray Wool Yellow
- inputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Dandelion Yellow:
- material: INK_SACK
- amount: 4
- durability: 11
- outputs:
- Yellow Wool:
- material: WOOL
- amount: 64
- durability: 4
- Dye_Pink_Wool_Lime:
- name: Dye Pink Wool Lime
- inputs:
- Pink Wool:
- material: WOOL
- amount: 64
- durability: 6
- Lime Dye:
- material: INK_SACK
- amount: 4
- durability: 10
- outputs:
- Lime Wool:
- material: WOOL
- amount: 64
- durability: 5
- Dye_Gray_Wool_Magenta:
- name: Dye Gray Wool Magenta
- inputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Magenta Dye:
- material: INK_SACK
- amount: 4
- durability: 13
- outputs:
- Magenta Wool:
- material: WOOL
- amount: 64
- durability: 2
- Dye_Brown_Wool_Blue:
- name: Dye Brown Wool Blue
- inputs:
- Brown Wool:
- material: WOOL
- amount: 64
- durability: 12
- Lapis Lazuli:
- material: INK_SACK
- amount: 4
- durability: 4
- outputs:
- Blue Wool:
- material: WOOL
- amount: 64
- durability: 11
- Dye_Black_Wool_Lime:
- name: Dye Black Wool Lime
- inputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Lime Dye:
- material: INK_SACK
- amount: 4
- durability: 10
- outputs:
- Lime Wool:
- material: WOOL
- amount: 64
- durability: 5
- Smelt_Stone:
- name: Smelt Stone
- production_time: 80
- inputs:
- Cobblestone:
- material: COBBLESTONE
- amount: 640
- outputs:
- Stone:
- material: STONE
- amount: 854
- Grilled_Pork:
- name: Grill Pork
- production_time: 6
- inputs:
- Pork:
- material: PORK
- amount: 64
- outputs:
- Grilled Pork:
- material: GRILLED_PORK
- amount: 128
- Dye_Black_Wool_Light_Blue:
- name: Dye Black Wool Light Blue
- inputs:
- Black Wool:
- material: WOOL
- amount: 64
- durability: 15
- Light Blue Dye:
- material: INK_SACK
- amount: 4
- durability: 12
- outputs:
- Light Blue Wool:
- material: WOOL
- amount: 64
- durability: 3
- Dye_Gray_Wool_White:
- name: Dye Gray Wool White
- inputs:
- Gray Wool:
- material: WOOL
- amount: 64
- durability: 7
- Bone Meal:
- material: INK_SACK
- amount: 4
- durability: 15
- outputs:
- White Wool:
- material: WOOL
- amount: 64
- Diamond_Axe:
- name: Forge Diamond Axe.
- production_time: 15
- inputs:
- Diamond:
- material: DIAMOND
- amount: 15
- outputs:
- Diamond Axe:
- material: DIAMOND_AXE
- amount: 30
- Smelt_Oak_Wood:
- name: Burn Oak Wood
- production_time: 24
- inputs:
- Oak Wood:
- material: LOG
- amount: 256
- outputs:
- Charcoal:
- material: COAL
- amount: 512
- durability: 1
- Produce_Saddle:
- name: Produce Saddles
- production_time: 20
- inputs:
- Diamond:
- material: DIAMOND
- amount: 16
- Leather:
- material: LEATHER
- amount: 64
- White Wool:
- material: WOOL
- amount: 64
- outputs:
- Saddle:
- material: SADDLE
- amount: 8
- Produce_Diamond_Horse_Armor:
- name: Produce Diamond Horse Armor
- production_time: 20
- inputs:
- Diamond:
- material: DIAMOND
- amount: 64
- outputs:
- Diamond Horse Armor:
- material: DIAMOND_BARDING
- amount: 1
- Produce_Gold_Horse_Armor:
- name: Produce Gold Horse Armor
- production_time: 20
- inputs:
- Gold Ingot:
- material: GOLD_INGOT
- amount: 64
- outputs:
- Gold Horse Armor:
- material: GOLD_BARDING
- amount: 1
- Produce_Iron_Horse_Armor:
- name: Produce Iron Horse Armor
- production_time: 20
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 64
- outputs:
- Iron Horse Armor:
- material: IRON_BARDING
- amount: 1
- Produce_Leads:
- name: Produce Leads
- inputs:
- Slime Ball:
- material: SLIME_BALL
- amount: 4
- String:
- material: STRING
- amount: 16
- outputs:
- Lead:
- material: LEASH
- amount: 8
- Produce_Donkey_Chest:
- name: Produce Donkey Chest
- inputs:
- Ender Chest:
- material: ENDER_CHEST
- amount: 8
- Saddle:
- material: SADDLE
- amount: 4
- outputs:
- Donkey Double Chest:
- material: CHEST
- amount: 4
- lore: Donkey double chest
- Craft_Fences:
- name: Craft Fences
- production_time: 16
- inputs:
- Chest:
- material: CHEST
- amount: 12
- outputs:
- Fence:
- material: FENCE
- amount: 256
- Craft_Signs:
- name: Craft Signs
- production_time: 16
- inputs:
- Chest:
- material: CHEST
- amount: 8
- outputs:
- Sign:
- material: SIGN
- amount: 64
- Craft_Boats:
- name: Craft Boats
- production_time: 16
- inputs:
- Chest:
- material: CHEST
- amount: 8
- outputs:
- Boat:
- material: BOAT
- amount: 27
- Craft_Ladders:
- name: Craft Ladders
- production_time: 16
- inputs:
- Chest:
- material: CHEST
- amount: 8
- outputs:
- Ladder:
- material: LADDER
- amount: 256
- Craft_Trap_Doors:
- name: Craft Trap Doors
- production_time: 16
- inputs:
- Chest:
- material: CHEST
- amount: 48
- outputs:
- Trap Door:
- material: TRAP_DOOR
- amount: 256
- Craft_Item_Frames:
- name: Craft Item Frames
- production_time: 32
- inputs:
- Chest:
- material: CHEST
- amount: 8
- Leather:
- material: LEATHER
- amount: 48
- outputs:
- Item Frames:
- material: ITEM_FRAME
- amount: 64
- Craft_Bookshelfs:
- name: Craft Bookshelfs
- production_time: 32
- inputs:
- Chest:
- material: CHEST
- amount: 8
- Leather:
- material: LEATHER
- amount: 48
- Paper:
- material: PAPER
- amount: 192
- outputs:
- Bookshelf:
- material: BOOKSHELF
- amount: 64
- Forge_Shears:
- name: Forge Shears
- production_time: 8
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 18
- outputs:
- Shears:
- material: SHEARS
- amount: 18
- Forge_Anvils:
- name: Forge Anvils
- production_time: 64
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 256
- outputs:
- Anvil:
- material: ANVIL
- amount: 16
- Forge_Tripwire_Hooks:
- name: Forge Tripwire Hooks
- production_time: 16
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 16
- outputs:
- Tripwire Hook:
- material: TRIPWIRE_HOOK
- amount: 64
- Forge_Iron_Bars:
- name: Forge Iron Bars
- production_time: 32
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 24
- outputs:
- Iron Bars:
- material: IRON_FENCE
- amount: 256
- Forge_Buckets:
- name: Forge Buckets
- production_time: 32
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 96
- outputs:
- Bucket:
- material: BUCKET
- amount: 64
- Forge_Iron_Doors:
- name: Forge Iron Doors
- production_time: 16
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 54
- outputs:
- Iron Door:
- material: IRON_DOOR
- amount: 18
- Forge_Flint_And_Steel:
- name: Forge Flint and Steel
- production_time: 8
- inputs:
- Iron Ingot:
- material: IRON_INGOT
- amount: 9
- outputs:
- Flint and Steel:
- material: FLINT_AND_STEEL
- amount: 18
- Dye_White_Stained_Glass:
- name: Dye White Stained Glass
- inputs:
- Glass:
- material: GLASS
- amount: 64
- Bone Meal:
- material: INK_SACK
- amount: 4
- durability: 15
- outputs:
- White Stained Glass:
- material: STAINED_GLASS
- amount: 64
- durability: 0
- Dye_Orange_Stained_Glass:
- name: Dye Orange Stained Glass
- inputs:
- Glass:
- material: GLASS
- amount: 64
- Orange Dye:
- material: INK_SACK
- amount: 4
- durability: 14
- outputs:
- Orange Stained Glass:
- material: STAINED_GLASS
- amount: 64
- durability: 1
- Dye_Magenta_Stained_Glass:
- name: Dye Magenta Stained Glass
- inputs:
- Glass:
- material: GLASS
- amount: 64
- Magenta Dye:
- material: INK_SACK
- amount: 4
- durability: 13
- outputs:
- Magenta Stained Glass:
- material: STAINED_GLASS
- amount: 64
- durability: 2
- Dye_Light_Blue_Stained_Glass:
- name: Dye Light Blue Stained Glass
- inputs:
- Glass:
- material: GLASS
- amount: 64
- Light Blue Dye:
- material: INK_SACK
- amount: 4
- durability: 12
- outputs:
- Light Blue Stained Glass:
- material: STAINED_GLASS
- amount: 64
- durability: 3
- Dye_Yellow_Stained_Glass:
- name: Dye Yellow Stained Glass
- inputs:
- Glass:
- material: GLASS
- amount: 64
- Dandelion Yellow:
- material: INK_SACK
- amount: 4
- durability: 11
- outputs:
- Yellow Stained Glass:
- material: STAINED_GLASS
- amount: 64
- durability: 4
- Dye_Lime_Stained_Glass:
- name: Dye Lime Stained Glass
- inputs:
- Glass:
- material: GLASS
- amount: 64
- Lime Dye:
- material: INK_SACK
- amount: 4
- durability: 10
- outputs:
- Lime Stained Glass:
- material: STAINED_GLASS
- amount: 64
- durability: 5
- Dye_Pink_Stained_Glass:
- name: Dye Pink Stained Glass
- inputs:
- Glass:
- material: GLASS
- amount: 64
- Pink Dye:
- material: INK_SACK
- amount: 4
- durability: 9
- outputs:
- Pink Stained Glass:
- material: STAINED_GLASS
- amount: 64
- durability: 6
- Dye_Gray_Stained_Glass:
- name: Dye Gray Stained Glass
- inputs:
- Glass:
- material: GLASS
- amount: 64
- Gray Dye:
- material: INK_SACK
- amount: 4
- durability: 8
- outputs:
- Gray Stained Glass:
- material: STAINED_GLASS
- amount: 64
- durability: 7
- Dye_Light_Gray_Stained_Glass:
- name: Dye Light Gray Stained Glass
- inputs:
- Glass:
- material: GLASS
- amount: 64
- Light Gray Dye:
- material: INK_SACK
- amount: 4
- durability: 7
- outputs:
- Light Gray Stained Glass:
- material: STAINED_GLASS
- amount: 64
- durability: 8
- Dye_Cyan_Stained_Glass:
- name: Dye Cyan Stained Glass
- inputs:
- Glass:
- material: GLASS
- amount: 64
- Cyan Dye:
- material: INK_SACK
- amount: 4
- durability: 6
- outputs:
- Cyan Stained Glass:
- material: STAINED_GLASS
- amount: 64
- durability: 9
- Dye_Purple_Stained_Glass:
- name: Dye Purple Stained Glass
- inputs:
- Glass:
- material: GLASS
- amount: 64
- Purple Dye:
- material: INK_SACK
- amount: 4
- durability: 5
- outputs:
- Purple Stained Glass:
- material: STAINED_GLASS
- amount: 64
- durability: 10
- Dye_Blue_Stained_Glass:
- name: Dye Blue Stained Glass
- inputs:
- Glass:
- material: GLASS
- amount: 64
- Lapis Lazuli:
- material: INK_SACK
- amount: 4
- durability: 4
- outputs:
- Blue Stained Glass:
- material: STAINED_GLASS
- amount: 64
- durability: 11
- Dye_Brown_Stained_Glass:
- name: Dye Brown Stained Glass
- inputs:
- Glass:
- material: GLASS
- amount: 64
- Coco Beans:
- material: INK_SACK
- amount: 4
- durability: 3
- outputs:
- Brown Stained Glass:
- material: STAINED_GLASS
- amount: 64
- durability: 12
- Dye_Green_Stained_Glass:
- name: Dye Green Stained Glass
- inputs:
- Glass:
- material: GLASS
- amount: 64
- Cactus Green:
- material: INK_SACK
- amount: 4
- durability: 2
- outputs:
- Green Stained Glass:
- material: STAINED_GLASS
- amount: 64
- durability: 13
- Dye_Red_Stained_Glass:
- name: Dye Red Stained Glass
- inputs:
- Glass:
- material: GLASS
- amount: 64
- Rose Red:
- material: INK_SACK
- amount: 4
- durability: 1
- outputs:
- Red Stained Glass:
- material: STAINED_GLASS
- amount: 64
- durability: 14
- Dye_Black_Stained_Glass:
- name: Dye Black Stained Glass
- inputs:
- Glass:
- material: GLASS
- amount: 64
- Ink Sack:
- material: INK_SACK
- amount: 4
- durability: 0
- outputs:
- Black Stained Glass:
- material: STAINED_GLASS
- amount: 64
- durability: 15
- Dye_White_Stained_Glass_Pane:
- name: Dye White Stained Glass Pane
- inputs:
- Glass Pane:
- material: THIN_GLASS
- amount: 64
- Bone Meal:
- material: INK_SACK
- amount: 4
- durability: 15
- outputs:
- White Stained Glass Pane:
- material: STAINED_GLASS_PANE
- amount: 64
- durability: 0
- Dye_Orange_Stained_Glass_Pane:
- name: Dye Orange Stained Glass Pane
- inputs:
- Glass Pane:
- material: THIN_GLASS
- amount: 64
- Orange Dye:
- material: INK_SACK
- amount: 4
- durability: 14
- outputs:
- Orange Stained Glass Pane:
- material: STAINED_GLASS_PANE
- amount: 64
- durability: 1
- Dye_Magenta_Stained_Glass_Pane:
- name: Dye Magenta Stained Glass Pane
- inputs:
- Glass Pane:
- material: THIN_GLASS
- amount: 64
- Magenta Dye:
- material: INK_SACK
- amount: 4
- durability: 13
- outputs:
- Magenta Stained Glass Pane:
- material: STAINED_GLASS_PANE
- amount: 64
- durability: 2
- Dye_Light_Blue_Stained_Glass_Pane:
- name: Dye Light Blue Stained Glass Pane
- inputs:
- Glass Pane:
- material: THIN_GLASS
- amount: 64
- Light Blue Dye:
- material: INK_SACK
- amount: 4
- durability: 12
- outputs:
- Light Blue Stained Glass Pane:
- material: STAINED_GLASS_PANE
- amount: 64
- durability: 3
- Dye_Yellow_Stained_Glass_Pane:
- name: Dye Yellow Stained Glass Pane
- inputs:
- Glass Pane:
- material: THIN_GLASS
- amount: 64
- Dandelion Yellow:
- material: INK_SACK
- amount: 4
- durability: 11
- outputs:
- Yellow Stained Glass Pane:
- material: STAINED_GLASS_PANE
- amount: 64
- durability: 4
- Dye_Lime_Stained_Glass_Pane:
- name: Dye Lime Stained Glass Pane
- inputs:
- Glass Pane:
- material: THIN_GLASS
- amount: 64
- Lime Dye:
- material: INK_SACK
- amount: 4
- durability: 10
- outputs:
- Lime Stained Glass Pane:
- material: STAINED_GLASS_PANE
- amount: 64
- durability: 5
- Dye_Pink_Stained_Glass_Pane:
- name: Dye Pink Stained Glass Pane
- inputs:
- Glass Pane:
- material: THIN_GLASS
- amount: 64
- Pink Dye:
- material: INK_SACK
- amount: 4
- durability: 9
- outputs:
- Pink Stained Glass Pane:
- material: STAINED_GLASS_PANE
- amount: 64
- durability: 6
- Dye_Gray_Stained_Glass_Pane:
- name: Dye Gray Stained Glass Pane
- inputs:
- Glass Pane:
- material: THIN_GLASS
- amount: 64
- Gray Dye:
- material: INK_SACK
- amount: 4
- durability: 8
- outputs:
- Gray Stained Glass Pane:
- material: STAINED_GLASS_PANE
- amount: 64
- durability: 7
- Dye_Light_Gray_Stained_Glass_Pane:
- name: Dye Light Gray Stained Glass Pane
- inputs:
- Glass Pane:
- material: THIN_GLASS
- amount: 64
- Light Gray Dye:
- material: INK_SACK
- amount: 4
- durability: 7
- outputs:
- Light Gray Stained Glass Pane:
- material: STAINED_GLASS_PANE
- amount: 64
- durability: 8
- Dye_Cyan_Stained_Glass_Pane:
- name: Dye Cyan Stained Glass Pane
- inputs:
- Glass Pane:
- material: THIN_GLASS
- amount: 64
- Cyan Dye:
- material: INK_SACK
- amount: 4
- durability: 6
- outputs:
- Cyan Stained Glass Pane:
- material: STAINED_GLASS_PANE
- amount: 64
- durability: 9
- Dye_Purple_Stained_Glass_Pane:
- name: Dye Purple Stained Glass Pane
- inputs:
- Glass Pane:
- material: THIN_GLASS
- amount: 64
- Purple Dye:
- material: INK_SACK
- amount: 4
- durability: 5
- outputs:
- Purple Stained Glass Pane:
- material: STAINED_GLASS_PANE
- amount: 64
- durability: 10
- Dye_Blue_Stained_Glass_Pane:
- name: Dye Blue Stained Glass Pane
- inputs:
- Glass Pane:
- material: THIN_GLASS
- amount: 64
- Lapis Lazuli:
- material: INK_SACK
- amount: 4
- durability: 4
- outputs:
- Blue Stained Glass Pane:
- material: STAINED_GLASS_PANE
- amount: 64
- durability: 11
- Dye_Brown_Stained_Glass_Pane:
- name: Dye Brown Stained Glass Pane
- inputs:
- Glass Pane:
- material: THIN_GLASS
- amount: 64
- Coco Beans:
- material: INK_SACK
- amount: 4
- durability: 3
- outputs:
- Brown Stained Glass Pane:
- material: STAINED_GLASS_PANE
- amount: 64
- durability: 12
- Dye_Green_Stained_Glass_Pane:
- name: Dye Green Stained Glass Pane
- inputs:
- Glass Pane:
- material: THIN_GLASS
- amount: 64
- Cactus Green:
- material: INK_SACK
- amount: 4
- durability: 2
- outputs:
- Green Stained Glass Pane:
- material: STAINED_GLASS_PANE
- amount: 64
- durability: 13
- Dye_Red_Stained_Glass_Pane:
- name: Dye Red Stained Glass Pane
- inputs:
- Glass Pane:
- material: THIN_GLASS
- amount: 64
- Rose Red:
- material: INK_SACK
- amount: 4
- durability: 1
- outputs:
- Red Stained Glass Pane:
- material: STAINED_GLASS_PANE
- amount: 64
- durability: 14
- Dye_Black_Stained_Glass_Pane:
- name: Dye Black Stained Glass Pane
- inputs:
- Glass Pane:
- material: THIN_GLASS
- amount: 64
- Ink Sack:
- material: INK_SACK
- amount: 4
- durability: 0
- outputs:
- Black Stained Glass Pane:
- material: STAINED_GLASS_PANE
- amount: 64
- durability: 15
- Dye_White_Stained_Clay:
- name: Dye White Stained Clay
- inputs:
- Hardened Clay:
- material: HARD_CLAY
- amount: 64
- Bone Meal:
- material: INK_SACK
- amount: 4
- durability: 15
- outputs:
- White Stained Clay:
- material: STAINED_CLAY
- amount: 64
- durability: 0
- Dye_Orange_Stained_Clay:
- name: Dye Orange Stained Clay
- inputs:
- Hardened Clay:
- material: HARD_CLAY
- amount: 64
- Orange Dye:
- material: INK_SACK
- amount: 4
- durability: 14
- outputs:
- Orange Stained Clay:
- material: STAINED_CLAY
- amount: 64
- durability: 1
- Dye_Magenta_Stained_Clay:
- name: Dye Magenta Stained Clay
- inputs:
- Hardened Clay:
- material: HARD_CLAY
- amount: 64
- Magenta Dye:
- material: INK_SACK
- amount: 4
- durability: 13
- outputs:
- Hardened Clay:
- material: STAINED_CLAY
- amount: 64
- durability: 2
- Dye_Light_Blue_Stained_Clay:
- name: Dye Light Blue Stained Clay
- inputs:
- Hardened Clay:
- material: HARD_CLAY
- amount: 64
- Light Blue Dye:
- material: INK_SACK
- amount: 4
- durability: 12
- outputs:
- Light Blue Stained Clay:
- material: STAINED_CLAY
- amount: 64
- durability: 3
- Dye_Yellow_Stained_Clay:
- name: Dye Yellow Stained Clay
- inputs:
- Hardened Clay:
- material: HARD_CLAY
- amount: 64
- Dandelion Yellow:
- material: INK_SACK
- amount: 4
- durability: 11
- outputs:
- Hardened Clay:
- material: STAINED_CLAY
- amount: 64
- durability: 4
- Dye_Lime_Stained_Clay:
- name: Dye Lime Stained Clay
- inputs:
- Hardened Clay:
- material: HARD_CLAY
- amount: 64
- Lime Dye:
- material: INK_SACK
- amount: 4
- durability: 10
- outputs:
- Hardened Clay:
- material: STAINED_CLAY
- amount: 64
- durability: 5
- Dye_Pink_Stained_Clay:
- name: Dye Pink Stained Clay
- inputs:
- Hardened Clay:
- material: HARD_CLAY
- amount: 64
- Pink Dye:
- material: INK_SACK
- amount: 4
- durability: 9
- outputs:
- Pink Stained Clay:
- material: STAINED_CLAY
- amount: 64
- durability: 6
- Dye_Gray_Stained_Clay:
- name: Dye Gray Stained Clay
- inputs:
- Hardened Clay:
- material: HARD_CLAY
- amount: 64
- Gray Dye:
- material: INK_SACK
- amount: 4
- durability: 8
- outputs:
- Gray Stained Clay:
- material: STAINED_CLAY
- amount: 64
- durability: 7
- Dye_Light_Gray_Stained_Clay:
- name: Dye Light Gray Stained Clay
- inputs:
- Hardened Clay:
- material: HARD_CLAY
- amount: 64
- Light Gray Dye:
- material: INK_SACK
- amount: 4
- durability: 7
- outputs:
- Light Gray Stained Clay:
- material: STAINED_CLAY
- amount: 64
- durability: 8
- Dye_Cyan_Stained_Clay:
- name: Dye Cyan Stained Clay
- inputs:
- Hardened Clay:
- material: HARD_CLAY
- amount: 64
- Cyan Dye:
- material: INK_SACK
- amount: 4
- durability: 6
- outputs:
- Cyan Stained Clay:
- material: STAINED_CLAY
- amount: 64
- durability: 9
- Dye_Purple_Stained_Clay:
- name: Dye Purple Stained Clay
- inputs:
- Hardened Clay:
- material: HARD_CLAY
- amount: 64
- Purple Dye:
- material: INK_SACK
- amount: 4
- durability: 5
- outputs:
- Purple Stained Clay:
- material: STAINED_CLAY
- amount: 64
- durability: 10
- Dye_Blue_Stained_Clay:
- name: Dye Blue Stained Clay
- inputs:
- Hardened Clay:
- material: HARD_CLAY
- amount: 64
- Lapis Lazuli:
- material: INK_SACK
- amount: 4
- durability: 4
- outputs:
- Blue Stained Clay:
- material: STAINED_CLAY
- amount: 64
- durability: 11
- Dye_Brown_Stained_Clay:
- name: Dye Brown Stained Clay
- inputs:
- Hardened Clay:
- material: HARD_CLAY
- amount: 64
- Coco Beans:
- material: INK_SACK
- amount: 4
- durability: 3
- outputs:
- Brown Stained Clay:
- material: STAINED_CLAY
- amount: 64
- durability: 12
- Dye_Green_Stained_Clay:
- name: Dye Green Stained Clay
- inputs:
- Hardened Clay:
- material: HARD_CLAY
- amount: 64
- Cactus Green:
- material: INK_SACK
- amount: 4
- durability: 2
- outputs:
- Green Stained Clay:
- material: STAINED_CLAY
- amount: 64
- durability: 13
- Dye_Red_Stained_Clay:
- name: Dye Red Stained Clay
- inputs:
- Hardened Clay:
- material: HARD_CLAY
- amount: 64
- Rose Red:
- material: INK_SACK
- amount: 4
- durability: 1
- outputs:
- Red Stained Clay:
- material: STAINED_CLAY
- amount: 64
- durability: 14
- Dye_Black_Stained_Clay:
- name: Dye Black Stained Clay
- inputs:
- Hardened Clay:
- material: HARD_CLAY
- amount: 64
- Ink Sack:
- material: INK_SACK
- amount: 4
- durability: 0
- outputs:
- Black Stained Clay:
- material: STAINED_CLAY
- amount: 64
- durability: 15
- Mutate_Spruce_Saplings:
- name: Mutate Spruce Saplings
- production_time: 64
- inputs:
- Oak Sapling:
- material: SAPLING
- amount: 64
- outputs:
- Spruce Sapling:
- material: SAPLING
- amount: 64
- durability: 1
- Mutate_Birch_Saplings:
- name: Mutate Birch Saplings
- production_time: 64
- inputs:
- Oak Sapling:
- material: SAPLING
- amount: 64
- outputs:
- Birch Sapling:
- material: SAPLING
- amount: 64
- durability: 2
- Mutate_Jungle_Saplings:
- name: Mutate Jungle Saplings
- production_time: 64
- inputs:
- Oak Sapling:
- material: SAPLING
- amount: 64
- outputs:
- Jungle Sapling:
- material: SAPLING
- amount: 64
- durability: 3
- Mutate_Acacia_Saplings:
- name: Mutate Acacia Saplings
- production_time: 64
- inputs:
- Oak Sapling:
- material: SAPLING
- amount: 64
- outputs:
- Acacia Sapling:
- material: SAPLING
- amount: 64
- durability: 4
- Mutate_Dark_Oak_Saplings:
- name: Mutate Dark Oak Saplings
- production_time: 64
- inputs:
- Oak Sapling:
- material: SAPLING
- amount: 64
- outputs:
- Dark Oak Sapling:
- material: SAPLING
- amount: 64
- durability: 5
- Mutate_Grassless_Dirt:
- name: Mutate Grassless Dirt
- production_time: 16
- inputs:
- Grass:
- material: GRASS
- amount: 64
- outputs:
- Grassless Dirt:
- material: DIRT
- amount: 64
- durability: 1
- Mutate_Podzol:
- name: Mutate Podzol
- production_time: 16
- inputs:
- Grass:
- material: GRASS
- amount: 64
- outputs:
- Podzol:
- material: DIRT
- amount: 64
- durability: 2
- Mutate_Pigmen:
- name: Mutate Pigmen
- production_time: 4
- inputs:
- Pig eggs:
- material: MONSTER_EGG
- durability: 90
- amount: 16
- Villager eggs:
- material: MONSTER_EGG
- durability: 120
- amount: 16
- outputs:
- Pigman eggs:
- material: MONSTER_EGG
- durability: 57
- amount: 16
- Infect_Zombies:
- name: Infect Zombies
- production_time: 4
- inputs:
- Villager eggs:
- material: MONSTER_EGG
- durability: 120
- amount: 16
- Rotten flesh:
- material: ROTTEN_FLESH
- amount: 512
- outputs:
- Zombie eggs:
- material: MONSTER_EGG
- durability: 54
- amount: 8
- Mutate_Skeletons:
- name: Mutate Skeletons
- production_time: 4
- inputs:
- Zombie eggs:
- material: MONSTER_EGG
- durability: 54
- amount: 16
- Bones:
- material: BONE
- amount: 256
- Blaze powder:
- material: BLAZE_POWDER
- amount: 64
- outputs:
- Skeleton eggs:
- material: MONSTER_EGG
- durability: 51
- amount: 8
- Mutate_Creepers:
- name: Mutate Creepers
- production_time: 4
- inputs:
- Skeleton eggs:
- material: MONSTER_EGG
- durability: 51
- amount: 16
- Blaze powder:
- material: BLAZE_POWDER
- amount: 32
- TNT:
- material: TNT
- amount: 16
- Lime wool:
- material: WOOL
- durability: 5
- amount: 32
- outputs:
- Creeper eggs:
- material: MONSTER_EGG
- durability: 50
- amount: 8
- Mutate_Witches:
- name: Mutate Witches
- production_time: 32
- inputs:
- Villager eggs:
- material: MONSTER_EGG
- durability: 120
- amount: 16
- Ghast tears:
- material: GHAST_TEAR
- amount: 16
- outputs:
- Witch eggs:
- material: MONSTER_EGG
- durability: 66
- amount: 4
- Mutate_Spiders:
- name: Mutate Spiders
- production_time: 16
- inputs:
- Squid eggs: # For the legs
- material: MONSTER_EGG
- durability: 94
- amount: 16
- Cow eggs: # For food
- material: MONSTER_EGG
- durability: 92
- amount: 16
- Spider eyes:
- material: SPIDER_EYE
- amount: 256
- outputs:
- Spider eggs:
- material: MONSTER_EGG
- durability: 52
- amount: 4
- Mutate_Cave_Spiders:
- name: Mutate Cave Spiders
- production_time: 16
- inputs:
- Spider eggs:
- material: MONSTER_EGG
- durability: 52
- amount: 16
- Poison potatoes:
- material: POISONOUS_POTATO
- amount: 128
- Spider eyes:
- material: SPIDER_EYE
- amount: 256
- outputs:
- Cave spider eggs:
- material: MONSTER_EGG
- durability: 59
- amount: 8
- Mutate_Ghasts:
- name: Mutate Ghasts
- production_time: 32
- inputs:
- Ghast tears:
- material: GHAST_TEAR
- amount: 8
- Fire charges: # Ammunition
- material: FIREBALL
- amount: 64
- Dispensers: # Fire!
- material: DISPENSER
- amount: 4
- White carpets: # To make a balloon
- material: CARPET
- amount: 256
- Furnaces: # To heat air
- material: FURNACE
- amount: 4
- Charcoal: # To fuel the furnace
- material: COAL
- durability: 1
- amount: 256
- Villager eggs: # Operator
- material: MONSTER_EGG
- durability: 120
- amount: 4
- outputs:
- Ghast eggs:
- material: MONSTER_EGG
- durability: 56
- amount: 4
- Compact_Ice:
- name: Compact Ice
- production_time: 32
- inputs:
- Ice:
- material: ICE
- amount: 576
- outputs:
- Packed_Ice:
- material: PACKED_ICE
- amount: 576
- Bastion_Walls:
- name: Walls
- production_time: 2
- inputs:
- Lapis Ore:
- material: LAPIS_ORE
- amount: 8
- Cracked Stone Brick:
- material: SMOOTH_BRICK
- amount: 32
- durability: 2
- outputs:
- Walls:
- material: INK_SACK
- amount: 4
- durablity: 4
- display_name: Walls
- lore: An item used to create a Bastion Block
- Bastion_Base:
- name: Base
- production_time: 2
- inputs:
- Diamond Ore:
- material: DIAMOND_ORE
- amount: 16
- Redstone Ore:
- material: REDSTONE_ORE
- amount: 32
- outputs:
- Base:
- material: IRON_INGOT
- amount: 1
- display_name: Base
- lore: An item used to create a Bastion Block
- Bastion_Gearbox:
- name: Gearbox
- production_time: 2
- inputs:
- Iron Block:
- material: IRON_BLOCK
- amount: 4
- Gold Ore:
- material: GOLD_ORE
- amount: 8
- outputs:
- Gearbox:
- material: WATCH
- amount: 1
- display_name: Gearbox
- lore: An item used to create a Bastion Block
- Bastion_Objet_Dart:
- name: Objet d'art
- production_time: 2
- inputs:
- Lapis Lazuli:
- material: INK_SACK
- amount: 16
- durability: 4
- Gray Dye:
- material: INK_SACK
- amount: 16
- durability: 8
- Cocoa:
- material: INK_SACK
- amount: 16
- durability: 3
- Purple Dye:
- material: INK_SACK
- amount: 16
- durability: 5
- Dandelion Yellow:
- material: INK_SACK
- amount: 16
- durability: 11
- Ink Sack:
- material: INK_SACK
- amount: 16
- durability: 0
- Magenta Dye:
- material: INK_SACK
- amount: 16
- durability: 13
- Pink Dye:
- material: INK_SACK
- amount: 16
- durability: 9
- Cyan Dye:
- material: INK_SACK
- amount: 16
- durability: 6
- Orange Dye:
- material: INK_SACK
- amount: 16
- durability: 14
- Cactus Green:
- material: INK_SACK
- amount: 16
- durability: 2
- Bone Meal:
- material: INK_SACK
- amount: 16
- durability: 15
- Light Gray Dye:
- material: INK_SACK
- amount: 16
- durability: 7
- Light Blue Dye:
- material: INK_SACK
- amount: 16
- durability: 12
- Rose Red:
- material: INK_SACK
- amount: 16
- durability: 1
- Lime Dye:
- material: INK_SACK
- amount: 16
- durability: 10
- Red Sand:
- material: SAND
- amount: 256
- durability: 1
- outputs:
- Objet d'art:
- material: FLINT
- amount: 1
- display_name: Objet d'art
- lore: An item used to create a Bastion Block
- Bastion_Framing:
- name: Framing
- inputs:
- Chest:
- material: CHEST
- amount: 64
- Iron Block:
- material: IRON_BLOCK
- amount: 4
- outputs:
- Framing:
- material: STICK
- amount: 1
- display_name: Framing
- lore: An item used to create a Bastion Block
- Bastion_Flooring:
- name: Flooring
- inputs:
- Clay Ball:
- material: CLAY_BALL
- amount: 32
- Nether Brick:
- material: NETHER_BRICK
- amount: 64
- outputs:
- Flooring:
- material: CLAY_BRICK
- amount: 1
- display_name: Flooring
- lore: An item used to create a Bastion Block
- Bastion_Rations:
- name: Rations
- inputs:
- Wheat:
- material: WHEAT
- amount: 256
- Bowl:
- material: BOWL
- amount: 32
- outputs:
- Rations:
- material: MUSHROOM_SOUP
- amount: 32
- display_name: Rations
- lore: An item used to create a Bastion Block
- Bastion_Smaragdus_Polisher:
- name: Smaragdus
- production_time: 32
- inputs:
- Emerald Block:
- material: EMERALD_BLOCK
- amount: 16
- outputs:
- Smaragdus:
- material: EMERALD
- amount: 16
- display_name: Smaragdus
- lore: An item used to create a Bastion Block
- Bastion_Silicon_Tetranitratobihydrotrioxycarbon:
- name: Silicon_Tetranitratobihydrotrioxycarbon
- inputs:
- Sulphur:
- material: SULPHUR
- amount: 8
- Quartz:
- material: QUARTZ
- amount: 32
- Podzol:
- material: DIRT
- amount: 32
- durability: 2
- Coal Block:
- material: COAL_BLOCK
- amount: 8
- Water Bucket:
- material: WATER_BUCKET
- amount: 2
- outputs:
- Silicon Tetranitratobihydrotrioxycarbon:
- material: FIREWORK_CHARGE
- amount: 8
- display_name: Silicon Tetranitratobihydrotrioxycarbon
- lore: An item used to create a Bastion Block
- Bastion_Pure_Ice:
- name: Pure Ice
- inputs:
- Compact Ice:
- material: PACKED_ICE
- amount: 512
- Leather:
- material: LEATHER
- amount: 32
- outputs:
- Pure Ice:
- material: QUARTZ
- amount: 8
- display_name: Pure Ice
- lore: An item used to repair the Bastion Factory
- Bastion_Block:
- name: Craft Bastions
- inputs:
- Silicon Tetranitratobihydrotrioxycarbon:
- material: FIREWORK_CHARGE
- amount: 16
- display_name: Silicon Tetranitratobihydrotrioxycarbon
- lore: An item used to create a Bastion Block
- Smaragdus:
- material: EMERALD
- amount: 2
- display_name: Smaragdus
- lore: An item used to create a Bastion Block
- Rations:
- material: MUSHROOM_SOUP
- amount: 16
- display_name: Rations
- lore: An item used to create a Bastion Block
- Flooring:
- material: CLAY_BRICK
- amount: 1
- display_name: Flooring
- lore: An item used to create a Bastion Block
- Framing:
- material: STICK
- amount: 1
- display_name: Framing
- lore: An item used to create a Bastion Block
- Objet d'art:
- material: FLINT
- amount: 1
- display_name: Objet d'art
- lore: An item used to create a Bastion Block
- Gearbox:
- material: WATCH
- amount: 1
- display_name: Gearbox
- lore: An item used to create a Bastion Block
- Base:
- material: IRON_INGOT
- amount: 1
- display_name: Base
- lore: An item used to create a Bastion Block
- Walls:
- material: INK_SACK
- amount: 4
- durability: 0
- display_name: Walls
- lore: An item used to create a Bastion Block
- outputs:
- Bastion:
- material: SPONGE
- amount: 32
- display_name: Bastion
- Sequencing_Sunflower:
- name: Sequencing Sunflower
- inputs:
- Dandelion:
- material: YELLOW_FLOWER
- amount: 8
- Sugar Cane:
- material: SUGAR_CANE
- amount: 8
- outputs:
- Sunflower:
- material: DOUBLE_PLANT
- amount: 4
- durability: 0
- Sequencing_Lilac:
- name: Sequencing Lilac
- inputs:
- Poppy:
- material: RED_ROSE
- amount: 8
- Oak Sapling:
- material: SAPLING
- amount: 8
- outputs:
- Lilac:
- material: DOUBLE_PLANT
- amount: 4
- durability: 1
- Sequencing_Double_Tallgrass:
- name: Sequencing Double Tallgrass
- inputs:
- Grass:
- material: LONG_GRASS
- amount: 16
- durability: 1
- outputs:
- Double Tallgrass:
- material: DOUBLE_PLANT
- amount: 4
- durability: 2
- Sequencing_Large_Fern:
- name: Sequencing Large Fern
- inputs:
- Grass:
- material: LONG_GRASS
- amount: 16
- durability: 1
- outputs:
- Large Fern:
- material: DOUBLE_PLANT
- amount: 4
- durability: 3
- Sequencing_Rose_Bush:
- name: Sequencing Rose Bush
- inputs:
- Poppy:
- material: RED_ROSE
- amount: 8
- Cactus:
- material: CACTUS
- amount: 8
- outputs:
- Rose Bush:
- material: DOUBLE_PLANT
- amount: 4
- durability: 4
- Sequencing_Peony:
- name: Sequencing Peony
- inputs:
- Poppy:
- material: RED_ROSE
- amount: 8
- Oak Leaves:
- material: LEAVES
- amount: 8
- outputs:
- Peony:
- material: DOUBLE_PLANT
- amount: 4
- durability: 5
- Aspect_Factory:
- name: Arcane Elementizer
- fuel:
- Charcoal:
- material: COAL
- durability: 1
- inputs:
- Netherbrick:
- material: NETHER_BRICK
- amount: 1536
- Redstone:
- material: REDSTONE
- amount: 1152
- Netherquartz:
- material: QUARTZ
- amount: 576
- recipes:
- - Forge_Aspect_of_Terra
- - Forge_Aspect_of_End
- - Forge_Aspect_of_Nether
- - Craft_Eye_of_Ender
- repair_multiple: 26
- repair_inputs:
- Nether Brick:
- material: NETHER_BRICK
- amount: 6
- Redstone:
- material: REDSTONE
- amount: 5
- Netherquartz:
- material: QUARTZ
- amount: 2
- Forge_Aspect_of_Terra:
- name: Forge Aspect of Terra
- production_time: 64
- inputs:
- Emerald Block:
- material: EMERALD_BLOCK
- amount: 24
- Diamond Block:
- material: DIAMOND_BLOCK
- amount: 24
- Gold Ore:
- material: GOLD_ORE
- amount: 8
- Slime Ball:
- material: SLIME_BALL
- amount: 8
- Anvil:
- material: ANVIL
- amount: 8
- outputs:
- Aspect of Terra:
- material: DIAMOND
- amount: 1
- display_name: Aspect of Terra
- lore: A concentrated essence of Terra
- Forge_Aspect_of_End:
- name: Forge Aspect of End
- production_time: 64
- inputs:
- Ender Pearl:
- material: ENDER_PEARL
- amount: 256
- Ender Chest:
- material: ENDER_CHEST
- amount: 256
- Endstone:
- material: ENDER_STONE
- amount: 1024
- outputs:
- Aspect of End:
- material: FLINT
- amount: 1
- display_name: Aspect of End
- lore: A concentrated essence of the End
- Forge_Aspect_of_Nether:
- name: Forge Aspect of Nether
- production_time: 64
- inputs:
- Ghast Tears:
- material: GHAST_TEAR
- amount: 16
- Quartz Ore:
- material: QUARTZ_ORE
- amount: 512
- Glowstone:
- material: GLOWSTONE
- amount: 512
- outputs:
- Aspect of Nether:
- material: MAGMA_CREAM
- amount: 1
- display_name: Aspect of Nether
- lore: A concentrated essence of the Nether
- Craft_Eye_of_Ender:
- name: Craft Eye of Ender
- production_time: 1
- inputs:
- Blaze Powder:
- material: BLAZE_POWDER
- amount: 265
- Ender Pearl:
- material: ENDER_PEARL
- amount: 265
- outputs:
- Eye of Ender:
- material: EYE_OF_ENDER
- amount: 256
diff --git a/license.txt b/license.txt
index 3bc088a6..e83d6ca5 100644
--- a/license.txt
+++ b/license.txt
@@ -1,27 +1,27 @@
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- (1) Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- (2) Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- (3)The name of the author may not be used to
- endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ (1) Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ (2) Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ (3)The name of the author may not be used to
+ endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/plugin.yml b/plugin.yml
deleted file mode 100644
index ac5e00d4..00000000
--- a/plugin.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-name: FactoryMod
-main: com.github.igotyou.FactoryMod.FactoryModPlugin
-author: igotyou
-version: 1.2
diff --git a/pom.xml b/pom.xml
index b35753c9..af3fae36 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,53 +1,76 @@
-
- 4.0.0
- com.github.igotyou
- FactoryMod
- jar
- 1.0-SNAPSHOT
- FactoryMod
- https://github.com/ttk2/FactoryMod
-
-
- 1.7
- 1.7
-
-
-
- ${basedir}/src
-
-
-
- ${basedir}
-
- *.yml
- license.txt
-
-
-
-
+ 4.0.0
+ com.github.igotyou
+ FactoryMod
+ jar
+ 2.2.20
+ FactoryMod
+ https://github.com/Civcraft/FactoryMod
-
-
- org.bukkit
- bukkit
- 1.7.2-R0.3
- provided
-
-
- com.untamedears
- Citadel
- [2.5,)
- provided
-
-
-
-
-
- bukkit-repo
- http://repo.bukkit.org/content/groups/public/
-
-
+
+ UTF-8
+ 1.8
+ 1.8
+
+
+
+
+
+ ${basedir}
+
+ LICENSE.txt
+
+
+
+ src/main/resources
+ true
+
+
+
+
+
+
+ org.spigotmc
+ spigot-api
+ 1.10-R0.1-SNAPSHOT
+ provided
+
+
+ vg.civcraft.mc.namelayer
+ NameLayer
+ 2.7
+ provided
+
+
+ vg.civcraft.mc.citadel
+ Citadel
+ 3.5.0
+ provided
+
+
+ vg.civcraft.mc.civmodcore
+ CivModCore
+ 1.4.47
+ provided
+
+
+ vg.civcraft.mc
+ CivMenu
+ 1.3
+ provided
+
+
+
+
+
+ spigot-repo
+ https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
+
+ Jenkins-repo
+ http://build.civcraft.co:8080/plugin/repository/everything/
+
+
diff --git a/src/com/github/igotyou/FactoryMod/FactoryModPlugin.java b/src/com/github/igotyou/FactoryMod/FactoryModPlugin.java
deleted file mode 100644
index b43331f3..00000000
--- a/src/com/github/igotyou/FactoryMod/FactoryModPlugin.java
+++ /dev/null
@@ -1,465 +0,0 @@
-package com.github.igotyou.FactoryMod;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-
-import org.bukkit.Bukkit;
-import org.bukkit.Material;
-import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.inventory.Recipe;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.plugin.java.JavaPlugin;
-import org.bukkit.potion.PotionEffect;
-import org.bukkit.potion.PotionEffectType;
-import org.bukkit.inventory.meta.EnchantmentStorageMeta;
-import org.bukkit.inventory.meta.ItemMeta;
-import org.bukkit.inventory.meta.PotionMeta;
-import org.bukkit.inventory.meta.Repairable;
-import org.bukkit.configuration.ConfigurationSection;
-
-import com.github.igotyou.FactoryMod.FactoryObject.FactoryType;
-import com.github.igotyou.FactoryMod.interfaces.Properties;
-import com.github.igotyou.FactoryMod.listeners.FactoryModListener;
-import com.github.igotyou.FactoryMod.listeners.NoteStackListener;
-import com.github.igotyou.FactoryMod.listeners.RedstoneListener;
-import com.github.igotyou.FactoryMod.managers.FactoryModManager;
-import com.github.igotyou.FactoryMod.properties.NetherFactoryProperties;
-import com.github.igotyou.FactoryMod.properties.PrintingPressProperties;
-import com.github.igotyou.FactoryMod.properties.ProductionProperties;
-import com.github.igotyou.FactoryMod.recipes.ProductionRecipe;
-import com.github.igotyou.FactoryMod.recipes.ProbabilisticEnchantment;
-import com.github.igotyou.FactoryMod.utility.ItemList;
-import com.github.igotyou.FactoryMod.utility.NamedItemStack;
-
-import org.bukkit.inventory.ShapedRecipe;
-import org.bukkit.inventory.ShapelessRecipe;
-
-
-public class FactoryModPlugin extends JavaPlugin
-{
-
- FactoryModManager manager;
- public static HashMap productionProperties;
- public static HashMap productionRecipes;
- public PrintingPressProperties printingPressProperties;
- public NetherFactoryProperties netherFactoryProperties;
-
- public static final String VERSION = "v1.0"; //Current version of plugin
- public static final String PLUGIN_NAME = "FactoryMod"; //Name of plugin
- public static final String PLUGIN_PREFIX = PLUGIN_NAME + " " + VERSION + ": ";
- public static final String PRODUCTION_SAVES_FILE = "productionSaves"; // The production saves file name
- public static final int TICKS_PER_SECOND = 20; //The number of ticks per second
- public static final String PRINTING_PRESSES_SAVE_FILE = "pressSaves";
-
- public static final String NETHER_FACTORY_SAVE_FILE = "netherSaves";
- public static boolean DISABLE_PORTALS;
- public static int NETHER_SCALE;
- public static boolean ALLOW_REINFORCEMENT_CREATION_ABOVE_TELEPORT_PLATFORM;
- public static boolean ALLOW_BLOCK_PLACEMENT_ABOVE_TELEPORT_PLATFORM;
- public static boolean TELEPORT_PLATFORM_INVUNERABLE;
- public static boolean REGENERATE_TELEPORT_BLOCK_ON_TELEPORT;
- public static boolean REMOVE_BLOCK_ABOVE_TELEPORT_PLATFORM_ON_TELEPORT;
- public static String WORLD_NAME;
- public static String NETHER_NAME;
-
- public static int PRODUCER_UPDATE_CYCLE;
- public static boolean PRODUCTION_ENEABLED;
- public static int SAVE_CYCLE;
- public static Material CENTRAL_BLOCK_MATERIAL;
- public static boolean RETURN_BUILD_MATERIALS;
- public static boolean CITADEL_ENABLED;
- public static Material FACTORY_INTERACTION_MATERIAL;
- public static boolean DESTRUCTIBLE_FACTORIES;
- public static int NETHER_MARKER_MAX_DISTANCE;
- public static Material NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL;
- public static Material NETHER_FACTORY_MARKER_MATERIAL;
- public static boolean DISABLE_EXPERIENCE;
- public static long DISREPAIR_PERIOD;
- public static long REPAIR_PERIOD;
- public static boolean REDSTONE_START_ENABLED;
- public static boolean LEVER_OUTPUT_ENABLED;
-
- public void onEnable()
- {
- //load the config.yml
- initConfig();
- //create the main manager
- manager = new FactoryModManager(this);
- //register the events(this should be moved...)
- registerEvents();
- }
-
- public void onDisable()
- {
- //call the disable method, this will save the data etc.
- manager.onDisable();
- }
-
- public void registerEvents()
- {
- try
- {
- getServer().getPluginManager().registerEvents(new FactoryModListener(manager), this);
- getServer().getPluginManager().registerEvents(new RedstoneListener(manager, manager.getProductionManager()), this);
- getServer().getPluginManager().registerEvents(new NoteStackListener(this), this);
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }
- }
-
- public void initConfig()
- {
- productionProperties = new HashMap();
- productionRecipes = new HashMap();
- FileConfiguration config = getConfig();
- if(getConfig().getDefaults().getBoolean("copy_defaults", true))
- {
- saveResource("config.yml",true);
- }
- this.saveDefaultConfig();
- reloadConfig();
- config = getConfig();
- //what should the nether scaling be for the nether factorys?
- NETHER_SCALE = config.getInt("nether_general.nether_scale",8);
- //Should we Disable regular portals?
- DISABLE_PORTALS = config.getBoolean("nether_general.disable_portals", true);
- //Allow reinforcement above nether factory teleport platforms.
- ALLOW_REINFORCEMENT_CREATION_ABOVE_TELEPORT_PLATFORM = config.getBoolean("nether_general.allow_reinforcement_creation_above_teleport_platform", false);
- //Allow people to place blocks above nether factory teleport platforms.
- ALLOW_BLOCK_PLACEMENT_ABOVE_TELEPORT_PLATFORM = config.getBoolean("nether_general.allow_block_placement_above_teleport_platform", false);
- //Make teleport platforms unbreakable
- TELEPORT_PLATFORM_INVUNERABLE = config.getBoolean("nether_general.teleport_platform_invunerable",false);
- //Right before a player get's teleported, should the teleport platform be regenerated?
- REGENERATE_TELEPORT_BLOCK_ON_TELEPORT = config.getBoolean("nether_general.regenerate_teleport_block_on_teleport", false);
- //Right before a player get's teleported, should the blocks above the portal be destroyed(ignotes citadel)?
- REMOVE_BLOCK_ABOVE_TELEPORT_PLATFORM_ON_TELEPORT = config.getBoolean("nether_general.remove_blocks_above_teleport_platform_on_teleport", false);
- //what's the name of the overworld?
- WORLD_NAME = config.getString("nether_general.world_name", "world");
- //what's the name of the overworld?
- NETHER_NAME = config.getString("nether_general.nether_name", "world_nether");
- //how often should the managers save?
- SAVE_CYCLE = config.getInt("general.save_cycle",15)*60*20;
- //what's the material of the center block of factorys?
- CENTRAL_BLOCK_MATERIAL = Material.getMaterial(config.getString("general.central_block"));
- //what's the material of the nether portal teleportation platforms?
- NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL = Material.getMaterial(config.getString("nether_general.teleport_platform_material_nether_factory"));
- //what's the material of the marker blocks for nether factorys?
- NETHER_FACTORY_MARKER_MATERIAL = Material.getMaterial(config.getString("nether_general.marker_material_nether_factory"));
- //how far from the factory can the marker be?
- NETHER_MARKER_MAX_DISTANCE = config.getInt("nether_general.marker_max_distance");
- //Return the build materials upon destruction of factory.
- RETURN_BUILD_MATERIALS = config.getBoolean("general.return_build_materials",false);
- //is citadel enabled?
- CITADEL_ENABLED = config.getBoolean("general.citadel_enabled",true);
- //what's the tool that we use to interact with the factorys?
- FACTORY_INTERACTION_MATERIAL = Material.getMaterial(config.getString("general.factory_interaction_material","STICK"));
- //If factories are removed upon destruction of their blocks
- DESTRUCTIBLE_FACTORIES=config.getBoolean("general.destructible_factories",false);
- //Check if XP drops should be disabled
- DISABLE_EXPERIENCE=config.getBoolean("general.disable_experience",false);
- //How frequently factories are updated
- PRODUCER_UPDATE_CYCLE = config.getInt("production_general.update_cycle",20);
- //Period of days before a factory is removed after it falls into disrepair
- DISREPAIR_PERIOD= config.getLong("general.disrepair_period",14)*24*60*60*1000;
- //The length of time it takes a factory to go to 0% health
- REPAIR_PERIOD = config.getLong("production_general.repair_period",28)*24*60*60*1000;
- //Disable recipes which result in the following items
- //Do we output the running state with a lever?
- LEVER_OUTPUT_ENABLED = config.getBoolean("general.lever_output_enabled",true);
- //Do we allow factories to be started with redstone?
- REDSTONE_START_ENABLED = config.getBoolean("general.redstone_start_enabled",true);
- int g = 0;
- Iterator disabledRecipes=config.getStringList("crafting.disable").iterator();
- while(disabledRecipes.hasNext())
- {
- ItemStack recipeItemStack = new ItemStack(Material.getMaterial(disabledRecipes.next()));
- List tempList = getServer().getRecipesFor(recipeItemStack);
- for (int itterator = 0; itterator < tempList.size(); itterator ++)
- {
- removeRecipe(tempList.get(itterator));
- g++;
- }
-
- }
- //Enable the following recipes
- ConfigurationSection configCraftingEnable=config.getConfigurationSection("crafting.enable");
- for (String recipeName:configCraftingEnable.getKeys(false))
- {
- ConfigurationSection configSection=configCraftingEnable.getConfigurationSection(recipeName);
- Recipe recipe;
- List shape=configSection.getStringList("shape");
- NamedItemStack output=getItems(configSection.getConfigurationSection("output")).get(0);
- if(shape.isEmpty())
- {
- ShapelessRecipe shapelessRecipe=new ShapelessRecipe(output);
- for (ItemStack input:getItems(configSection.getConfigurationSection("inputs")))
- {
- shapelessRecipe.addIngredient(input.getAmount(),input.getType(),input.getDurability());
- }
- recipe=shapelessRecipe;
- }
- else
- {
- ShapedRecipe shapedRecipe=new ShapedRecipe(output);
- shapedRecipe.shape(shape.toArray(new String[shape.size()]));
- for(String inputKey:configSection.getConfigurationSection("inputs").getKeys(false))
- {
- ItemStack input=getItems(configSection.getConfigurationSection("inputs."+inputKey)).get(0);
- shapedRecipe.setIngredient(inputKey.charAt(0),input.getType(),input.getDurability());
- }
- recipe=shapedRecipe;
- }
- Bukkit.addRecipe(recipe);
- }
-
- //Import recipes from config.yml
- ConfigurationSection configProdRecipes=config.getConfigurationSection("production_recipes");
- //Temporary Storage array to store where recipes should point to each other
- HashMap outputRecipes=new HashMap();
- Iterator recipeTitles=configProdRecipes.getKeys(false).iterator();
- while (recipeTitles.hasNext())
- {
- //Section header in recipe file, also serves as unique identifier for the recipe
- //All spaces are replaced with udnerscores so they don't disrupt saving format
- //There should be a check for uniqueness of this identifier...
- String title=recipeTitles.next();
- ConfigurationSection configSection=configProdRecipes.getConfigurationSection(title);
- title=title.replaceAll(" ","_");
- //Display name of the recipe, Deafult of "Default Name"
- String recipeName = configSection.getString("name","Default Name");
- //Production time of the recipe, default of 1
- int productionTime=configSection.getInt("production_time",2);
- //Inputs of the recipe, empty of there are no inputs
- ItemList inputs = getItems(configSection.getConfigurationSection("inputs"));
- //Inputs of the recipe, empty of there are no inputs
- ItemList upgrades = getItems(configSection.getConfigurationSection("upgrades"));
- //Outputs of the recipe, empty of there are no inputs
- ItemList outputs = getItems(configSection.getConfigurationSection("outputs"));
- //Enchantments of the recipe, empty of there are no inputs
- List enchantments=getEnchantments(configSection.getConfigurationSection("enchantments"));
- //Whether this recipe can only be used once
- boolean useOnce = configSection.getBoolean("use_once");
- ProductionRecipe recipe = new ProductionRecipe(title,recipeName,productionTime,inputs,upgrades,outputs,enchantments,useOnce,new ItemList());
- productionRecipes.put(title,recipe);
- //Store the titles of the recipes that this should point to
- ArrayList currentOutputRecipes=new ArrayList();
- currentOutputRecipes.addAll(configSection.getStringList("output_recipes"));
- outputRecipes.put(recipe,currentOutputRecipes);
- }
- //Once ProductionRecipe objects have been created correctly insert different pointers
- Iterator recipeIterator=outputRecipes.keySet().iterator();
- while (recipeIterator.hasNext())
- {
- ProductionRecipe recipe=recipeIterator.next();
- Iterator outputIterator=outputRecipes.get(recipe).iterator();
- while(outputIterator.hasNext())
- {
- recipe.addOutputRecipe(productionRecipes.get(outputIterator.next()));
- }
- }
-
-
- //Import factories from config.yml
- ConfigurationSection configProdFactories=config.getConfigurationSection("production_factories");
- Iterator factoryTitles=configProdFactories.getKeys(false).iterator();
- while(factoryTitles.hasNext())
- {
- String title=factoryTitles.next();
- ConfigurationSection configSection=configProdFactories.getConfigurationSection(title);
- title=title.replaceAll(" ","_");
- String factoryName=configSection.getString("name","Default Name");
- //Uses overpowered getItems method for consistency, should always return a list of size=1
- //If no fuel is found, default to charcoal
- ItemList fuel=getItems(configSection.getConfigurationSection("fuel"));
- if(fuel.isEmpty())
- {
- fuel=new ItemList();
- fuel.add(new NamedItemStack(Material.getMaterial("COAL"),1,(short)1,"Charcoal"));
- }
- int fuelTime=configSection.getInt("fuel_time",2);
- ItemList inputs=getItems(configSection.getConfigurationSection("inputs"));
- ItemList repairs=getItems(configSection.getConfigurationSection("repair_inputs"));
- List factoryRecipes=new ArrayList();
- Iterator ouputRecipeIterator=configSection.getStringList("recipes").iterator();
- while (ouputRecipeIterator.hasNext())
- {
- factoryRecipes.add(productionRecipes.get(ouputRecipeIterator.next()));
- }
- int repair=configSection.getInt("repair_multiple",0);
- //Create repair recipe
- productionRecipes.put(title+"REPAIR",new ProductionRecipe(title+"REPAIR","Repair Factory",1,repairs));
- factoryRecipes.add(productionRecipes.get(title+"REPAIR"));
- ProductionProperties productionProperty = new ProductionProperties(inputs, factoryRecipes, fuel, fuelTime, factoryName, repair);
- productionProperties.put(title, productionProperty);
- }
-
- ConfigurationSection configPrintingPresses=config.getConfigurationSection("printing_presses");
- ConfigurationSection configNetherFactory=config.getConfigurationSection("nether_factory");
- printingPressProperties = PrintingPressProperties.fromConfig(this, configPrintingPresses);
- netherFactoryProperties = NetherFactoryProperties.fromConfig(this, configNetherFactory);
- }
-
- private List getEnchantments(ConfigurationSection configEnchantments)
- {
- List enchantments=new ArrayList();
- if(configEnchantments!=null)
- {
- Iterator names=configEnchantments.getKeys(false).iterator();
- while (names.hasNext())
- {
- String name=names.next();
- ConfigurationSection configEnchantment=configEnchantments.getConfigurationSection(name);
- String type=configEnchantment.getString("type");
- if (type!=null)
- {
- int level=configEnchantment.getInt("level",1);
- double probability=configEnchantment.getDouble("probability",1.0);
- ProbabilisticEnchantment enchantment=new ProbabilisticEnchantment(name,type,level,probability);
- enchantments.add(enchantment);
- }
- }
- }
- return enchantments;
- }
-
- private List getPotionEffects(
- ConfigurationSection configurationSection) {
- List potionEffects = new ArrayList();
- if(configurationSection!=null)
- {
- Iterator names=configurationSection.getKeys(false).iterator();
- while (names.hasNext())
- {
- String name=names.next();
- ConfigurationSection configEffect=configurationSection.getConfigurationSection(name);
- String type=configEffect.getString("type");
- if (type!=null)
- {
- PotionEffectType effect = PotionEffectType.getByName(type);
- if (effect != null) {
- int duration=configEffect.getInt("duration",200);
- int amplifier=configEffect.getInt("amplifier",0);
- potionEffects.add(new PotionEffect(effect, duration, amplifier));
- }
- }
- }
- }
- return potionEffects;
- }
-
- public ItemList getItems(ConfigurationSection configItems)
- {
- ItemList items=new ItemList();
- if(configItems!=null)
- {
- for(String commonName:configItems.getKeys(false))
- {
-
- ConfigurationSection configItem= configItems.getConfigurationSection(commonName);
- String materialName=configItem.getString("material");
- Material material = Material.getMaterial(materialName);
- //only proceeds if an acceptable material name was provided
- if (material == null)
- {
- getLogger().severe(configItems.getCurrentPath() + " requires invalid material " + materialName);
- }
- else
- {
- int amount=configItem.getInt("amount",1);
- short durability=(short)configItem.getInt("durability",0);
- int repairCost=(short)configItem.getInt("repair_cost",0);
- String displayName=configItem.getString("display_name");
- String lore=configItem.getString("lore");
- List compulsoryEnchantments = getEnchantments(configItem.getConfigurationSection("enchantments"));
- List storedEnchantments = getEnchantments(configItem.getConfigurationSection("stored_enchantments"));
- List potionEffects = getPotionEffects(configItem.getConfigurationSection("potion_effects"));
- items.add(createItemStack(material,amount,durability,displayName,lore,commonName,repairCost,compulsoryEnchantments,storedEnchantments,potionEffects));
- }
- }
- }
- return items;
- }
-
- private NamedItemStack createItemStack(Material material,int stackSize,short durability,String name,String loreString,String commonName,int repairCost,List compulsoryEnchants,List storedEnchants, List potionEffects)
- {
- NamedItemStack namedItemStack= new NamedItemStack(material, stackSize, durability,commonName);
- if(name!=null||loreString!=null||compulsoryEnchants.size()>0||storedEnchants.size()>0||potionEffects.size()>0||repairCost > 0)
- {
- ItemMeta meta=namedItemStack.getItemMeta();
- if (name!=null)
- meta.setDisplayName(name);
- if (meta instanceof Repairable && repairCost > 0)
- ((Repairable) meta).setRepairCost(repairCost);
- if (loreString!=null)
- {
- List lore = new ArrayList();
- lore.add(loreString);
- meta.setLore(lore);
- }
- for (ProbabilisticEnchantment enchant : compulsoryEnchants) {
- meta.addEnchant(enchant.getEnchantment(), enchant.getLevel(), false);
- }
- if (meta instanceof EnchantmentStorageMeta) {
- EnchantmentStorageMeta esm = (EnchantmentStorageMeta) meta;
- for (ProbabilisticEnchantment enchant : storedEnchants) {
- esm.addStoredEnchant(enchant.getEnchantment(), enchant.getLevel(), false);
- }
- }
- if (meta instanceof PotionMeta) {
- PotionMeta pm = (PotionMeta) meta;
- for (PotionEffect effect : potionEffects) {
- pm.addCustomEffect(effect, true);
- }
- }
- namedItemStack.setItemMeta(meta);
- }
- return namedItemStack;
- }
-
- private void removeRecipe(Recipe removalRecipe)
- {
- Iterator itterator = getServer().recipeIterator();
- while (itterator.hasNext())
- {
- Recipe recipe = itterator.next();
- if (recipe.getResult().getType() == removalRecipe.getResult().getType())
- {
- itterator.remove();
- }
- }
- }
-
- public static Properties getProperties(FactoryType factoryType, String subFactoryType)
- {
- switch(factoryType)
- {
- case PRODUCTION:
- return FactoryModPlugin.productionProperties.get(subFactoryType);
- default:
- return null;
- }
- }
-
- public static int getMaxTiers(FactoryType factoryType)
- {
- // TODO Auto-generated method stub
- return 0;
- }
-
- public static void sendConsoleMessage(String message)
- {
- Bukkit.getLogger().info(FactoryModPlugin.PLUGIN_PREFIX + message);
- }
-
- public PrintingPressProperties getPrintingPressProperties() {
- return printingPressProperties;
- }
-
- public NetherFactoryProperties getNetherFactoryProperties() {
- return netherFactoryProperties;
- }
-}
diff --git a/src/com/github/igotyou/FactoryMod/FactoryObject.java b/src/com/github/igotyou/FactoryMod/FactoryObject.java
deleted file mode 100644
index 30b72d21..00000000
--- a/src/com/github/igotyou/FactoryMod/FactoryObject.java
+++ /dev/null
@@ -1,213 +0,0 @@
-package com.github.igotyou.FactoryMod;
-
-
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.block.Chest;
-import org.bukkit.block.Furnace;
-import org.bukkit.inventory.Inventory;
-
-import com.github.igotyou.FactoryMod.interfaces.Properties;
-
-import java.util.Date;
-
-//original file:
-/**
- * MachineObject.java
- * Purpose: Basic object base for machines to extend
- *
- * @author MrTwiggy
- * @version 0.1 1/14/13
- */
-//edited version:
-/**
- * FactoryObject.java
- * Purpose basic object base for factories to extend
- * @author igotyou
- *
- */
-public class FactoryObject
-{
- //the diffrent factory types, NOTE: these are not the sub-factory types, these are the main types.
- public enum FactoryType
- {
- PRODUCTION,
- PRINTING_PRESS,
- NETHER_FACTORY
- }
-
-
- protected Location factoryLocation; // Current location of factory center
- protected Location factoryInventoryLocation; //Current location of factory inventory(normmaly a chest)
- protected Location factoryPowerSourceLocation;//Current location of factory power source(normmaly a furnace)
- protected boolean active; // Whether factory is currently active
- protected Inventory factoryInventory; // The inventory of the factory
- protected Inventory factoryPowerInventory;//The inventory of the power source.
- protected FactoryType factoryType; // The type this factory is
- protected String subFactoryType;//the SUBfactory type(the ones loaded from the config file)
- protected Properties factoryProperties; // The properties of this factory type and tier
- protected boolean upgraded; // Whether the tier has recently upgraded
-
- /**
- * Constructor
- */
- public FactoryObject(Location factoryLocation, Location factoryInventoryLocation, Location factoryPowerSource,
- FactoryType factoryType, String subFactoryType)
- {
- this.factoryLocation = factoryLocation;
- this.factoryInventoryLocation = factoryInventoryLocation;
- this.factoryPowerSourceLocation = factoryPowerSource;
- this.active = false;
- this.factoryType = factoryType;
- this.subFactoryType = subFactoryType;
- this.upgraded = false;
- if (this.isWhole(true))
- {
- initializeInventory();
- }
- updateProperties();
- }
-
- /**
- * Constructor
- */
- public FactoryObject(Location factoryLocation, Location factoryInventoryLocation, Location factoryPowerSource,
- boolean active, FactoryType factoryType, String subFactoryType)
- {
- this.factoryLocation = factoryLocation;
- this.factoryInventoryLocation = factoryInventoryLocation;
- this.factoryPowerSourceLocation = factoryPowerSource;
- this.active = active;
- this.factoryType = factoryType;
- this.subFactoryType = subFactoryType;
- this.upgraded = false;
- if (this.isWhole(true))
- {
- initializeInventory();
- }
- updateProperties();
- }
-
- /**
- * Constructor
- */
- public FactoryObject(Location factoryLocation, Location factoryInventoryLocation, Location factoryPowerSource,
- boolean active, int tierLevel, FactoryType factoryType, Inventory factoryInventory,
- String subFactoryType)
- {
- this.factoryLocation = factoryLocation;
- this.factoryInventoryLocation = factoryInventoryLocation;
- this.factoryPowerSourceLocation = factoryPowerSource;
- this.active = active;
- this.factoryType = factoryType;
- this.subFactoryType = subFactoryType;
- this.factoryInventory = factoryInventory;
- updateProperties();
- }
-
- /**
- * Initializes the inventory for this factory
- */
- //Due to non-destructable factories this will not have been called on reconstructed factories
- //however I am unable to find a use for this method in the current code, so it doesn't
- //seem to be an issue right now, maybe the calls in the constructor should be gotten rid of
- //all methods that get the inventory reinitialize the contents.
- public void initializeInventory()
- {
- switch(factoryType)
- {
- case PRODUCTION:
- Chest chestBlock = (Chest)factoryInventoryLocation.getBlock().getState();
- factoryInventory = chestBlock.getInventory();
- Furnace furnaceBlock = (Furnace)factoryPowerSourceLocation.getBlock().getState();
- factoryPowerInventory = furnaceBlock.getInventory();
- break;
- default:
- break;
- }
- }
-
- /**
- * Updates the current properties for the factory.
- */
- public void updateProperties()
- {
- factoryProperties = FactoryModPlugin.getProperties(factoryType, subFactoryType);
- }
-
- /**
- * Returns the user-friendly name for this factory type
- */
- public String factoryName()
- {
- switch (factoryType)
- {
- case PRODUCTION:
- return "Production";
- default:
- return null;
- }
- }
-
- /**
- * returns the factory Inventory(normally a chest), updates the inventory variable aswell.
- */
- public Inventory getInventory()
- {
- Chest chestBlock = (Chest)factoryInventoryLocation.getBlock().getState();
- factoryInventory = chestBlock.getInventory();
- return factoryInventory;
- }
-
- /**
- * Returns the power Source inventory, updates it aswell.
- */
- public Inventory getPowerSourceInventory()
- {
- if (!(factoryPowerSourceLocation.getBlock().getType() == Material.FURNACE || factoryPowerSourceLocation.getBlock().getType() == Material.BURNING_FURNACE))
- {
- return null;
- }
- Furnace furnaceBlock = (Furnace)factoryPowerSourceLocation.getBlock().getState();
- factoryPowerInventory = furnaceBlock.getInventory();
- return factoryPowerInventory;
- }
-
- /**
- * Returns the sub-factory type of the factory.
- */
- public String getSubFactoryType()
- {
- return subFactoryType;
- }
-
-
- /**
- * returns if the factory is on or not.
- */
- public boolean getActive()
- {
- return active;
- }
-
- /**
- * returns true if all factory blocks are occupied with the correct blocks
- */
- public boolean isWhole(boolean initCall)
- {
- //Check if power source exists
- if(factoryPowerSourceLocation.getBlock().getType().getId()== 61 || factoryPowerSourceLocation.getBlock().getType().getId()== 62)
- {
- //Check inventory location
- if(factoryInventoryLocation.getBlock().getType().getId()== 54)
- {
- //Check Interaction block location
- if(factoryLocation.getBlock().getType().getId()==FactoryModPlugin.CENTRAL_BLOCK_MATERIAL.getId())
- {
- return true;
- }
- }
- }
- return false;
- }
-}
diff --git a/src/com/github/igotyou/FactoryMod/Factorys/BaseFactory.java b/src/com/github/igotyou/FactoryMod/Factorys/BaseFactory.java
deleted file mode 100644
index 1f651a3f..00000000
--- a/src/com/github/igotyou/FactoryMod/Factorys/BaseFactory.java
+++ /dev/null
@@ -1,515 +0,0 @@
-package com.github.igotyou.FactoryMod.Factorys;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.bukkit.Bukkit;
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.block.Block;
-import org.bukkit.block.BlockFace;
-import org.bukkit.block.BlockState;
-import org.bukkit.block.Furnace;
-import org.bukkit.event.block.BlockRedstoneEvent;
-import org.bukkit.inventory.Inventory;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.material.Attachable;
-import org.bukkit.material.MaterialData;
-
-import com.github.igotyou.FactoryMod.FactoryModPlugin;
-import com.github.igotyou.FactoryMod.FactoryObject;
-import com.github.igotyou.FactoryMod.interfaces.Factory;
-import com.github.igotyou.FactoryMod.recipes.ProbabilisticEnchantment;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse;
-import com.github.igotyou.FactoryMod.utility.ItemList;
-import com.github.igotyou.FactoryMod.utility.NamedItemStack;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse.InteractionResult;
-
-public abstract class BaseFactory extends FactoryObject implements Factory {
- public static final BlockFace[] REDSTONE_FACES = {BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST, BlockFace.UP, BlockFace.DOWN};
-
- protected int currentProductionTimer = 0;//The "production timer", which trachs for how long the factory has been producing the selected recipe
- protected int currentEnergyTimer = 0;//Time since last energy consumption(if there's no lag, it's in seconds)
- protected double currentRepair;
- protected long timeDisrepair;//The time at which the factory went into disrepair
-
- public BaseFactory(Location factoryLocation,
- Location factoryInventoryLocation, Location factoryPowerSource,
- boolean active, FactoryType factoryType, String subFactoryType) {
- super(factoryLocation, factoryInventoryLocation, factoryPowerSource, active,
- factoryType, subFactoryType);
- this.currentRepair = 0.0;
- this.timeDisrepair=3155692597470L;
- }
-
- public BaseFactory(Location factoryLocation,
- Location factoryInventoryLocation, Location factoryPowerSource,
- boolean active, int tierLevel, FactoryType factoryType,
- Inventory factoryInventory, String subFactoryType) {
- super(factoryLocation, factoryInventoryLocation, factoryPowerSource, active,
- tierLevel, factoryType, factoryInventory, subFactoryType);
- this.currentRepair = 0.0;
- this.timeDisrepair=3155692597470L;
- }
-
- public BaseFactory(Location factoryLocation,
- Location factoryInventoryLocation, Location factoryPowerSource,
- FactoryType factoryType, String subFactoryType) {
- super(factoryLocation, factoryInventoryLocation, factoryPowerSource,
- factoryType, subFactoryType);
- this.currentRepair=0.0;
- this.timeDisrepair=3155692597470L;//Year 2070, default starting value
- }
-
- public BaseFactory(Location factoryLocation,
- Location factoryInventoryLocation, Location factoryPowerSource,
- FactoryType factoryType, boolean active, String subFactoryType,
- int currentProductionTimer, int currentEnergyTimer,
- double currentMaintenance, long timeDisrepair) {
- super(factoryLocation, factoryInventoryLocation, factoryPowerSource,
- factoryType, subFactoryType);
- this.active = active;
- this.currentEnergyTimer = currentEnergyTimer;
- this.currentProductionTimer = currentProductionTimer;
- this.currentRepair=currentMaintenance;
- this.timeDisrepair=timeDisrepair;
- }
-
- private void setActivationLever(boolean state) {
- Block lever = findActivationLever();
- if (lever != null) {
- setLever(lever, state);
- shotGunUpdate(factoryPowerSourceLocation.getBlock());
- }
- }
-
- /**
- * Turns the factory off.
- */
- public void powerOff()
- {
- if(active)
- {
- if (FactoryModPlugin.LEVER_OUTPUT_ENABLED) {
- setActivationLever(false);
- }
-
- //lots of code to make the furnace turn off, without loosing contents.
- Furnace furnace = (Furnace) factoryPowerSourceLocation.getBlock().getState();
- byte data = furnace.getData().getData();
- ItemStack[] oldContents = furnace.getInventory().getContents();
- furnace.getInventory().clear();
- factoryPowerSourceLocation.getBlock().setType(Material.FURNACE);
- furnace = (Furnace) factoryPowerSourceLocation.getBlock().getState();
- furnace.setRawData(data);
- furnace.update();
- furnace.getInventory().setContents(oldContents);
-
- //put active to false
- active = false;
- //reset the production timer
- currentProductionTimer = 0;
- }
- }
-
- public boolean checkHasMaterials() {
- return getAllInputs().allIn(getInventory());
- }
-
- /**
- * Turns the factory on
- */
- public void powerOn()
- {
- //put active to true
- active = true;
-
- // Set attached lever
- if (FactoryModPlugin.LEVER_OUTPUT_ENABLED) {
- setActivationLever(true);
- }
-
- //lots of code to make the furnace light up, without loosing contents.
- Furnace furnace = (Furnace) factoryPowerSourceLocation.getBlock().getState();
- byte data = furnace.getData().getData();
- ItemStack[] oldContents = furnace.getInventory().getContents();
- furnace.getInventory().clear();
- factoryPowerSourceLocation.getBlock().setType(Material.BURNING_FURNACE);
- furnace = (Furnace) factoryPowerSourceLocation.getBlock().getState();
- furnace.setRawData(data);
- furnace.update();
- furnace.getInventory().setContents(oldContents);
- //reset the production timer
- currentProductionTimer = 0;
- }
-
- /**
- * Returns either a success or error message.
- * Called by the blockListener when a player left clicks the powerSourceLocation with the InteractionMaterial
- */
- public List togglePower()
- {
- List response=new ArrayList();
- //if the factory is turned off
- if (!active)
- {
- //if the factory isn't broken or the current recipe can repair it
- if(!isBroken()||isRepairing())
- {
- //is there fuel enough for at least once energy cycle?
- if (isFuelAvailable())
- {
- //are there enough materials for the current recipe in the chest?
- if (checkHasMaterials())
- {
- //turn the factory on
- powerOn();
- //return a success message
- response.add(new InteractionResponse(InteractionResult.SUCCESS, "Factory activated!"));
- return response;
- }
- //there are not enough materials for the recipe!
- else
- {
- //return a failure message, containing which materials are needed for the recipe
- //[Requires the following: Amount Name, Amount Name.]
- //[Requires one of the following: Amount Name, Amount Name.]
-
- ItemList needAll=new ItemList();
- needAll.addAll(getAllInputs().getDifference(getInventory()));
- if(!needAll.isEmpty())
- {
- response.add(new InteractionResponse(InteractionResult.FAILURE,"You need all of the following: "+needAll.toString()+"."));
- }
- return response;
- }
- }
- //if there isn't enough fuel for at least one energy cycle
- else
- {
- //return a error message
- int multiplesRequired=(int)Math.ceil(getProductionTime()/(double)getEnergyTime());
- response.add(new InteractionResponse(InteractionResult.FAILURE, "Factory is missing fuel! ("+getFuel().getMultiple(multiplesRequired).toString()+")"));
- return response;
- }
- }
- else
- {
- response.add(new InteractionResponse(InteractionResult.FAILURE, "Factory is in disrepair!"));
- return response;
- }
- }
- //if the factory is on already
- else
- {
- //turn the factory off
- powerOff();
- //return success message
- response.add(new InteractionResponse(InteractionResult.FAILURE, "Factory has been deactivated!"));
- return response;
- }
- }
-
-
- public abstract ItemList getFuel();
- public abstract double getEnergyTime();
- public abstract double getProductionTime();
- public abstract ItemList getInputs();
- public abstract ItemList getOutputs();
- public abstract ItemList getRepairs();
-
- public void consumeInputs() {
- //Remove inputs from chest
- getInputs().removeFrom(getInventory());
- }
-
- public void produceOutputs() {
- //Adds outputs to chest with appropriate enchantments
- getOutputs().putIn(getInventory(),getEnchantments());
- }
-
- public ItemList getAllInputs() {
- ItemList allInputs = new ItemList();
- allInputs.addAll(getInputs());
- allInputs.addAll(getRepairs());
- return allInputs;
- }
-
- /**
- * called by the manager each update cycle
- */
- public void update()
- {
- //if factory is turned on
- if (active)
- {
- //if the materials required to produce the current recipe are in the factory inventory
- if (checkHasMaterials())
- {
- //if the factory has been working for less than the required time for the recipe
- if (currentProductionTimer < getProductionTime())
- {
- //if the factory power source inventory has enough fuel for at least 1 energyCycle
- if (isFuelAvailable())
- {
- //if the time since fuel was last consumed is equal to how often fuel needs to be consumed
- if (currentEnergyTimer == getEnergyTime()-1)
- {
- //remove one fuel.
- getFuel().removeFrom(getPowerSourceInventory());
- //0 seconds since last fuel consumption
- currentEnergyTimer = 0;
- fuelConsumed();
- }
- //if we don't need to consume fuel, just increment the energy timer
- else
- {
- currentEnergyTimer++;
- }
- //increment the production timer
- currentProductionTimer ++;
- postUpdate();
- }
- //if there is no fuel Available turn off the factory
- else
- {
- powerOff();
- }
- }
-
- //if the production timer has reached the recipes production time remove input from chest, and add output material
- else if (currentProductionTimer >= getProductionTime())
- {
- consumeInputs();
- produceOutputs();
- //Repairs the factory
- repair(getRepairs().removeMaxFrom(getInventory(),(int)currentRepair));
- recipeFinished();
-
- currentProductionTimer = 0;
- powerOff();
- }
- }
- else
- {
- powerOff();
- }
- }
- }
-
- protected void postUpdate() {
- // Hook for subtypes
- }
-
- protected void fuelConsumed() {
- // Hook for subtypes
- }
-
- public List getEnchantments() {
- return new ArrayList();
- }
-
- protected abstract void recipeFinished();
-
- /**
- * returns the date at which the factory went into disrepair
- */
- public long getTimeDisrepair()
- {
- return timeDisrepair;
- }
-
- public Block findActivationLever() {
- Block block = getPowerSourceLocation().getBlock();
- return findAttachedLever(block);
- }
-
- public Block findAttachedLever(Block block) {
- // Check sides for attached lever - required for automation
- Block lever = null;
- for (BlockFace face : REDSTONE_FACES) {
- lever = block.getRelative(face);
- if (lever.getType() == Material.LEVER) {
- BlockFace attached = getAttachedFace(lever);
- if (attached != null && attached == face) {
- return lever;
- }
- }
- }
-
- return null;
- }
-
- private static BlockFace getAttachedFace(Block lever) {
- BlockState state = lever.getState();
- MaterialData md = state.getData();
- if (md instanceof Attachable) {
- BlockFace face = ((Attachable) md).getAttachedFace();
- return face.getOppositeFace();
- } else {
- return null;
- }
- }
-
- private void shotGunUpdate(Block block) {
- for (BlockFace direction : REDSTONE_FACES) {
- Block neighbour = block.getRelative(direction);
-
- }
- }
-
-
- /**
- * Sets the toggled state of a single lever
- * No Lever type check is performed
- *
- * @param lever block
- * @param down state to set to
- */
- private static void setLever(org.bukkit.block.Block lever, boolean down) {
- if (lever.getType() != Material.LEVER) {
- return;
- }
-
- byte data = lever.getData();
- int newData;
- if (down) {
- newData = data | 0x8;
- } else {
- newData = data & 0x7;
- }
- if (newData != data) {
- // CraftBukkit start - Redstone event for lever
- int old = !down ? 1 : 0;
- int current = down ? 1 : 0;
- BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(lever, old, current);
- Bukkit.getServer().getPluginManager().callEvent(eventRedstone);
- if ((eventRedstone.getNewCurrent() > 0) != down) {
- return;
- }
- // CraftBukkit end
- lever.setData((byte) newData, true);
- lever.getState().update();
- Block attached = lever.getRelative(((Attachable) lever.getState().getData()).getAttachedFace());
- }
- }
-
-
- /**
- * returns the Location of the central block of the factory
- */
- public Location getCenterLocation()
- {
- return factoryLocation;
- }
-
- /**
- * returns the Location of the factory Inventory
- */
- public Location getInventoryLocation()
- {
- return factoryInventoryLocation;
- }
-
- /**
- * returns the Location of the factory power source
- */
- public Location getPowerSourceLocation()
- {
- return factoryPowerSourceLocation;
- }
-
- /**
- * Checks if there is enough fuel Available for atleast once energy cycle
- * @return true if there is enough fuel, false otherwise
- */
- public boolean isFuelAvailable()
- {
- return getFuel().allIn(getPowerSourceInventory());
- }
-
- /**
- * Called by the block listener when the player(or a entity) destroys the fatory
- * Drops the build materials if the config says it shouls
- */
- public void destroy(Location destroyLocation)
- {
- powerOff();
- currentRepair=getMaxRepair();
- timeDisrepair=System.currentTimeMillis();
- }
- /*
- * Repairs the factory
- */
- protected void repair(int amountRepaired)
- {
- currentRepair-=amountRepaired;
- if(currentRepair<0)
- {
- currentRepair=0;
- }
- if(currentRepair=totalRepair)
- {
- currentRepair=totalRepair;
- long currentTime=System.currentTimeMillis();
- if (currentTime=getMaxRepair()&&getMaxRepair()!=0;
- }
- /**
- * Returns the production timer
- */
- public int getProductionTimer()
- {
- return currentProductionTimer;
- }
-
- /**
- * Returns the energy timer
- */
- public int getEnergyTimer()
- {
- return currentEnergyTimer;
- }
-
- public boolean isRepairing() {
- return false;
- }
-
- public List getChestResponse() {
- return new ArrayList();
- }
-
- public List getCentralBlockResponse() {
- return new ArrayList();
- }
-}
diff --git a/src/com/github/igotyou/FactoryMod/Factorys/NetherFactory.java b/src/com/github/igotyou/FactoryMod/Factorys/NetherFactory.java
deleted file mode 100644
index 9980f0f4..00000000
--- a/src/com/github/igotyou/FactoryMod/Factorys/NetherFactory.java
+++ /dev/null
@@ -1,605 +0,0 @@
-package com.github.igotyou.FactoryMod.Factorys;
-
-import static com.untamedears.citadel.Utility.getReinforcement;
-import static com.untamedears.citadel.Utility.isReinforced;
-
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.entity.Player;
-import org.bukkit.inventory.ItemStack;
-
-import com.github.igotyou.FactoryMod.FactoryModPlugin;
-import com.github.igotyou.FactoryMod.managers.NetherFactoryManager;
-import com.github.igotyou.FactoryMod.properties.NetherFactoryProperties;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse.InteractionResult;
-import com.github.igotyou.FactoryMod.utility.ItemList;
-import com.github.igotyou.FactoryMod.utility.NamedItemStack;
-import com.untamedears.citadel.entity.PlayerReinforcement;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class NetherFactory extends BaseFactory
-{
-
- private NetherFactoryProperties netherFactoryProperties;//the properties of the production factory
- private Location netherTeleportPlatform;
- private Location overworldTeleportPlatform;
- private NetherOperationMode mode;
- private NetherFactoryManager netherManager;
- public NetherOperationMode getMode() {
- return mode;
- }
-
- /**
- * Constructor called when creating portal
- */
- public NetherFactory (Location factoryLocation, Location factoryInventoryLocation, Location factoryPowerSource, Location nTeleportPlatform, Location oTeleportPlatform,
- NetherFactoryProperties netherFactoryProperties, NetherFactoryManager netherManager)
- {
- super(factoryLocation, factoryInventoryLocation, factoryPowerSource, FactoryType.NETHER_FACTORY, "Nether factory");
- this.netherTeleportPlatform = nTeleportPlatform;
- this.overworldTeleportPlatform = oTeleportPlatform;
- this.netherFactoryProperties = netherFactoryProperties;
- this.mode = NetherOperationMode.REPAIR;
- this.netherManager = netherManager;
- }
-
- /**
- * Constructor
- */
- public NetherFactory (Location factoryLocation, Location factoryInventoryLocation, Location factoryPowerSource, Location nTeleportPlatform, Location oTeleportPlatform,
- boolean active, double currentMaintenance,
- long timeDisrepair, NetherOperationMode mode, NetherFactoryProperties netherFactoryProperties,
- NetherFactoryManager netherManager)
- {
- super(factoryLocation, factoryInventoryLocation, factoryPowerSource, FactoryType.NETHER_FACTORY, active, "Nether factory", 0 , 0, currentMaintenance, timeDisrepair);
- this.netherFactoryProperties = netherFactoryProperties;
- this.netherTeleportPlatform = nTeleportPlatform;
- this.overworldTeleportPlatform = oTeleportPlatform;
- this.mode = mode;
- this.netherManager = netherManager;
- }
-
- @Override
- public boolean isRepairing() {
- return mode == NetherOperationMode.REPAIR;
- }
-
- @Override
- public void destroy(Location destroyLocation)
- {
- if (destroyLocation.equals(overworldTeleportPlatform) || destroyLocation.equals(netherTeleportPlatform))
- {
- powerOff();
- }
- else if (destroyLocation.equals(factoryLocation) || destroyLocation.equals(factoryInventoryLocation) || destroyLocation.equals(factoryPowerSourceLocation))
- {
- powerOff();
- currentRepair=getMaxRepair();
- timeDisrepair=System.currentTimeMillis();
- }
- }
-
- /**
- * Returns either a success or error message.
- * Called by the blockListener when a player left clicks the center block, with the InteractionMaterial
- */
- @Override
- public void update()
- {
- if (mode == NetherOperationMode.REPAIR)
- {
- //if factory is turned on
- if (active)
- {
- //if the materials required to produce the current recipe are in the factory inventory
- if (checkHasMaterials())
- {
- //if the factory has been working for less than the required time for the recipe
- if (currentProductionTimer < getProductionTime())
- {
- //if the factory power source inventory has enough fuel for at least 1 energyCycle
- if (isFuelAvailable())
- {
- //if the time since fuel was last consumed is equal to how often fuel needs to be consumed
- if (currentEnergyTimer == getEnergyTime()-1)
- {
- //remove one fuel.
- getFuel().removeFrom(getPowerSourceInventory());
- //0 seconds since last fuel consumption
- currentEnergyTimer = 0;
- fuelConsumed();
- }
- //if we don't need to consume fuel, just increment the energy timer
- else
- {
- currentEnergyTimer++;
- }
- //increment the production timer
- currentProductionTimer ++;
- postUpdate();
- }
- //if there is no fuel Available turn off the factory
- else
- {
- powerOff();
- }
- }
-
- //if the production timer has reached the recipes production time remove input from chest, and add output material
- else if (currentProductionTimer >= getProductionTime())
- {
- consumeInputs();
- produceOutputs();
- //Repairs the factory
- repair(getRepairs().removeMaxFrom(getInventory(),(int)currentRepair));
- recipeFinished();
-
- currentProductionTimer = 0;
- powerOff();
- }
- }
- else
- {
- powerOff();
- }
- }
- }
- else if (mode == NetherOperationMode.TELEPORT)
- {
- if(!isFuelAvailable())
- {
- togglePower();
- }
- }
- }
-
- public List getTeleportationBlockResponse(Player player, Location clickedBlock)
- {
- List responses=new ArrayList();
- //does the player have acsess to the nether factory via ciatdel?
- if ((!FactoryModPlugin.CITADEL_ENABLED || (FactoryModPlugin.CITADEL_ENABLED && !isReinforced(factoryLocation))) ||
- (((PlayerReinforcement) getReinforcement(factoryLocation)).isAccessible(player)))
- {
- if (mode == NetherOperationMode.TELEPORT)
- {
- if (active)
- {
- if (isFuelAvailable() || !netherFactoryProperties.getUseFuelOnTeleport())
- {
- Location playerLocation = player.getLocation();
- if ( playerLocation.getBlockX() == clickedBlock.getBlockX()
- && (playerLocation.getBlockY()-1) == clickedBlock.getBlockY()
- && playerLocation.getBlockZ() == clickedBlock.getBlockZ())
- {
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, "Commencing teleportation..."));
- if (clickedBlock.getWorld().getName().equalsIgnoreCase(FactoryModPlugin.WORLD_NAME))
- {
- if (FactoryModPlugin.REMOVE_BLOCK_ABOVE_TELEPORT_PLATFORM_ON_TELEPORT)
- {
- removeBlocksAboveTeleportPlatform(netherTeleportPlatform);
- }
- Location destination = new Location(netherTeleportPlatform.getWorld(), netherTeleportPlatform.getX(), netherTeleportPlatform.getY(), netherTeleportPlatform.getZ(), playerLocation.getYaw(), playerLocation.getPitch());
- destination.add(0.5, 1.5, 0.5);
- player.teleport(destination);
- if (netherFactoryProperties.getUseFuelOnTeleport())
- {
- getFuel().removeFrom(getPowerSourceInventory());
- }
- }
- else if (clickedBlock.getWorld().getName().equalsIgnoreCase(FactoryModPlugin.NETHER_NAME))
- {
- if (FactoryModPlugin.REMOVE_BLOCK_ABOVE_TELEPORT_PLATFORM_ON_TELEPORT)
- {
- removeBlocksAboveTeleportPlatform(overworldTeleportPlatform);
- }
- Location destination = new Location(overworldTeleportPlatform.getWorld(), overworldTeleportPlatform.getX(), overworldTeleportPlatform.getY(), overworldTeleportPlatform.getZ(), playerLocation.getYaw(), playerLocation.getPitch());
- destination.add(0.5, 1.5, 0.5);
- player.teleport(destination);
- if (netherFactoryProperties.getUseFuelOnTeleport())
- {
- getFuel().removeFrom(getPowerSourceInventory());
- }
- }
- }
- else
- {
- responses.add(new InteractionResponse(InteractionResult.FAILURE, "Can't teleport, you must stand on the teleportation block!"));
- }
- }
- else
- {
- responses.add(new InteractionResponse(InteractionResult.FAILURE, "Can't teleport, factory is missing fuel! ("+getFuel().getMultiple(1).toString()+")"));
- }
- }
- else
- {
- responses.add(new InteractionResponse(InteractionResult.FAILURE, "Can't teleport, factory is turned off!"));
- }
- }
- else
- {
- responses.add(new InteractionResponse(InteractionResult.FAILURE, "Can't teleport, factory is not in teleport mode."));
- }
- return responses;
- }
- else
- {
- //is the player potentialy holding a security note/ticket?
- ItemStack itemInHand = player.getItemInHand();
- if (itemInHand.getType() == Material.PAPER)
- {
- if (isInTicketMode())
- {
- int ticketCheck = checkTicket(itemInHand);
- if (ticketCheck > 0)
- {
- if (mode == NetherOperationMode.TELEPORT)
- {
- if (active)
- {
- if (isFuelAvailable())
- {
- Location playerLocation = player.getLocation();
- if ( playerLocation.getBlockX() == clickedBlock.getBlockX()
- && (playerLocation.getBlockY()-1) == clickedBlock.getBlockY()
- && playerLocation.getBlockZ() == clickedBlock.getBlockZ())
- {
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, "Commencing teleportation..."));
- if (clickedBlock.getWorld().getName().equalsIgnoreCase(FactoryModPlugin.WORLD_NAME))
- {
- if (FactoryModPlugin.REMOVE_BLOCK_ABOVE_TELEPORT_PLATFORM_ON_TELEPORT)
- {
- removeBlocksAboveTeleportPlatform(netherTeleportPlatform);
- }
- Location destination = new Location(netherTeleportPlatform.getWorld(), netherTeleportPlatform.getX(), netherTeleportPlatform.getY(), netherTeleportPlatform.getZ(), playerLocation.getYaw(), playerLocation.getPitch());
- destination.add(0.5, 1.5, 0.5);
- player.teleport(destination);
- if (ticketCheck == 2)
- {
- transferTicket(player, itemInHand);
- }
- if (netherFactoryProperties.getUseFuelOnTeleport())
- {
- getFuel().removeFrom(getPowerSourceInventory());
- }
- }
- else if (clickedBlock.getWorld().getName().equalsIgnoreCase(FactoryModPlugin.NETHER_NAME))
- {
- if (FactoryModPlugin.REMOVE_BLOCK_ABOVE_TELEPORT_PLATFORM_ON_TELEPORT)
- {
- removeBlocksAboveTeleportPlatform(overworldTeleportPlatform);
- }
- Location destination = new Location(overworldTeleportPlatform.getWorld(), overworldTeleportPlatform.getX(), overworldTeleportPlatform.getY(), overworldTeleportPlatform.getZ(), playerLocation.getYaw(), playerLocation.getPitch());
- destination.add(0.5, 1.5, 0.5);
- player.teleport(destination);
- if (ticketCheck == 2)
- {
- transferTicket(player, itemInHand);
- }
- if (netherFactoryProperties.getUseFuelOnTeleport())
- {
- getFuel().removeFrom(getPowerSourceInventory());
- }
- }
- }
- else
- {
- responses.add(new InteractionResponse(InteractionResult.FAILURE, "Can't teleport, you must stand on the teleportation block!"));
- }
- }
- else
- {
- responses.add(new InteractionResponse(InteractionResult.FAILURE, "Can't teleport, factory is missing fuel! ("+getFuel().getMultiple(1).toString()+")"));
- }
- }
- else
- {
- responses.add(new InteractionResponse(InteractionResult.FAILURE, "Can't teleport, factory is turned off!"));
- }
- }
- else
- {
- responses.add(new InteractionResponse(InteractionResult.FAILURE, "Can't teleport, factory is not in teleport mode."));
- }
- }
- else
- {
- responses.add(new InteractionResponse(InteractionResult.FAILURE, "Your ticket does not match any in the factory."));
- }
- }
- else
- {
- responses.add(new InteractionResponse(InteractionResult.FAILURE, "You don't have permission to use this factory."));
- }
- }
- else
- {
- responses.add(new InteractionResponse(InteractionResult.FAILURE, "You don't have permission to use this factory."));
- }
- }
- return responses;
- }
-
- @Override
- public List getCentralBlockResponse()
- {
- List responses=new ArrayList();
- //Is the factory off
- if (!active)
- {
- //is the recipe is initiated
- if (mode == null)
- {
- mode = NetherOperationMode.REPAIR;
- }
- else
- {
- mode = mode.getNext();
- }
-
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, "-----------------------------------------------------"));
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, "Switched mode to: " + mode.getDescription()+"."));
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, "Next mode is: "+mode.getNext().getDescription()+"."));
- }
- else
- {
- responses.add(new InteractionResponse(InteractionResult.FAILURE, "You can't change modes while the nether factory is on! Turn it off first."));
- }
- return responses;
- }
-
- @Override
- public ItemList getFuel() {
- return netherFactoryProperties.getFuel();
- }
-
- /**
- * Returns the factory's properties
- */
- public NetherFactoryProperties getProperties()
- {
- return netherFactoryProperties;
- }
-
- @Override
- public List getChestResponse()
- {
- List responses=new ArrayList();
- String status=active ? "On" : "Off";
- //Name: Status with XX% health.
- int maxRepair = netherFactoryProperties.getRepair();
- boolean maintenanceActive = maxRepair!=0;
- int health =(!maintenanceActive) ? 100 : (int) Math.round(100*(1-currentRepair/(maxRepair)));
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, netherFactoryProperties.getName()+": "+status+" with "+String.valueOf(health)+"% health."));
- //Current mode: mode description
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, "Current mode: " + mode.getDescription()));
- //Overworld side teleport platform is at X: Y: Z:
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, "Overworld side teleport platform is:" + overworldTeleportPlatform.getBlockX() + " Y:" + overworldTeleportPlatform.getBlockY() + " Z:" + overworldTeleportPlatform.getBlockZ()));
- //Nether side teleport platform is at X: Y: Z:
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, "Nether side teleport platform is:" + netherTeleportPlatform.getBlockX() + " Y:" + netherTeleportPlatform.getBlockY() + " Z:" + netherTeleportPlatform.getBlockZ()));
- //[Will repair XX% of the factory]
- if(!getRepairs().isEmpty()&&maintenanceActive)
- {
- int amountAvailable=getRepairs().amountAvailable(getInventory());
- int amountRepaired=amountAvailable>currentRepair ? (int) Math.ceil(currentRepair) : amountAvailable;
- int percentRepaired=(int) (( (double) amountRepaired)/netherFactoryProperties.getRepair()*100);
- responses.add(new InteractionResponse(InteractionResult.SUCCESS,"Will repair "+String.valueOf(percentRepaired)+"% of the factory with "+getRepairs().getMultiple(amountRepaired).toString()+"."));
- }
- return responses;
- }
-
- protected void recipeFinished() {
- }
-
- @Override
- public ItemList getInputs() {
- if(mode == NetherOperationMode.REPAIR)
- {
- return new ItemList();
- }
- else
- {
- return new ItemList();
- }
- }
-
- @Override
- public ItemList getOutputs() {
- return new ItemList();
- }
-
- @Override
- public ItemList getRepairs() {
- ItemList repairMaterials = new ItemList();
- switch(mode) {
- case REPAIR:
- repairMaterials.addAll(netherFactoryProperties.getRepairMaterials());
- repairMaterials = repairMaterials.getMultiple(netherManager.getScalingFactor(factoryLocation));
- break;
- default:
- break;
- }
- return repairMaterials;
- }
-
- @Override
- public double getEnergyTime() {
- return netherFactoryProperties.getEnergyTime();
- }
-
- @Override
- public double getProductionTime() {
- switch(mode) {
- case REPAIR:
- return netherFactoryProperties.getRepairTime();
- default:
- return 1;
- }
- }
-
- @Override
- public int getMaxRepair() {
- return netherFactoryProperties.getRepair();
- }
-
- public Location getNetherTeleportPlatform()
- {
- return netherTeleportPlatform;
- }
-
-
- public Location getOverworldTeleportPlatform()
- {
- return overworldTeleportPlatform;
- }
-
- @Override
- public boolean isWhole(boolean initCall)
- {
- //Check if power source exists
- if(factoryPowerSourceLocation.getBlock().getType().getId()== 61 || factoryPowerSourceLocation.getBlock().getType().getId()== 62)
- {
- //Check inventory location
- if(factoryInventoryLocation.getBlock().getType().getId()== 54)
- {
- //Check Interaction block location
- if(factoryLocation.getBlock().getType()==FactoryModPlugin.CENTRAL_BLOCK_MATERIAL)
- {
- if (netherTeleportPlatform == null && overworldTeleportPlatform == null && initCall)
- {
- return true;
- }
- else
- {
- if (netherTeleportPlatform.getBlock().getType() == FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL)
- {
- if (overworldTeleportPlatform.getBlock().getType() == FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL)
- {
- return true;
- }
- }
- }
- }
- }
- }
- return false;
- }
-
- public boolean isInTicketMode()
- {
- for (ItemStack itemSlot : getInventory().getContents())
- {
- if (itemSlot != null && itemSlot.getType() == Material.PAPER)
- {
- return true;
- }
- }
- return false;
- }
-
- public int checkTicket(ItemStack ticket)
- {
- int amount = 0;
- for(ItemStack itemStack: getInventory().getContents())
- {
- if (itemStack == null)
- {
- continue;
- }
- if (itemStack.isSimilar(ticket))
- {
- amount = amount+itemStack.getAmount();
- }
- }
- if (amount == 1)
- {
- return 1;
- }
- else if (amount >= 2)
- {
- return 2;
- }
- else
- {
- return 0;
- }
- }
-
- public void removeBlocksAboveTeleportPlatform(Location teleportPlatform)
- {
- Location netherLocation1 = teleportPlatform.clone();
- netherLocation1.add(0, 1, 0);
- Location netherLocation2 = teleportPlatform.clone();
- netherLocation2.add(0, 2, 0);
- Location netherLocation3 = teleportPlatform.clone();
- netherLocation3.add(0, 3, 0);
- netherLocation1.getBlock().setType(Material.AIR);
- netherLocation1.getBlock().getState().update(true);
- netherLocation2.getBlock().setType(Material.AIR);
- netherLocation2.getBlock().getState().update(true);
- netherLocation3.getBlock().setType(Material.AIR);
- netherLocation3.getBlock().getState().update(true);
- }
-
- public void regenerateTeleportBlock(Location location)
- {
- if (location.equals(overworldTeleportPlatform))
- {
- netherTeleportPlatform.getBlock().setType(FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL);
- netherTeleportPlatform.getBlock().getState().update(true);
- }
- else if(location.equals(netherTeleportPlatform))
- {
- overworldTeleportPlatform.getBlock().setType(FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL);
- overworldTeleportPlatform.getBlock().getState().update(true);
- }
-
- }
-
- public void transferTicket(Player player, ItemStack ticket)
- {
- ItemStack clonedTicket = ticket.clone();
- clonedTicket.setAmount(1);
- ticket.setAmount(ticket.getAmount()-1);
- player.setItemInHand(ticket);
- getInventory().addItem(clonedTicket);
- }
-
- public enum NetherOperationMode {
- REPAIR(0, "Repair"),
- TELEPORT(1, "Teleport");
-
- private static final int MAX_ID = 2;
- private int id;
- private String description;
-
- private NetherOperationMode(int id, String description) {
- this.id = id;
- this.description = description;
- }
-
- public String getDescription() {
- return description;
- }
-
- public static NetherOperationMode byId(int id) {
- for (NetherOperationMode mode : NetherOperationMode.values()) {
- if (mode.getId() == id)
- return mode;
- }
- return null;
- }
-
- public int getId() {
- return id;
- }
-
- public NetherOperationMode getNext() {
- int nextId = (getId() + 1) % MAX_ID;
- return NetherOperationMode.byId(nextId);
- }
- }
-}
diff --git a/src/com/github/igotyou/FactoryMod/Factorys/PrintingPress.java b/src/com/github/igotyou/FactoryMod/Factorys/PrintingPress.java
deleted file mode 100644
index fb0a4bce..00000000
--- a/src/com/github/igotyou/FactoryMod/Factorys/PrintingPress.java
+++ /dev/null
@@ -1,678 +0,0 @@
-package com.github.igotyou.FactoryMod.Factorys;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.inventory.Inventory;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.BookMeta;
-import org.bukkit.inventory.meta.ItemMeta;
-
-import com.github.igotyou.FactoryMod.FactoryModPlugin;
-import com.github.igotyou.FactoryMod.FactoryObject;
-import com.github.igotyou.FactoryMod.interfaces.Factory;
-import com.github.igotyou.FactoryMod.properties.PrintingPressProperties;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse;
-import com.github.igotyou.FactoryMod.utility.ItemList;
-import com.github.igotyou.FactoryMod.utility.NamedItemStack;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse.InteractionResult;
-import com.github.igotyou.FactoryMod.utility.PrettyLore;
-
-public class PrintingPress extends BaseFactory {
-
- private PrintingPressProperties printingPressProperties;
- private OperationMode mode;
- public OperationMode getMode() {
- return mode;
- }
-
- private int containedPaper;
- private int containedBindings;
- private int containedSecurityMaterials;
- private int[] processQueue;
- private int processQueueOffset;
- private int lockedResultCode;
-
- public PrintingPress(Location factoryLocation,
- Location factoryInventoryLocation, Location factoryPowerSource,
- boolean active, PrintingPressProperties printingPressProperties) {
- super(factoryLocation, factoryInventoryLocation, factoryPowerSource, active,
- FactoryType.PRINTING_PRESS, "press");
- this.mode = OperationMode.REPAIR;
- this.printingPressProperties = printingPressProperties;
- this.containedPaper = 0;
- this.containedBindings = 0;
- this.containedSecurityMaterials = 0;
- this.processQueue = new int[1];
- this.processQueueOffset = 0;
- this.lockedResultCode = 0;
- }
-
- public PrintingPress(Location factoryLocation,
- Location factoryInventoryLocation, Location factoryPowerSource,
- boolean active,
- int currentProductionTimer, int currentEnergyTimer,
- double currentMaintenance, long timeDisrepair, OperationMode mode,
- PrintingPressProperties printingPressProperties,
- int containedPaper, int containedBindings, int containedSecurityMaterials,
- int[] processQueue, int lockedResultCode) {
- super(factoryLocation, factoryInventoryLocation, factoryPowerSource,
- FactoryType.PRINTING_PRESS, active, "Printing Press", currentProductionTimer,
- currentEnergyTimer, currentMaintenance, timeDisrepair);
- this.mode = mode;
- this.active = active;
- this.printingPressProperties = printingPressProperties;
- this.containedPaper = containedPaper;
- this.containedBindings = containedBindings;
- this.containedSecurityMaterials = containedSecurityMaterials;
- this.containedPaper = 0;
- this.containedBindings = 0;
- this.containedSecurityMaterials = 0;
- this.processQueue = processQueue;
- this.processQueueOffset = 0;
- this.lockedResultCode = lockedResultCode;
- }
-
- public int getLockedResultCode() {
- return lockedResultCode;
- }
-
- @Override
- public ItemList getFuel() {
- return printingPressProperties.getFuel();
- }
-
- public int getContainedPaper() {
- return containedPaper;
- }
-
- public int getContainedBindings() {
- return containedBindings;
- }
-
- public int getContainedSecurityMaterials() {
- return containedSecurityMaterials;
- }
-
- @Override
- public double getEnergyTime() {
- return printingPressProperties.getEnergyTime();
- }
-
- @Override
- public double getProductionTime() {
- switch(mode) {
- case SET_PLATES:
- NamedItemStack plates = getPlateResult();
- int pageCount = 1;
- if (plates != null) {
- pageCount = Math.max(1, ((BookMeta) plates.getItemMeta()).getPageCount());
- }
- pageCount = Math.min(pageCount, printingPressProperties.getBookPagesCap());
- return printingPressProperties.getSetPlateTime() * pageCount;
- case REPAIR:
- return printingPressProperties.getRepairTime();
- default:
- // Continuous recipes -> 1 year limit at 1 update per second
- return 3600 * 24 * 365;
- }
- }
-
- @Override
- public ItemList getInputs() {
- ItemList inputs = new ItemList();
- switch(mode) {
- case SET_PLATES:
- NamedItemStack plates = getPlateResult();
- if (plates != null) {
- int pageCount = ((BookMeta) plates.getItemMeta()).getPageCount();
- pageCount = Math.min(pageCount, printingPressProperties.getBookPagesCap());
- inputs.addAll(printingPressProperties.getPlateMaterials().getMultiple(pageCount));
- }
- break;
- }
- return inputs;
- }
-
- @Override
- public ItemList getOutputs() {
- ItemList outputs = new ItemList();
- switch(mode) {
- case SET_PLATES:
- NamedItemStack plates = getPlateResult();
- if (plates != null) {
- outputs.add(plates);
- }
- break;
- }
- return outputs;
- }
-
- @Override
- public ItemList getRepairs() {
- ItemList inputs = new ItemList();
- switch(mode) {
- case REPAIR:
- inputs.addAll(printingPressProperties.getRepairMaterials());
- break;
- }
- return inputs;
- }
-
- @Override
- public int getMaxRepair() {
- return printingPressProperties.getMaxRepair();
- }
-
- @Override
- public void powerOn() {
- super.powerOn();
- this.containedPaper = 0;
- this.containedBindings = 0;
- this.containedSecurityMaterials = 0;
- int outputDelay = printingPressProperties.getPageLead();
- this.processQueue = new int[outputDelay];
- this.processQueueOffset = 0;
-
- if (mode == OperationMode.PRINT_BOOKS ||
- mode == OperationMode.PRINT_PAMPHLETS ||
- mode == OperationMode.PRINT_SECURITY) {
- // Require product
- if (!getPrintResult().isValid()) {
- powerOff();
- } else {
- this.lockedResultCode = getPrintResult().hashCode();
- }
- }
- }
-
- @Override
- public void fuelConsumed() {
- // Check for sneaky plate swaps, shut down
- if (mode == OperationMode.PRINT_BOOKS ||
- mode == OperationMode.PRINT_PAMPHLETS ||
- mode == OperationMode.PRINT_SECURITY) {
- // Require product
- int expectedResultCode = getPrintResult().hashCode();
- if (this.lockedResultCode != expectedResultCode) {
- powerOff();
- return;
- }
- }
-
- switch(mode) {
- case PRINT_BOOKS:
- printBooksUpdate();
- break;
- case PRINT_PAMPHLETS:
- printPamphletsUpdate();
- break;
- case PRINT_SECURITY:
- printSecurityUpdate();
- break;
- }
- }
-
- public void printBooksUpdate() {
- // Output finished results
- int finished = processQueue[processQueueOffset];
- if (finished > 0) {
- NamedItemStack result = getPrintResult().toBook();
- ItemList set = new ItemList();
- set.add(result);
- set = set.getMultiple(finished);
- set.putIn(getInventory());
- }
-
- // Load materials
- ItemList pages = printingPressProperties.getPageMaterials();
- boolean hasPages = pages.allIn(getInventory());
- boolean inputStall = false;
-
- int pageCount = getPrintResult().pageCount();
- pageCount = Math.min(pageCount, printingPressProperties.getBookPagesCap());
-
- if (hasPages) {
- // Check bindings
- int expectedBindings = (int) Math.floor((double) (containedPaper + printingPressProperties.getPagesPerLot()) / (double) pageCount);
- boolean hasBindings = true;
- ItemList allBindings = new ItemList();
- if (expectedBindings > containedBindings) {
- int neededBindings = expectedBindings - containedBindings;
- allBindings = printingPressProperties.getBindingMaterials().getMultiple(neededBindings);
- hasBindings = allBindings.allIn(getInventory());
- }
-
- if (hasBindings) {
- pages.removeFrom(getInventory());
- containedPaper += printingPressProperties.getPagesPerLot();
-
- while (containedBindings < expectedBindings) {
- if (printingPressProperties.getBindingMaterials().allIn(getInventory())) {
- printingPressProperties.getBindingMaterials().removeFrom(getInventory());
- containedBindings += 1;
- }
- }
- } else {
- inputStall = true;
- }
- } else {
- inputStall = true;
- }
-
- // Put materials in queue
- int booksInPages = containedPaper / pageCount;
- int copiesIn = Math.min(booksInPages, containedBindings);
- containedPaper -= copiesIn * pageCount;
- containedBindings -= copiesIn;
- processQueue[processQueueOffset] = copiesIn;
-
- if (inputStall) {
- stopIfEmpty();
- }
-
- // Rotate on queue
- processQueueOffset += 1;
- if (processQueueOffset >= processQueue.length) {
- processQueueOffset = 0;
- }
- }
-
- private void stopIfEmpty() {// Check if queue is empty
- boolean queueEmpty = true;
- for (int amount : processQueue) {
- if (amount > 0) {
- queueEmpty = false;
- break;
- }
- }
- if (queueEmpty) {
- // Stalled and empty
- powerOff();
- }
- }
-
- public void printPamphletsUpdate() {
- // Output finished results
- int finished = processQueue[processQueueOffset];
- if (finished > 0) {
- NamedItemStack result = getPrintResult().toPamphlet();
- ItemList set = new ItemList();
- set.add(result);
- set = set.getMultiple(finished);
- set.putIn(getInventory());
- }
-
- // Load materials
- ItemList pages = printingPressProperties.getPamphletMaterials();
- boolean hasPages = pages.allIn(getInventory());
- if (hasPages) {
- pages.removeFrom(getInventory());
- processQueue[processQueueOffset] = printingPressProperties.getPamphletsPerLot();
- } else {
- processQueue[processQueueOffset] = 0;
- stopIfEmpty();
- }
-
- // Rotate on queue
- processQueueOffset += 1;
- if (processQueueOffset >= processQueue.length) {
- processQueueOffset = 0;
- }
- }
-
- public void printSecurityUpdate() {
- // Output finished results
- int finished = processQueue[processQueueOffset];
- if (finished > 0) {
- NamedItemStack result = getPrintResult().toSecurityNote();
- ItemList set = new ItemList();
- set.add(result);
- set = set.getMultiple(finished);
- set.putIn(getInventory());
- }
-
- // Load materials
- ItemList pages = printingPressProperties.getPamphletMaterials();
- boolean hasPages = pages.allIn(getInventory());
- boolean inputStall = false;
- if (hasPages) {
- // Check security materials
- int expectedExtras = (int) Math.ceil((double) containedPaper + printingPressProperties.getPamphletsPerLot());
- boolean hasExtras = true;
- ItemList allSecurityMaterials = new ItemList();
- if (expectedExtras > containedSecurityMaterials) {
- int neededExtras = expectedExtras - containedSecurityMaterials;
- int neededExtraLots = (int) Math.ceil((double) neededExtras / (double) printingPressProperties.getSecurityNotesPerLot());
- allSecurityMaterials = printingPressProperties.getSecurityMaterials().getMultiple(neededExtraLots);
- hasExtras = allSecurityMaterials.allIn(getInventory());
- }
-
- if (hasExtras) {
- pages.removeFrom(getInventory());
- containedPaper += printingPressProperties.getPamphletsPerLot();
-
- // Load security materials if security notes
- while (containedSecurityMaterials < containedPaper) {
- if (printingPressProperties.getSecurityMaterials().allIn(getInventory())) {
- printingPressProperties.getSecurityMaterials().removeFrom(getInventory());
- containedSecurityMaterials += printingPressProperties.getSecurityNotesPerLot();
- }
- }
- } else {
- inputStall = true;
- }
- } else {
- inputStall = true;
- }
-
- // Put materials in queue
- int copiesIn = containedPaper;
- containedPaper -= copiesIn;
- containedSecurityMaterials -= copiesIn;
- processQueue[processQueueOffset] = copiesIn;
-
- if (inputStall) {
- stopIfEmpty();
- }
-
- // Rotate on queue
- processQueueOffset += 1;
- if (processQueueOffset >= processQueue.length) {
- processQueueOffset = 0;
- }
- }
-
- public int[] getProcessQueue() {
- // Rotate so that current place in ring buffer is 0
- int[] newQ = new int[processQueue.length];
- int toEnd = processQueue.length - processQueueOffset;
- System.arraycopy(processQueue, processQueueOffset, newQ, 0, toEnd);
- if (processQueueOffset > 0) {
- System.arraycopy(processQueue, 0, newQ, toEnd, processQueueOffset);
- }
- return newQ;
- }
-
- public boolean isRepairing() {
- return mode == OperationMode.REPAIR;
- }
-
- /**
- * Returns either a success or error message.
- * Called by the blockListener when a player left clicks the center block, with the InteractionMaterial
- */
- public List getCentralBlockResponse()
- {
- List responses=new ArrayList();
- //Is the factory off
- if (!active)
- {
- //is the recipe is initiated
- if (mode == null) {
- mode = OperationMode.REPAIR;
- } else {
- mode = mode.getNext();
- }
-
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, "-----------------------------------------------------"));
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, "Switched mode to: " + mode.getDescription()+"."));
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, "Next mode is: "+mode.getNext().getDescription()+"."));
- }
- //if the factory is on, return error message
- else
- {
- responses.add(new InteractionResponse(InteractionResult.FAILURE, "You can't change modes while the press is on! Turn it off first."));
- }
- return responses;
- }
-
- public List getChestResponse()
- {
- List responses=new ArrayList();
- String status=active ? "On" : "Off";
- //Name: Status with XX% health.
- int maxRepair = printingPressProperties.getMaxRepair();
- boolean maintenanceActive = maxRepair!=0;
- int health =(!maintenanceActive) ? 100 : (int) Math.round(100*(1-currentRepair/(maxRepair)));
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, printingPressProperties.getName()+": "+status+" with "+String.valueOf(health)+"% health."));
- //RecipeName: X seconds(Y ticks)[ - XX% done.]
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, mode.getDescription()));
- //[Inputs: amount Name, amount Name.]
- if(!getInputs().isEmpty())
- {
- responses.add(new InteractionResponse(InteractionResult.SUCCESS,"Input: "+getInputs().toString()+"."));
- }
- //[Outputs: amount Name, amount Name.]
- if(!getOutputs().isEmpty())
- {
- responses.add(new InteractionResponse(InteractionResult.SUCCESS,"Output: "+getOutputs().toString()+"."));
- }
- //[Will repair XX% of the factory]
- if(!getRepairs().isEmpty()&&maintenanceActive)
- {
- int amountAvailable=getRepairs().amountAvailable(getInventory());
- int amountRepaired=amountAvailable>currentRepair ? (int) Math.ceil(currentRepair) : amountAvailable;
- int percentRepaired=(int) (( (double) amountRepaired)/printingPressProperties.getMaxRepair()*100);
- responses.add(new InteractionResponse(InteractionResult.SUCCESS,"Will repair "+String.valueOf(percentRepaired)+"% of the factory with "+getRepairs().getMultiple(amountRepaired).toString()+"."));
- }
- return responses;
- }
-
- private PrintResult getPrintResult() {
- return new PrintResult();
- }
-
- private NamedItemStack getPlateResult() {
- for (ItemStack stack : getInventory().getContents()) {
- if (stack == null) {
- continue;
- }
- if (stack.getType().equals(Material.BOOK_AND_QUILL) ||
- stack.getType().equals(Material.WRITTEN_BOOK)) {
- ItemMeta meta = stack.getItemMeta();
- if (meta instanceof BookMeta) {
- // Found a book
- BookMeta bookData = (BookMeta) meta;
- String title = bookData.getTitle();
- String author = bookData.getAuthor();
- if (author == null) {
- author = "";
- }
- List pages = new ArrayList(bookData.getPages());
-
- NamedItemStack plates = new NamedItemStack(Material.WRITTEN_BOOK, 1, (short) 0, "plate");
- BookMeta plateMeta = (BookMeta) plates.getItemMeta();
- plateMeta.setTitle(title);
- plateMeta.setAuthor(author);
- plateMeta.setPages(pages);
- int watermark = new Random().nextInt(9000) + 1000;
- List lore = new ArrayList();
- lore.add("Print plates #" + Integer.toString(watermark));
- plateMeta.setLore(lore);
- plates.setItemMeta(plateMeta);
- return plates;
- }
- }
- }
- return null;
- }
-
- private class PrintResult {
- private static final int PAGE_LORE_LENGTH_LIMIT = 140;
- private static final int PAGE_LORE_LINE_LIMIT = 35;
- private List pages;
- private String title;
- private String author;
- private int watermark;
- private boolean valid;
-
- PrintResult() {
- Pattern printPlateRE = Pattern.compile("^Print plates #([0-9]{4})$");
- Inventory inventory = getInventory();
-
- title = "";
- author = "";
- watermark = 0;
- valid = false;
- pages = new ArrayList();
-
- for (ItemStack stack : inventory.getContents()) {
- if (stack == null) {
- continue;
- }
-
- if (stack.getType().equals(Material.BOOK_AND_QUILL) ||
- stack.getType().equals(Material.WRITTEN_BOOK)) {
- ItemMeta meta = stack.getItemMeta();
- List lore = meta.getLore();
- if (lore != null && !lore.isEmpty()) {
- String firstLore = lore.get(0);
- Matcher match = printPlateRE.matcher(firstLore);
- if (match.matches()) {
- if (meta instanceof BookMeta) {
- BookMeta bookData = (BookMeta) meta;
- title = bookData.getTitle();
- author = bookData.getAuthor();
- if (author == null) {
- author = "";
- }
- watermark = Integer.parseInt(match.group(1));
- pages = new ArrayList(bookData.getPages());
- valid = true;
- break;
- }
- }
- }
- }
- }
- }
-
- public boolean isValid() {
- return valid;
- }
-
- public int pageCount() {
- return pages.size();
- }
-
- public NamedItemStack toBook() {
- NamedItemStack book = new NamedItemStack(Material.WRITTEN_BOOK, 1, (short) 0, "book");
- BookMeta meta = (BookMeta) book.getItemMeta();
- meta.setTitle(title);
- meta.setAuthor(author);
- meta.setPages(pages);
- book.setItemMeta(meta);
- return book;
- }
-
- public NamedItemStack toPamphlet() {
- NamedItemStack book = new NamedItemStack(Material.PAPER, 1, (short) 0, "pamphlet");
- ItemMeta meta = book.getItemMeta();
- meta.setDisplayName(title);
- List lore = new ArrayList();
- if (pages.size() > 0) {
- lore.addAll(filterPageLore(pages.get(0)));
- }
- meta.setLore(lore);
- book.setItemMeta(meta);
- return book;
- }
-
- public NamedItemStack toSecurityNote() {
- NamedItemStack book = new NamedItemStack(Material.PAPER, 1, (short) 0, "note");
- ItemMeta meta = book.getItemMeta();
- meta.setDisplayName(title);
- List lore = new ArrayList();
- if (pages.size() > 0) {
- lore.addAll(filterPageLore(pages.get(0)));
- }
- if (author.equals("")) {
- lore.add(String.format("§2#%d", watermark));
- } else {
- lore.add(String.format("§2%s #%d", author, watermark));
- }
- meta.setLore(lore);
- book.setItemMeta(meta);
- return book;
- }
-
- private List filterPageLore(String lore) {
- // Remove green
- lore = lore.replace("§2", "");
-
- // Remove line breaks
- lore = lore.replaceAll("[ \r\n]+", " ");
-
- // Limit length
- lore = PrettyLore.limitLengthEllipsis(lore, PAGE_LORE_LENGTH_LIMIT);
-
- // Split in to lines based on length
- List lines = PrettyLore.splitLines(lore, PAGE_LORE_LINE_LIMIT);
-
- return lines;
- }
-
- public int hashCode() {
- int code = watermark;
- code = code ^ title.hashCode();
- code += 349525;
- code = code ^ author.hashCode();
- code += 349525;
- for (String page : pages) {
- code = code ^ page.hashCode();
- code += 349525;
- }
- return code;
- }
- }
-
- public enum OperationMode {
- REPAIR(0, "Repair"),
- SET_PLATES(1, "Set plates"),
- PRINT_BOOKS(2, "Print books"),
- PRINT_PAMPHLETS(3, "Print pamphlets"),
- PRINT_SECURITY(4, "Print security notes");
-
- private static final int MAX_ID = 5;
- private int id;
- private String description;
-
- private OperationMode(int id, String description) {
- this.id = id;
- this.description = description;
- }
-
- public String getDescription() {
- return description;
- }
-
- public static OperationMode byId(int id) {
- for (OperationMode mode : OperationMode.values()) {
- if (mode.getId() == id)
- return mode;
- }
- return null;
- }
-
- public int getId() {
- return id;
- }
-
- public OperationMode getNext() {
- int nextId = (getId() + 1) % MAX_ID;
- return OperationMode.byId(nextId);
- }
- }
-
- @Override
- protected void recipeFinished() {
- // TODO Auto-generated method stub
-
- }
-}
diff --git a/src/com/github/igotyou/FactoryMod/Factorys/ProductionFactory.java b/src/com/github/igotyou/FactoryMod/Factorys/ProductionFactory.java
deleted file mode 100644
index 340e4af3..00000000
--- a/src/com/github/igotyou/FactoryMod/Factorys/ProductionFactory.java
+++ /dev/null
@@ -1,301 +0,0 @@
-package com.github.igotyou.FactoryMod.Factorys;
-
-import org.bukkit.Bukkit;
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.block.Block;
-import org.bukkit.block.BlockFace;
-import org.bukkit.block.BlockState;
-import org.bukkit.block.Furnace;
-import org.bukkit.event.block.BlockRedstoneEvent;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.material.Attachable;
-import org.bukkit.material.Lever;
-import org.bukkit.material.MaterialData;
-
-import com.github.igotyou.FactoryMod.FactoryModPlugin;
-import com.github.igotyou.FactoryMod.FactoryObject;
-import com.github.igotyou.FactoryMod.interfaces.Factory;
-import com.github.igotyou.FactoryMod.interfaces.Recipe;
-import com.github.igotyou.FactoryMod.listeners.RedstoneListener;
-import com.github.igotyou.FactoryMod.properties.ProductionProperties;
-import com.github.igotyou.FactoryMod.recipes.ProbabilisticEnchantment;
-import com.github.igotyou.FactoryMod.recipes.ProductionRecipe;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse.InteractionResult;
-import com.github.igotyou.FactoryMod.utility.ItemList;
-import com.github.igotyou.FactoryMod.utility.NamedItemStack;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-
-public class ProductionFactory extends BaseFactory
-{
-
- private ProductionRecipe currentRecipe = null;//the recipe that is currently selected
- private ProductionProperties productionFactoryProperties;//the properties of the production factory
- public static final FactoryType FACTORY_TYPE = FactoryType.PRODUCTION;//the factory's type
- private List recipes;
- private int currentRecipeNumber = 0;//the array index of the current recipe
-
- /**
- * Constructor
- */
- public ProductionFactory (Location factoryLocation, Location factoryInventoryLocation, Location factoryPowerSource
- , String subFactoryType)
- {
- super(factoryLocation, factoryInventoryLocation, factoryPowerSource, ProductionFactory.FACTORY_TYPE, subFactoryType);
- this.productionFactoryProperties = (ProductionProperties) factoryProperties;
- this.recipes=new ArrayList (productionFactoryProperties.getRecipes());
- this.setRecipeToNumber(0);
- }
-
- /**
- * Constructor
- */
- public ProductionFactory (Location factoryLocation, Location factoryInventoryLocation, Location factoryPowerSource,
- String subFactoryType, boolean active, int currentProductionTimer, int currentEnergyTimer, List recipes,
- int currentRecipeNumber,double currentMaintenance,long timeDisrepair)
- {
- super(factoryLocation, factoryInventoryLocation, factoryPowerSource, ProductionFactory.FACTORY_TYPE, active, subFactoryType, currentProductionTimer, currentEnergyTimer, currentMaintenance, timeDisrepair);
- this.productionFactoryProperties = (ProductionProperties) factoryProperties;
- this.recipes=recipes;
- this.setRecipeToNumber(currentRecipeNumber);
- }
-
- @Override
- public boolean checkHasMaterials() {
- return currentRecipe.hasMaterials(getInventory());
- }
-
- @Override
- public boolean isRepairing() {
- return currentRecipe.getRepairs().size()!=0;
- }
-
-
- /**
- * Returns either a success or error message.
- * Called by the blockListener when a player left clicks the center block, with the InteractionMaterial
- */
- @Override
- public List getCentralBlockResponse()
- {
- List responses=new ArrayList();
- //Is the factory off
- if (!active)
- {
- //is the recipe is initiaed
- if (currentRecipe != null)
- {
- //if we are at the end of the recipe array loop around
- if (currentRecipeNumber == recipes.size() - 1)
- {
- setRecipeToNumber(0);
- currentProductionTimer = 0;
- }
- //if we can just increment the recipe
- else
- {
- setRecipeToNumber(currentRecipeNumber + 1);
- currentProductionTimer = 0;
- }
- }
- //if the recipe for some reason is not initialised, initialise it to recipe 0
- else
- {
- setRecipeToNumber(0);
- currentProductionTimer = 0;
- }
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, "-----------------------------------------------------"));
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, "Switched recipe to: " + currentRecipe.getRecipeName()+"."));
- if(currentRecipeNumber != recipes.size() - 1)
- {
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, "Next Recipe is: "+recipes.get(currentRecipeNumber+1).getRecipeName()+"."));
- }
- else
- {
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, "Next Recipe is: "+recipes.get(0).getRecipeName()+"."));
- }
- }
- //if the factory is on, return error message
- else
- {
- responses.add(new InteractionResponse(InteractionResult.FAILURE, "You can't change recipes while the factory is on! Turn it off first."));
- }
- return responses;
- }
-
- @Override
- public ItemList getFuel() {
- return productionFactoryProperties.getFuel();
- }
-
- /**
- * Sets the factories current recipe.
- * @param newRecipe the desired recipe
- */
- public void setRecipe(Recipe newRecipe)
- {
- if (newRecipe instanceof ProductionRecipe)
- {
- currentRecipe = (ProductionRecipe) newRecipe;
- }
- }
-
- /**
- * sets the recipe to the supplied index
- * @param newRecipeNumber the desired recipeArray index
- */
- public void setRecipeToNumber(int newRecipeNumber)
- {
- if (newRecipeNumber getRecipes()
- {
- return recipes;
- }
-
- @Override
- public List getChestResponse()
- {
- List responses=new ArrayList();
- String status=active ? "On" : "Off";
- String percentDone=status.equals("On") ? " - "+Math.round(currentProductionTimer*100/currentRecipe.getProductionTime())+"% done." : "";
- //Name: Status with XX% health.
- int health =(getProductionFactoryProperties().getRepair()==0) ? 100 : (int) Math.round(100*(1-currentRepair/(getProductionFactoryProperties().getRepair())));
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, getProductionFactoryProperties().getName()+": "+status+" with "+String.valueOf(health)+"% health."));
- //RecipeName: X seconds(Y ticks)[ - XX% done.]
- responses.add(new InteractionResponse(InteractionResult.SUCCESS, currentRecipe.getRecipeName()+": "+currentRecipe.getProductionTime() + " seconds("+ currentRecipe.getProductionTime()*FactoryModPlugin.TICKS_PER_SECOND + " ticks)"+percentDone));
- //[Inputs: amount Name, amount Name.]
- if(!currentRecipe.getInputs().isEmpty())
- {
- responses.add(new InteractionResponse(InteractionResult.SUCCESS,"Input: "+currentRecipe.getInputs().toString()+"."));
- }
- //[Upgrades: amount Name, amount Name.]
- if(!currentRecipe.getUpgrades().isEmpty())
- {
- responses.add(new InteractionResponse(InteractionResult.SUCCESS,"Upgrades: "+currentRecipe.getUpgrades().toString()+"."));
- }
- //[Outputs: amount Name, amount Name.]
- if(!getOutputs().isEmpty())
- {
- responses.add(new InteractionResponse(InteractionResult.SUCCESS,"Output: "+getOutputs().toString()+"."));
- }
- //[Will repair XX% of the factory]
- if(!currentRecipe.getRepairs().isEmpty()&&getProductionFactoryProperties().getRepair()!=0)
- {
- int amountAvailable=currentRecipe.getRepairs().amountAvailable(getPowerSourceInventory());
- int amountRepaired=amountAvailable>currentRepair ? (int) Math.ceil(currentRepair) : amountAvailable;
- int percentRepaired=(int) (( (double) amountRepaired)/getProductionFactoryProperties().getRepair()*100);
- responses.add(new InteractionResponse(InteractionResult.SUCCESS,"Will repair "+String.valueOf(percentRepaired)+"% of the factory with "+currentRecipe.getRepairs().getMultiple(amountRepaired).toString()+"."));
- }
- if(getProductionFactoryProperties().getRepair()!=0)
- if(!currentRecipe.getOutputRecipes().isEmpty())
- {
- List outputRecipes=currentRecipe.getOutputRecipes();
- String response="Makes available: ";
- for(int i=0;i getInputs() {
- return currentRecipe.getInputs();
- }
-
- @Override
- public ItemList getOutputs() {
- return currentRecipe.getOutputs();
- }
-
- @Override
- public ItemList getRepairs() {
- return currentRecipe.getRepairs();
- }
-
- @Override
- public List getEnchantments() {
- return currentRecipe.getEnchantments();
- }
-
- @Override
- public double getEnergyTime() {
- return productionFactoryProperties.getEnergyTime();
- }
-
- @Override
- public double getProductionTime() {
- return currentRecipe.getProductionTime();
- }
-
- @Override
- public int getMaxRepair() {
- return productionFactoryProperties.getRepair();
- }
-}
diff --git a/src/com/github/igotyou/FactoryMod/interfaces/Factory.java b/src/com/github/igotyou/FactoryMod/interfaces/Factory.java
deleted file mode 100644
index cdaadbee..00000000
--- a/src/com/github/igotyou/FactoryMod/interfaces/Factory.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.github.igotyou.FactoryMod.interfaces;
-
-import org.bukkit.Location;
-
-import com.github.igotyou.FactoryMod.utility.InteractionResponse;
-import java.util.List;
-//original file:
-/**
- * Machine.java
- * Purpose: An interface for machines to implement with basic functionality
- *
- * @author MrTwiggy
- * @version 0.1 1/14/13
- */
-//edited version:
-/**
-* Factory.java
-* Purpose: An interface for factorys to implement with basic functionality
-* @author igotyou
-*/
-public interface Factory
-{
- /**
- * Updates the machine
- */
- public void update();
-
- public void destroy(Location destroyLocation);
-
- /**
- * Powers on the machine
- */
- public void powerOn();
-
- /**
- * Powers off the machine
- */
- public void powerOff();
-
- /**
- * Toggles the current power state and returns interaction response
- */
- public List togglePower();
- public List getChestResponse();
- public List getCentralBlockResponse();
-
- /**
- * Returns the location of the machine
- */
- public Location getCenterLocation();
-
- public Location getInventoryLocation();
-
- public Location getPowerSourceLocation();
-}
\ No newline at end of file
diff --git a/src/com/github/igotyou/FactoryMod/interfaces/Manager.java b/src/com/github/igotyou/FactoryMod/interfaces/Manager.java
deleted file mode 100644
index 2282d153..00000000
--- a/src/com/github/igotyou/FactoryMod/interfaces/Manager.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.github.igotyou.FactoryMod.interfaces;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.bukkit.Location;
-
-import com.github.igotyou.FactoryMod.utility.InteractionResponse;
-
-//original file:
-/**
-* Manager.java
-* Purpose: Interface for Manager objects for basic manager functionality
-*
-* @author MrTwiggy
-* @version 0.1 1/08/13
-*/
-//edited version:
-/**
-* Manager.java
-* Purpose: Interface for Manager objects for basic manager functionality
-* @author igotyou
-*
-*/
-
-public interface Manager
-{
-
-/**
-* Saves the machine objects list of this manager to file
-*/
- public void save(File file) throws IOException;
-
-/**
-* Loads machine objects list of this manager from file
-*/
- public void load(File file) throws IOException;
-
-/**
-* Updates all the machines from this manager's machine object list
-*/
- public void updateFactorys();
-
-/**
-* Attempts to create a new machine for this manager
-*/
- public InteractionResponse createFactory(Location factoryLocation, Location inventoryLocation, Location powerLocation);
-
-/**
-* Creates a machine from an existing machine data object
-*/
- public InteractionResponse addFactory(Factory factory);
-
-/**
-* Returns the machine (if any exists) at the given location from this manager
-*/
- public Factory getFactory(Location factoryLocation);
-
-/**
-* Returns whether a machine exists at the given location
-*/
- public boolean factoryExistsAt(Location factoryLocation);
-
-/**
-* Returns whether a machine is whole at the given location
-*/
- public boolean factoryWholeAt(Location factoryLocation);
-
-/**
-* Removes the given machine from the object list
-*/
- public void removeFactory(Factory factory);
-
-/**
-* Returns the saves file name for this manager
-*/
- public String getSavesFileName();
-
-}
\ No newline at end of file
diff --git a/src/com/github/igotyou/FactoryMod/interfaces/Properties.java b/src/com/github/igotyou/FactoryMod/interfaces/Properties.java
deleted file mode 100644
index 38ddad61..00000000
--- a/src/com/github/igotyou/FactoryMod/interfaces/Properties.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.github.igotyou.FactoryMod.interfaces;
-
-import com.github.igotyou.FactoryMod.utility.ItemList;
-import com.github.igotyou.FactoryMod.utility.NamedItemStack;
-
-//original file:
-/**
- * Properties.java
- * Purpose: Interface for Properties objects for basic properties functionality
- *
- * @author MrTwiggy
- * @version 0.1 1/17/13
- */
-//edited version:
-/**
-* Properties.java
- * Purpose: Interface for Properties objects for basic properties functionality
-* @author igotyou
-*
-*/
-public interface Properties
-{
- public ItemList getInputs() ;
-}
\ No newline at end of file
diff --git a/src/com/github/igotyou/FactoryMod/interfaces/Recipe.java b/src/com/github/igotyou/FactoryMod/interfaces/Recipe.java
deleted file mode 100644
index d7e1ba2a..00000000
--- a/src/com/github/igotyou/FactoryMod/interfaces/Recipe.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.github.igotyou.FactoryMod.interfaces;
-
-public interface Recipe
-{
- //get the recipes name, example: Iron Pickaxe
- public String getRecipeName();
-
- //get production time in update cycles
- public int getProductionTime();
-}
diff --git a/src/com/github/igotyou/FactoryMod/listeners/FactoryModListener.java b/src/com/github/igotyou/FactoryMod/listeners/FactoryModListener.java
deleted file mode 100644
index c46b8d7a..00000000
--- a/src/com/github/igotyou/FactoryMod/listeners/FactoryModListener.java
+++ /dev/null
@@ -1,414 +0,0 @@
-package com.github.igotyou.FactoryMod.listeners;
-
-import static com.untamedears.citadel.Utility.isReinforced;
-import static com.untamedears.citadel.Utility.getReinforcement;
-
-import java.util.List;
-
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.block.Block;
-import org.bukkit.entity.Player;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-import org.bukkit.event.block.Action;
-import org.bukkit.event.block.BlockBreakEvent;
-import org.bukkit.event.block.BlockBurnEvent;
-import org.bukkit.event.entity.EntityExplodeEvent;
-import org.bukkit.event.player.PlayerInteractEvent;
-
-import com.github.igotyou.FactoryMod.FactoryModPlugin;
-import com.github.igotyou.FactoryMod.Factorys.NetherFactory;
-import com.github.igotyou.FactoryMod.Factorys.PrintingPress;
-import com.github.igotyou.FactoryMod.Factorys.ProductionFactory;
-import com.github.igotyou.FactoryMod.interfaces.Factory;
-import com.github.igotyou.FactoryMod.managers.FactoryModManager;
-import com.github.igotyou.FactoryMod.managers.PrintingPressManager;
-import com.github.igotyou.FactoryMod.managers.ProductionManager;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse.InteractionResult;
-import com.untamedears.citadel.entity.PlayerReinforcement;
-
-import org.bukkit.event.entity.ExpBottleEvent;
-import org.bukkit.event.player.PlayerExpChangeEvent;
-
-public class FactoryModListener implements Listener
-{
- private FactoryModManager factoryMan;
-
- /**
- * Constructor
- */
- public FactoryModListener(FactoryModManager factoryManager)
- {
- this.factoryMan = factoryManager;
- }
-
- private boolean isPotentialFactoryBlock(Block block) {
- return block.getType() == FactoryModPlugin.CENTRAL_BLOCK_MATERIAL || block.getType() == Material.IRON_BLOCK || block.getType() == Material.CHEST||
- block.getType() == Material.FURNACE || block.getType() == Material.BURNING_FURNACE;
- }
-
- /**
- * Called when a block is broken
- * If the block that is destroyed is part of a factory, call the required methods.
- */
- @EventHandler
- public void blockBreakEvent(BlockBreakEvent e)
- {
- Block block = e.getBlock();
- //Is the block part of a factory?
- if(isPotentialFactoryBlock(block))
- {
- if (factoryMan.factoryExistsAt(block.getLocation()))
- {
- //if the blocks is not reinforced destroy it
- if ((FactoryModPlugin.CITADEL_ENABLED && !isReinforced(block)) || !FactoryModPlugin.CITADEL_ENABLED)
- {
- destroyFactoryAt(block);
- }
- }
- }
- }
-
- private void destroyFactoryAt(Block block) {
- //Is the factory a production factory?
- if (factoryMan.factoryExistsAt(block.getLocation()))
- {
- Factory factory = factoryMan.getFactory(block.getLocation());
- factory.destroy(block.getLocation());
- if(FactoryModPlugin.DESTRUCTIBLE_FACTORIES)
- {
- factoryMan.getManager(block.getLocation()).removeFactory(factory);
- }
- }
- }
-
- /**
- * Called when a entity explodes(creeper,tnt etc.)
- * Nearly the same as blockBreakEvent
- */
- @EventHandler
- public void explosionListener(EntityExplodeEvent e)
- {
- List blocks = e.blockList();
- for (Block block : blocks)
- {
- if(isPotentialFactoryBlock(block))
- {
- if (factoryMan.factoryExistsAt(block.getLocation()))
- {
- Factory factory = factoryMan.getFactory(block.getLocation());
- if ((FactoryModPlugin.CITADEL_ENABLED && !isReinforced(block)) || !FactoryModPlugin.CITADEL_ENABLED)
- {
- destroyFactoryAt(block);
- }
- }
- }
- }
- }
-
- /**
- * Called when a block burns
- * Nearly the same as blockBreakEvent
- */
- @EventHandler
- public void burnListener(BlockBurnEvent e)
- {
- Block block = e.getBlock();
- if (factoryMan.factoryExistsAt(block.getLocation()))
- {
- if (factoryMan.factoryExistsAt(block.getLocation()))
- {
- destroyFactoryAt(block);
- }
- }
- }
-
- /**
- * Called when a player left or right clicks.
- * Takes care of cycling recipes turning factory's on and off, etc.
- */
- @EventHandler
- public void playerInteractionEvent(PlayerInteractEvent e)
- {
- Block clicked = e.getClickedBlock();
- Player player = e.getPlayer();
-
- //if the player left clicked a block
- if (e.getAction().equals(Action.LEFT_CLICK_BLOCK))
- {
- //If the player was holding a item matching the interaction material
- if (player.getItemInHand().getType() == FactoryModPlugin.FACTORY_INTERACTION_MATERIAL)
- {
- //If the material which was clicked is the central block material
- if (clicked.getType() == FactoryModPlugin.CENTRAL_BLOCK_MATERIAL)
- {
- //is there a factory at the clicked location?
- if (factoryMan.factoryExistsAt(clicked.getLocation()))
- {
- //if the factory has all its blocks
- if(factoryMan.factoryWholeAt(clicked.getLocation()))
- {
- //if the player is allowed to interact with that block.
- if ((!FactoryModPlugin.CITADEL_ENABLED || FactoryModPlugin.CITADEL_ENABLED && !isReinforced(clicked)) ||
- (((PlayerReinforcement) getReinforcement(clicked)).isAccessible(player)))
- {
- //if there is a production Factory at the clicked location
- if (factoryMan.factoryExistsAt(clicked.getLocation()))
- {
- Factory factory = factoryMan.getFactory(clicked.getLocation());
- //toggle the recipe, and print the returned message.
- InteractionResponse.messagePlayerResults(player, factory.getCentralBlockResponse());
- }
- }
- //if the player does NOT have acssess to the block that was clicked
- else
- {
- //return a error message
- InteractionResponse.messagePlayerResult(player, new InteractionResponse(InteractionResult.FAILURE,"You do not have permission to use this factory!" ));
- }
- }
- else
- {
- InteractionResponse.messagePlayerResult(player, new InteractionResponse(InteractionResult.FAILURE,"Factory blocks are misplaced!" ));
- }
- }
- //if no factory exists at the clicked location
- else
- {
- //if the player is allowed to interact with that block.
- if ((!FactoryModPlugin.CITADEL_ENABLED || FactoryModPlugin.CITADEL_ENABLED && !isReinforced(clicked)) ||
- (((PlayerReinforcement) getReinforcement(clicked)).isAccessible(player)))
- {
- InteractionResponse.messagePlayerResult(player, createFactory(clicked.getLocation(), player));
- }
- //if the player does NOT have acssess to the block that was clicked
- else
- {
- //return a error message
- InteractionResponse.messagePlayerResult(player, new InteractionResponse(InteractionResult.FAILURE,"You do not have permission to use this factory!" ));
- }
- }
- }
- //if the clicked block is a furnace
- else if (clicked.getType() == Material.FURNACE || clicked.getType() == Material.BURNING_FURNACE)
- {
- //if there is a factory at that location and it has all its blocks
- if (factoryMan.factoryExistsAt(clicked.getLocation()))
- {
- if(factoryMan.factoryWholeAt(clicked.getLocation()))
- {
- //if the player is allowed to interact with that block.
- if ((!FactoryModPlugin.CITADEL_ENABLED || FactoryModPlugin.CITADEL_ENABLED && !isReinforced(clicked)) ||
- (((PlayerReinforcement) getReinforcement(clicked)).isAccessible(player)))
- {
- InteractionResponse.messagePlayerResults(player,(factoryMan.getFactory(clicked.getLocation())).togglePower());
- }
- //if the player is NOT allowed to interact with the clicked block.
- else
- {
- //return error message
- InteractionResponse.messagePlayerResult(player, new InteractionResponse(InteractionResult.FAILURE,"You do not have permission to use this factory!" ));
- }
- }
- else
- {
- InteractionResponse.messagePlayerResult(player, new InteractionResponse(InteractionResult.FAILURE,"Factory blocks are misplaced!" ));
- }
- }
- }
- //if the block clicked is a chest
- else if (clicked.getType() == Material.CHEST)
- {
- //is there a factory there? and if it has all its blocks
- if (factoryMan.factoryExistsAt(clicked.getLocation()))
- {
- if(factoryMan.factoryWholeAt(clicked.getLocation()))
- {
- //if the player is allowed to interact with that block?
- if ((!FactoryModPlugin.CITADEL_ENABLED || FactoryModPlugin.CITADEL_ENABLED && !isReinforced(clicked)) ||
- (((PlayerReinforcement) getReinforcement(clicked)).isAccessible(player)))
- {
- if (factoryMan.factoryExistsAt(clicked.getLocation()))
- {
- InteractionResponse.messagePlayerResults(player,(factoryMan.getFactory(clicked.getLocation())).getChestResponse());
- }
- }
- //if the player is NOT allowed to interact with the clicked block
- else
- {
- //return error message
- InteractionResponse.messagePlayerResult(player, new InteractionResponse(InteractionResult.FAILURE,"You do not have permission to use this factory!" ));
- }
- }
- else
- {
- InteractionResponse.messagePlayerResult(player, new InteractionResponse(InteractionResult.FAILURE,"Factory blocks are misplaced!" ));
- }
-
- }
- }
- else if (clicked.getType() == FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL)
- {
- if (factoryMan.factoryExistsAt(clicked.getLocation()))
- {
- if(factoryMan.getFactory(clicked.getLocation()).getClass() == NetherFactory.class)
- {
- NetherFactory netherFactory = (NetherFactory) factoryMan.getFactory(clicked.getLocation());
- if (FactoryModPlugin.REGENERATE_TELEPORT_BLOCK_ON_TELEPORT)
- {
- netherFactory.regenerateTeleportBlock(clicked.getLocation());
- }
- if(factoryMan.factoryWholeAt(clicked.getLocation()))
- {
- //toggle the recipe, and print the returned message.
- InteractionResponse.messagePlayerResults(player, netherFactory.getTeleportationBlockResponse(player, clicked.getLocation()));
- e.setCancelled(true);
- }
- }
- }
- }
- }
- else if (player.getItemInHand().getType() == Material.PAPER)
- {
- if (clicked.getType() == FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL)
- {
- if (factoryMan.factoryExistsAt(clicked.getLocation()))
- {
- if(factoryMan.getFactory(clicked.getLocation()).getClass() == NetherFactory.class)
- {
- NetherFactory netherFactory = (NetherFactory) factoryMan.getFactory(clicked.getLocation());
- if (FactoryModPlugin.REGENERATE_TELEPORT_BLOCK_ON_TELEPORT)
- {
- netherFactory.regenerateTeleportBlock(clicked.getLocation());
- }
- if(factoryMan.factoryWholeAt(clicked.getLocation()))
- {
- //toggle the recipe, and print the returned message.
- InteractionResponse.messagePlayerResults(player, netherFactory.getTeleportationBlockResponse(player, clicked.getLocation()));
- e.setCancelled(true);
- }
- }
- }
- }
- }
- }
- /* Section commented out since there exists range of bugs that circumvent
- * this protection and this protection should not be necessary
- * it will only complicate and obfuscate possible workaround bugs
- //if the player right clicked a block
- else if(e.getAction() == Action.RIGHT_CLICK_BLOCK)
- {
- //if the player right clicked a chest
- if (clicked.getType() == Material.CHEST)
- {
- //is the chest part of a factory? and does the factory have all its blocks
- if (factoryMan.factoryExistsAt(clicked.getLocation())&&factoryMan.factoryWholeAt(clicked.getLocation()))
- {
- //if the player is allowed to interact with that block.
- if ((!FactoryModPlugin.CITADEL_ENABLED || FactoryModPlugin.CITADEL_ENABLED && !isReinforced(clicked)) ||
- (((PlayerReinforcement) getReinforcement(clicked)).isAccessible(player)))
- {
- if (productionMan.factoryExistsAt(clicked.getLocation()))
- {
- ProductionFactory production = (ProductionFactory) productionMan.getFactory(clicked.getLocation());
- //is the factory turned on?
- if (production.getActive() == true)
- {
- //return error message
- InteractionResponse.messagePlayerResult(player, new InteractionResponse(InteractionResult.FAILURE,"You can't access the chest while the factory is active! Turn it off first!" ));
- e.setCancelled(true);
- }
- }
- }
- //if the player is NOT allowed to interact with the block
- else
- {
- //No need to get 2 messages, citadel already does 1. e InteractionResponse.messagePlayerResult(player, new InteractionResponse(InteractionResult.FAILURE,"You do not have permission to use that block!" ));
- }
- }
- }
- }
- */
- }
- private Location westLoc(Location loc)
- {
- Location newLoc = loc.clone();
- newLoc.add(-1, 0, 0);
- return newLoc;
- }
- private Location eastLoc(Location loc)
- {
- Location newLoc = loc.clone();
- newLoc.add(1, 0, 0);
- return newLoc;
- }
- private Location northLoc(Location loc)
- {
- Location newLoc = loc.clone();
- newLoc.add(0, 0, -1);
- return newLoc;
- }
- private Location southLoc(Location loc)
- {
- Location newLoc = loc.clone();
- newLoc.add(0, 0, 1);
- return newLoc;
- }
-
- private InteractionResponse createFactory(Location loc, Player player)
- {
- Location northLocation = northLoc(loc);
- Location southLocation = southLoc(loc);
- Location eastLocation = eastLoc(loc);
- Location westLocation = westLoc(loc);
-
- Block northBlock = northLocation.getBlock();
- Block southBlock = southLocation.getBlock();
- Block eastBlock = eastLocation.getBlock();
- Block westBlock = westLocation.getBlock();
-
- Material northType = northBlock.getType();
- Material southType = southBlock.getType();
- Material eastType = eastBlock.getType();
- Material westType = westBlock.getType();
-
- //For each two orientations check if a factory exists at any of the locations
- //For each of the four permutations check if the correct blocks are present
- //This still allows a double chest to be shared between two factories, which may lead to undesirable behavior
- InteractionResponse response=new InteractionResponse(InteractionResult.FAILURE, "Blocks are not arranged correctly for a factory.");
- if(! factoryMan.factoryExistsAt(westLocation) && ! factoryMan.factoryExistsAt(eastLocation))
- {
- if((westType.getId()== 61 || westType.getId() == 62) && eastType.getId()== 54)
- {
- return factoryMan.createFactory(loc, eastLocation, westLocation);
- }
- else if ((eastType.getId()== 61 || eastType.getId()== 62) && westType.getId()== 54)
- {
- return factoryMan.createFactory(loc, westLocation, eastLocation);
- }
- }
- else
- {
- response=new InteractionResponse(InteractionResult.FAILURE, "There is already a factory there!");
- }
- if(! factoryMan.factoryExistsAt(southLocation) && !factoryMan.factoryExistsAt(northLocation))
- {
- if((northType.getId()== 61 || northType.getId()== 62) && southType.getId()== 54)
- {
- return factoryMan.createFactory(loc, southLocation, northLocation);
- }
- else if((southType.getId()== 61 || southType.getId()== 62) && northType.getId()== 54)
- {
- return factoryMan.createFactory(loc, northLocation, southLocation);
- }
- }
- else
- {
- response=new InteractionResponse(InteractionResult.FAILURE, "There is already a factory there!");
- }
- return response;
- }
-
-}
diff --git a/src/com/github/igotyou/FactoryMod/listeners/NoteStackListener.java b/src/com/github/igotyou/FactoryMod/listeners/NoteStackListener.java
deleted file mode 100644
index 3d312c16..00000000
--- a/src/com/github/igotyou/FactoryMod/listeners/NoteStackListener.java
+++ /dev/null
@@ -1,194 +0,0 @@
-package com.github.igotyou.FactoryMod.listeners;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.bukkit.Material;
-import org.bukkit.block.Block;
-import org.bukkit.entity.Player;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.EventPriority;
-import org.bukkit.event.Listener;
-import org.bukkit.event.block.Action;
-import org.bukkit.event.inventory.PrepareItemCraftEvent;
-import org.bukkit.event.player.PlayerInteractEvent;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.ShapelessRecipe;
-import org.bukkit.inventory.meta.ItemMeta;
-
-//import sun.misc.Regexp;
-
-import com.github.igotyou.FactoryMod.FactoryModPlugin;
-
-public class NoteStackListener implements Listener {
- private FactoryModPlugin plugin;
- private static final Pattern stackableRegexp = Pattern.compile("^(§2.*?)( \\(x([1-9][0-9]*)\\))?$");
- private static final Pattern nameRegexp = Pattern.compile("^(.*?)( §2x([1-9][0-9]*))?$");
- private static final int SCALE_FACTOR = 4;
- private static final int MAX_SCALE = 64;
-
- public NoteStackListener(FactoryModPlugin plugin) {
- this.plugin = plugin;
- }
-
- @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
- public void playerInteractionEvent(PlayerInteractEvent e)
- {
- Block clicked = e.getClickedBlock();
- Player player = e.getPlayer();
-
- ItemStack item = player.getItemInHand();
- if (item == null) return;
- if (!item.getType().equals(Material.PAPER)) return;
-
- //if the player left clicked a block
- if (e.getAction().equals(Action.LEFT_CLICK_BLOCK))
- {
- if (clicked.getType().equals(Material.ENCHANTMENT_TABLE)) {
- // Break notes
- int multiplier = getMultiplier(player.getItemInHand());
- if (multiplier >= SCALE_FACTOR) {
- int count = item.getAmount() * SCALE_FACTOR;
- int newMultiplier = multiplier / SCALE_FACTOR;
- player.setItemInHand(new ItemStack(Material.AIR));
- ItemStack newMultipleStack = setMultiplier(item, newMultiplier);
-
- while (count > 0) {
- ItemStack toAdd = new ItemStack(newMultipleStack);
- if (count > 64) {
- toAdd.setAmount(64);
- } else {
- toAdd.setAmount(count);
- }
- // Try to add to hand first when breaking over 64
- if (count > 64 && player.getItemInHand() == null || player.getItemInHand().getType().equals(Material.AIR)) {
- player.setItemInHand(toAdd);
- } else {
- Map overflow = player.getInventory().addItem(toAdd);
- if (overflow != null && overflow.size() > 0) {
- for (ItemStack spill : overflow.values()) {
- player.getWorld().dropItem(player.getLocation(), spill);
- }
- }
- }
- count = count - 64;
- }
-
- player.updateInventory();
- }
- }
- } else if (e.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
- if (clicked.getType().equals(Material.ENCHANTMENT_TABLE)) {
- // Combine notes
- int multiplier = getMultiplier(item);
- if (multiplier > 0 && item.getAmount() >= SCALE_FACTOR) {
- int count = item.getAmount() / SCALE_FACTOR;
- int residual = item.getAmount() - count * SCALE_FACTOR;
- int newMultiplier = multiplier * SCALE_FACTOR;
- if (newMultiplier > MAX_SCALE) {
- return;
- }
- if (residual > 0) {
- ItemStack singleRemainder = new ItemStack(item);
- singleRemainder.setAmount(residual);
- player.setItemInHand(singleRemainder);
- } else {
- player.setItemInHand(new ItemStack(Material.AIR));
- }
- ItemStack newMultipleStack = setMultiplier(item, newMultiplier);
-
- while (count > 0) {
- ItemStack toAdd = new ItemStack(newMultipleStack);
- if (count > 64) {
- toAdd.setAmount(64);
- } else {
- toAdd.setAmount(count);
- }
- // Try to add to hand first
- Map overflow = player.getInventory().addItem(toAdd);
- if (overflow != null && overflow.size() > 0) {
- for (ItemStack spill : overflow.values()) {
- player.getWorld().dropItem(player.getLocation(), spill);
- }
- }
- count = count - 64;
- }
-
- e.setCancelled(true);
- player.updateInventory();
- }
- }
- }
- }
-
- private int getMultiplier(ItemStack item) {
- List lore = item.getItemMeta().getLore();
- if (item.getType().equals(Material.PAPER)) {
- if (lore != null && lore.size() > 0) {
- String lastLore = lore.get(lore.size() - 1);
- Matcher matcher = stackableRegexp.matcher(lastLore);
- if (matcher.find()) {
- String digits = matcher.group(3);
- if (digits != null) {
- return Integer.parseInt(digits);
- } else {
- return 1;
- }
- }
- return 0;
- } else {
- return 0;
- }
- } else {
- return 0;
- }
- }
-
- private ItemStack setMultiplier(ItemStack item, int multiplier) {
- String name = item.getItemMeta().getDisplayName();
- List lore = item.getItemMeta().getLore();
- if (item.getType().equals(Material.PAPER)) {
- if (name != null) {
- Matcher matcher = nameRegexp.matcher(name);
- if (matcher.find()) {
- String newName;
- if (multiplier == 1) {
- newName = matcher.group(1);
- } else {
- newName = matcher.group(1) + " §2x" + Integer.toString(multiplier);
- }
-
- ItemMeta newMeta = item.getItemMeta().clone();
- newMeta.setDisplayName(newName);
- item = new ItemStack(item);
- item.setItemMeta(newMeta);
- }
- }
-
- if (lore != null && lore.size() > 0) {
- String lastLore = lore.get(lore.size() - 1);
- Matcher matcher = stackableRegexp.matcher(lastLore);
- List newLore = new ArrayList();
- if (matcher.find()) {
- for (int i = 0; i < lore.size() - 1; i++) {
- newLore.add(lore.get(i));
- }
- if (multiplier == 1) {
- newLore.add(matcher.group(1));
- } else {
- newLore.add(matcher.group(1) + " (x" + Integer.toString(multiplier) + ")");
- }
-
- ItemMeta newMeta = item.getItemMeta().clone();
- newMeta.setLore(newLore);
- item = new ItemStack(item);
- item.setItemMeta(newMeta);
- }
- }
- }
- return item;
- }
-}
diff --git a/src/com/github/igotyou/FactoryMod/listeners/RedstoneListener.java b/src/com/github/igotyou/FactoryMod/listeners/RedstoneListener.java
deleted file mode 100644
index f06882c0..00000000
--- a/src/com/github/igotyou/FactoryMod/listeners/RedstoneListener.java
+++ /dev/null
@@ -1,129 +0,0 @@
-package com.github.igotyou.FactoryMod.listeners;
-
-import static com.untamedears.citadel.Utility.getReinforcement;
-import static com.untamedears.citadel.Utility.isReinforced;
-
-import java.util.List;
-
-import org.bukkit.Bukkit;
-import org.bukkit.Material;
-import org.bukkit.block.Block;
-import org.bukkit.block.BlockFace;
-import org.bukkit.block.BlockState;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-import org.bukkit.event.block.BlockPlaceEvent;
-import org.bukkit.event.block.BlockRedstoneEvent;
-import org.bukkit.material.Attachable;
-import org.bukkit.material.Lever;
-import org.bukkit.material.MaterialData;
-
-import com.github.igotyou.FactoryMod.FactoryModPlugin;
-import com.github.igotyou.FactoryMod.Factorys.ProductionFactory;
-import com.github.igotyou.FactoryMod.managers.FactoryModManager;
-import com.github.igotyou.FactoryMod.managers.ProductionManager;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse.InteractionResult;
-import com.untamedears.citadel.entity.PlayerReinforcement;
-
-public class RedstoneListener implements Listener {
- private FactoryModManager factoryMan;
- //this is a lazy fix...
- private ProductionManager productionMan;
-
- /**
- * Constructor
- */
- public RedstoneListener(FactoryModManager factoryManager, ProductionManager productionManager)
- {
- this.factoryMan = factoryManager;
- this.productionMan = productionManager;
- }
-
- @EventHandler(ignoreCancelled = true)
- public void leverPlaced(BlockPlaceEvent e) {
- if (e.getBlock().getType() != Material.LEVER) {
- return;
- }
-
- Block clicked = e.getBlockAgainst();
- //is there a factory there? and if it has all its blocks
- if (factoryMan.factoryExistsAt(clicked.getLocation())&&factoryMan.factoryWholeAt(clicked.getLocation()))
- {
- //if the player is allowed to interact with that block?
- if ((!FactoryModPlugin.CITADEL_ENABLED || FactoryModPlugin.CITADEL_ENABLED && !isReinforced(clicked)) ||
- (((PlayerReinforcement) getReinforcement(clicked)).isAccessible(e.getPlayer())))
- {
- // Allowed
- }
- //if the player is NOT allowed to interact with the clicked block
- else
- {
- e.setCancelled(true);
- }
- }
- }
-
-
- /**
- * Called when a block is charged.
- * When the furnace block is powered, starts the factory and toggles on any attached levers.
- * On completion, toggles off any attached levers.
- */
- @EventHandler()
- public void redstoneChange(BlockRedstoneEvent e)
- {
- // Only trigger on transition from 0 to positive
- if (e.getOldCurrent() > 0 || e.getNewCurrent() == 0) {
- return;
- }
-
- // Allow this to be disabled with config
- if (!FactoryModPlugin.REDSTONE_START_ENABLED) {
- return;
- }
-
- Block rsBlock = e.getBlock();
- BlockFace[] directions = null;
- if (rsBlock.getType() == Material.REDSTONE_WIRE) {
- directions = ProductionFactory.REDSTONE_FACES;
- } else if (rsBlock.getType() == Material.WOOD_BUTTON) {
- directions = new BlockFace[] {((Attachable) rsBlock.getState().getData()).getAttachedFace()};
- } else if (rsBlock.getType() == Material.STONE_BUTTON) {
- directions = new BlockFace[] {((Attachable) rsBlock.getState().getData()).getAttachedFace()};
- } else if (rsBlock.getType() == Material.LEVER) {
- directions = new BlockFace[] {((Attachable) rsBlock.getState().getData()).getAttachedFace()};
- } else {
- return; // Don't care
- }
-
-
- for (BlockFace direction : directions) {
- Block block = rsBlock.getRelative(direction);
-
- //Is the block part of a factory?
- if(block.getType() == Material.FURNACE || block.getType() == Material.BURNING_FURNACE)
- {
- if (factoryMan.factoryExistsAt(block.getLocation()))
- {
- //Is the factory a production factory?
- if (productionMan.factoryExistsAt(block.getLocation()))
- {
- ProductionFactory factory = (ProductionFactory) productionMan.getFactory(block.getLocation());
-
- Block lever = factory.findActivationLever();
- if (lever == null) {
- // No lever - don't respond to redstone
- return;
- }
-
- if (!factory.getActive()) {
- // Try to start the factory
- factory.togglePower();
- }
- }
- }
- }
- }
- }
-}
diff --git a/src/com/github/igotyou/FactoryMod/managers/FactoryModManager.java b/src/com/github/igotyou/FactoryMod/managers/FactoryModManager.java
deleted file mode 100644
index 80cd259e..00000000
--- a/src/com/github/igotyou/FactoryMod/managers/FactoryModManager.java
+++ /dev/null
@@ -1,326 +0,0 @@
-package com.github.igotyou.FactoryMod.managers;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.bukkit.Bukkit;
-import org.bukkit.Location;
-import org.bukkit.event.Listener;
-
-import com.github.igotyou.FactoryMod.FactoryModPlugin;
-import com.github.igotyou.FactoryMod.interfaces.Factory;
-import com.github.igotyou.FactoryMod.interfaces.Manager;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse.InteractionResult;
-//original file:
-/**
- * MachinesManager.java
- * Purpose: Manages the initialization and updating of all managers.
- *
- * @author MrTwiggy
- * @version 0.1 1/14/13
- */
-//edited file:
-/**
- * FactorysManager.java
- * Purpose: Manages the initialization and updating of all managers.
- * @author igotyou
- *
- */
-public class FactoryModManager
-{
- List listeners;
- List managers;
-
- FactoryModPlugin plugin; //The plugin object
-
- public static FactoryModManager factoryMan;
-
-
- /**
- * Constructor
- */
- public FactoryModManager(FactoryModPlugin plugin)
- {
- this.plugin = plugin;
- FactoryModManager.factoryMan = this;
-
- initializeManagers();
- loadManagers();
- periodicSaving();
- }
-
- /**
- * Initializes the necassary managers for enabled factorys
- */
- private void initializeManagers()
- {
- managers = new ArrayList();
- listeners = new ArrayList();
-
- //if (FactoryModPlugin.PRODUCTION_ENEABLED)
- //{
- initializeProductionManager();
- initializeNetherFactoryManager();
- initializePrintingPressManager();
- //}
- }
-
-
- /**
- * Initializes the Ore Gin Manager
- */
- private void initializeProductionManager()
- {
- ProductionManager productionnMan = new ProductionManager(plugin);
-
- managers.add(productionnMan);
- }
- /**
- * Initializes the Printing Press Manager
- */
- private void initializePrintingPressManager()
- {
- PrintingPressManager printingMan = new PrintingPressManager(plugin);
-
- managers.add(printingMan);
- }
-
- /**
- * Initialized the NetherFactory manager
- */
- private void initializeNetherFactoryManager()
- {
- NetherFactoryManager netherMan = new NetherFactoryManager(plugin);
-
- managers.add(netherMan);
- }
-
- /**
- * When plugin disabled, this is called.
- */
- public void onDisable()
- {
- saveManagers();
- }
-
- /**
- * Saves all managers
- */
- private void saveManagers()
- {
- for (Manager manager : managers)
- {
- save(manager, getSavesFile(manager.getSavesFileName()));
- }
- }
-
- /**
- * Loads all managers
- */
- private void loadManagers()
- {
- for (Manager manager : managers)
- {
- load(manager, getSavesFile(manager.getSavesFileName()));
- }
- }
-
- /**
- * Returns the appropriate manager depending on the given Manager Type
- */
- @SuppressWarnings("rawtypes")
- public Manager getManager(Class managerType)
- {
- for (Manager manager : managers)
- {
- if (managerType.isInstance(manager))
- {
- return manager;
- }
- }
-
- return null;
- }
-
- /**
- * Load file
- */
- private static void load(Manager managerInterface, File file)
- {
- try
- {
- managerInterface.load(file);
- }
- catch (FileNotFoundException exception)
- {
- FactoryModPlugin.sendConsoleMessage(file.getName() + " does not exist! Creating file!");
- }
- catch (IOException exception)
- {
- throw new RuntimeException("Failed to load " + file.getPath(), exception);
- }
-
- try
- {
- managerInterface.save(file);
- }
- catch (IOException exception)
- {
- throw new RuntimeException("Failed to create " + file.getPath(), exception);
- }
- }
-
- /**
- * Save file
- */
- private static void save(Manager manager, File file)
- {
- try
- {
- File newFile = new File(file.getAbsolutePath() + ".new");
- File bakFile = new File(file.getAbsolutePath() + ".bak");
-
- manager.save(newFile);
-
- if (bakFile.exists())
- {
- bakFile.delete();
- }
-
- if (file.exists() && !file.renameTo(bakFile))
- {
- throw new IOException("Failed to rename " + file.getAbsolutePath() + " to " + bakFile.getAbsolutePath());
- }
-
- if (!newFile.renameTo(file))
- {
- throw new IOException("Failed to rename " + newFile.getAbsolutePath() + " to " + file.getAbsolutePath());
- }
- }
- catch (IOException exception)
- {
- throw new RuntimeException("Failed to save to " + file.getAbsolutePath(), exception);
- }
- }
-
- /**
- * Save Factories to file every SAVE_CYCLE minutes.
- */
- private void periodicSaving()
- {
- Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
- @Override
- public void run()
- {
- FactoryModPlugin.sendConsoleMessage("Saving Factory data...");
- saveManagers();
- }
- }, (FactoryModPlugin.SAVE_CYCLE),
- FactoryModPlugin.SAVE_CYCLE);
- }
-
- /**
- * Returns the Factory Saves file
- */
- public File getSavesFile(String fileName)
- {
- return new File(plugin.getDataFolder(), fileName + ".txt");
- }
-
- /**
- * Returns whether a factory exists at given location in any manager
- */
- public boolean factoryExistsAt(Location location)
- {
- for (Manager manager : managers)
- {
- if (manager.factoryExistsAt(location))
- {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Returns whether a factory is whole at given location in any manager
- */
- public boolean factoryWholeAt(Location location)
- {
- for (Manager manager : managers)
- {
- if (manager.factoryWholeAt(location))
- {
- return true;
- }
- }
- return false;
- }
-
-
- public ProductionManager getProductionManager()
- {
- for (Manager manager : managers)
- {
- if (manager.getClass() == ProductionManager.class)
- {
- return (ProductionManager) manager;
- }
- }
-
- return null;
- }
-
- public PrintingPressManager getPrintingPressManager()
- {
- for (Manager manager : managers)
- {
- if (manager.getClass() == PrintingPressManager.class)
- {
- return (PrintingPressManager) manager;
- }
- }
-
- return null;
- }
-
- public Factory getFactory(Location location) {
- for (Manager manager : managers)
- {
- if (manager.factoryExistsAt(location))
- {
- return manager.getFactory(location);
- }
- }
- return null;
- }
-
- public Manager getManager(Location location) {
- for (Manager manager : managers)
- {
- if (manager.factoryExistsAt(location))
- {
- return manager;
- }
- }
- return null;
- }
-
- public InteractionResponse createFactory(Location centralLocation,
- Location inventoryLocation, Location powerLocation) {
- InteractionResponse response = null;
- for (Manager manager : managers)
- {
- response = manager.createFactory(centralLocation, inventoryLocation, powerLocation);
- if (response.getInteractionResult() == InteractionResult.SUCCESS)
- {
- return response;
- }
- }
- return response;
- }
-}
diff --git a/src/com/github/igotyou/FactoryMod/managers/NetherFactoryManager.java b/src/com/github/igotyou/FactoryMod/managers/NetherFactoryManager.java
deleted file mode 100644
index 0e46791a..00000000
--- a/src/com/github/igotyou/FactoryMod/managers/NetherFactoryManager.java
+++ /dev/null
@@ -1,407 +0,0 @@
-package com.github.igotyou.FactoryMod.managers;
-
-import static com.untamedears.citadel.Utility.isReinforced;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.bukkit.Bukkit;
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.World;
-import org.bukkit.block.Block;
-import org.bukkit.block.Chest;
-import org.bukkit.inventory.Inventory;
-
-import com.github.igotyou.FactoryMod.FactoryModPlugin;
-import com.github.igotyou.FactoryMod.Factorys.NetherFactory;
-import com.github.igotyou.FactoryMod.Factorys.NetherFactory.NetherOperationMode;
-import com.github.igotyou.FactoryMod.interfaces.Factory;
-import com.github.igotyou.FactoryMod.interfaces.Manager;
-import com.github.igotyou.FactoryMod.properties.NetherFactoryProperties;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse.InteractionResult;
-import com.github.igotyou.FactoryMod.utility.ItemList;
-import com.github.igotyou.FactoryMod.utility.NamedItemStack;
-
-import java.util.Iterator;
-
-//original file:
-/**
-* Manager.java
-* Purpose: Interface for Manager objects for basic manager functionality
-*
-* @author MrTwiggy
-* @version 0.1 1/08/13
-*/
-//edited version:
-/**
-* Manager.java
-* Purpose: Interface for Manager objects for basic manager functionality
-* @author igotyou
-*
-*/
-
-public class NetherFactoryManager implements Manager
-{
- private FactoryModPlugin plugin;
- private List netherFactorys;
- private long repairTime;
-
- public NetherFactoryManager(FactoryModPlugin plugin)
- {
- this.plugin = plugin;
- netherFactorys = new ArrayList();
- //Set maintenance clock to 0
- updateFactorys();
- }
-
- public void save(File file) throws IOException
- {
- //Takes difference between last repair update and current one and scales repair accordingly
- updateRepair(System.currentTimeMillis()-repairTime);
- repairTime=System.currentTimeMillis();
- FileOutputStream fileOutputStream = new FileOutputStream(file);
- ObjectOutputStream oos = new ObjectOutputStream(fileOutputStream);
- int version = 1;
- oos.writeInt(version);
- oos.writeInt(netherFactorys.size());
- for (NetherFactory factory : netherFactorys)
- {
- Location centerlocation = factory.getCenterLocation();
- Location inventoryLocation = factory.getInventoryLocation();
- Location powerLocation = factory.getPowerSourceLocation();
- Location netherTeleportPlatformLocation = factory.getNetherTeleportPlatform();
- Location overworldTeleportPlatformLocation = factory.getOverworldTeleportPlatform();
-
- oos.writeUTF(centerlocation.getWorld().getName());
-
- oos.writeInt(centerlocation.getBlockX());
- oos.writeInt(centerlocation.getBlockY());
- oos.writeInt(centerlocation.getBlockZ());
-
- oos.writeInt(inventoryLocation.getBlockX());
- oos.writeInt(inventoryLocation.getBlockY());
- oos.writeInt(inventoryLocation.getBlockZ());
-
- oos.writeInt(powerLocation.getBlockX());
- oos.writeInt(powerLocation.getBlockY());
- oos.writeInt(powerLocation.getBlockZ());
-
- oos.writeInt(overworldTeleportPlatformLocation.getBlockX());
- oos.writeInt(overworldTeleportPlatformLocation.getBlockY());
- oos.writeInt(overworldTeleportPlatformLocation.getBlockZ());
-
- oos.writeUTF(netherTeleportPlatformLocation.getWorld().getName());
- oos.writeInt(netherTeleportPlatformLocation.getBlockX());
- oos.writeInt(netherTeleportPlatformLocation.getBlockY());
- oos.writeInt(netherTeleportPlatformLocation.getBlockZ());
-
- oos.writeBoolean(factory.getActive());
- oos.writeInt(factory.getMode().getId());
- oos.writeDouble(factory.getCurrentRepair());
- oos.writeLong(factory.getTimeDisrepair());
-
- }
- oos.flush();
- fileOutputStream.close();
- }
-
- public void load(File file) throws IOException
- {
- try {
- repairTime=System.currentTimeMillis();
- FileInputStream fileInputStream = new FileInputStream(file);
- ObjectInputStream ois = new ObjectInputStream(fileInputStream);
- int version = ois.readInt();
- assert(version == 1);
- int count = ois.readInt();
- int i = 0;
- for (i = 0; i < count; i++)
- {
- String worldName = ois.readUTF();
- World world = plugin.getServer().getWorld(worldName);
-
- Location centerLocation = new Location(world, ois.readInt(), ois.readInt(), ois.readInt());
- Location inventoryLocation = new Location(world, ois.readInt(), ois.readInt(), ois.readInt());
- Location powerLocation = new Location(world, ois.readInt(), ois.readInt(), ois.readInt());
- Location overworldTeleportPlatformLocation = new Location(world, ois.readInt(), ois.readInt(), ois.readInt());
-
- String worldName2 = ois.readUTF();
- World world2 = plugin.getServer().getWorld(worldName2);
-
- Location netherTeleportPlatformLocation = new Location(world2, ois.readInt(), ois.readInt(), ois.readInt());
-
- boolean active = ois.readBoolean();
- NetherOperationMode mode = NetherFactory.NetherOperationMode.byId(ois.readInt());
- double currentRepair = ois.readDouble();
- long timeDisrepair = ois.readLong();
-
- NetherFactory factory = new NetherFactory(centerLocation, inventoryLocation, powerLocation, netherTeleportPlatformLocation, overworldTeleportPlatformLocation,
- active, currentRepair, timeDisrepair,
- mode,
- plugin.getNetherFactoryProperties(), this);
- addFactory(factory);
- }
- fileInputStream.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- public void updateFactorys()
- {
- plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable()
- {
- @Override
- public void run()
- {
- for (NetherFactory factory: netherFactorys)
- {
- factory.update();
- }
- }
- }, 0L, FactoryModPlugin.PRODUCER_UPDATE_CYCLE);
- }
-
- public InteractionResponse createFactory(Location factoryLocation, Location inventoryLocation, Location powerSourceLocation)
- {
- NetherFactoryProperties netherFactoryProperties = plugin.getNetherFactoryProperties();
- Block inventoryBlock = inventoryLocation.getBlock();
- Chest chest = (Chest) inventoryBlock.getState();
- Inventory chestInventory = chest.getInventory();
- ItemList constructionMaterials = netherFactoryProperties.getConstructionMaterials();
- if(constructionMaterials.oneIn(chestInventory))
- {
- if (factoryLocation.getWorld().getName().equalsIgnoreCase(FactoryModPlugin.WORLD_NAME))
- {
- if (factoryLocation.getBlock().getType().equals(FactoryModPlugin.CENTRAL_BLOCK_MATERIAL))
- {
- if (!factoryExistsAt(factoryLocation))
- {
- double scalingFactor = getScalingFactor(factoryLocation);
- if (scalingFactor < 10000)
- {
- constructionMaterials = constructionMaterials.getMultiple(scalingFactor);
- boolean hasMaterials = constructionMaterials.allIn(chestInventory);
- if (hasMaterials)
- {
- boolean markerFound = false;
- Location markerLocation = factoryLocation.clone();
- int blockY = markerLocation.getBlockY();
- for (int centerY = blockY-plugin.NETHER_MARKER_MAX_DISTANCE; centerY <= blockY+plugin.NETHER_MARKER_MAX_DISTANCE && !markerFound; centerY++)
- {
- markerLocation.setY(centerY);
- Location oneUp = markerLocation.clone();
- oneUp.setY(centerY+1);
- if (markerLocation.getBlock().getType() == FactoryModPlugin.NETHER_FACTORY_MARKER_MATERIAL && oneUp.getBlock().getType() == FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL)
- {
- markerFound = true;
- }
- }
- if (markerFound)
- {
- int nether_scale = FactoryModPlugin.NETHER_SCALE;
- boolean locationOk = false;
- int startX = Math.round(factoryLocation.getBlockX()/nether_scale);
- int startY = factoryLocation.getBlockY();
- int startZ = Math.round(factoryLocation.getBlockZ()/nether_scale);
- Location netherLocation = new Location(Bukkit.getWorld(FactoryModPlugin.NETHER_NAME), startX,startY,startZ);
- Location netherLocation1 = new Location(Bukkit.getWorld(FactoryModPlugin.NETHER_NAME), startX,startY+1,startZ);
- Location netherLocation2 = new Location(Bukkit.getWorld(FactoryModPlugin.NETHER_NAME), startX,startY+2,startZ);
- Location netherLocation3 = new Location(Bukkit.getWorld(FactoryModPlugin.NETHER_NAME), startX,startY+3,startZ);
- if (FactoryModPlugin.CITADEL_ENABLED && (isReinforced(netherLocation) || isReinforced(netherLocation1) || isReinforced(netherLocation2) || isReinforced(netherLocation3)))
- {
- for(int scanX = startX-1; scanX <= startX+1 && !locationOk; scanX++)
- {
-
- for(int scanZ = startZ-1; scanZ <= startZ+1 && !locationOk; scanZ++)
- {
- for(int scanY = startY; scanY <= 250 && !locationOk; scanY++)
- {
- netherLocation = new Location(Bukkit.getWorld(FactoryModPlugin.NETHER_NAME), scanX,scanY,scanZ);
- netherLocation1 = new Location(Bukkit.getWorld(FactoryModPlugin.NETHER_NAME), scanX,scanY+1,scanZ);
- netherLocation2 = new Location(Bukkit.getWorld(FactoryModPlugin.NETHER_NAME), scanX,scanY+2,scanZ);
- netherLocation3 = new Location(Bukkit.getWorld(FactoryModPlugin.NETHER_NAME), scanX,scanY+3,scanZ);
- if(!isReinforced(netherLocation) && !isReinforced(netherLocation1) && !isReinforced(netherLocation2) && !isReinforced(netherLocation3))
- {
- locationOk = true;
-
- }
- }
- }
- }
- }
- if (!factoryExistsAt(netherLocation))
- {
- netherLocation.getBlock().setType(FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL);
- netherLocation.getBlock().getState().update(true);
- netherLocation1.getBlock().setType(Material.AIR);
- netherLocation1.getBlock().getState().update(true);
- netherLocation2.getBlock().setType(Material.AIR);
- netherLocation2.getBlock().getState().update(true);
- netherLocation3.getBlock().setType(Material.AIR);
- netherLocation3.getBlock().getState().update(true);
- if(netherLocation.getBlock().getType() != (FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL) &&
- netherLocation1.getBlock().getType() != Material.AIR &&
- netherLocation2.getBlock().getType() != Material.AIR &&
- netherLocation3.getBlock().getType() != Material.AIR)
- {
- return new InteractionResponse(InteractionResult.FAILURE, "For some reason the nether side obsidian block did not generate...blame bukkit");
- }
- Location oneUp = markerLocation.clone();
- oneUp.add(0,1,0);
- NetherFactory netherFactory = new NetherFactory(factoryLocation, inventoryLocation, powerSourceLocation, netherLocation, oneUp, plugin.getNetherFactoryProperties(), this);
- if (constructionMaterials.removeFrom(netherFactory.getInventory()))
- {
- addFactory(netherFactory);
- return new InteractionResponse(InteractionResult.SUCCESS, "Successfully created " + netherFactoryProperties.getName());
- }
- }
- else
- {
- return new InteractionResponse(InteractionResult.FAILURE, "There is a other " + netherFactoryProperties.getName() + " too close.");
- }
- }
- else
- {
- return new InteractionResponse(InteractionResult.FAILURE, "No marker found. Place a " + FactoryModPlugin.NETHER_FACTORY_MARKER_MATERIAL + " 1-20 blocks above the center block of the nether factory with a " + FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL + " right above.");
- }
- }
- return new InteractionResponse(InteractionResult.FAILURE, "Not enough materials in chest! You need " + constructionMaterials.toString());
- }
- else
- {
- return new InteractionResponse(InteractionResult.FAILURE, "Factory is too close to a other nether factory!");
- }
- }
- return new InteractionResponse(InteractionResult.FAILURE, "There is already a " + netherFactoryProperties.getName() + " there!");
- }
- else
- {
- return new InteractionResponse(InteractionResult.FAILURE, "Wrong center block!");
- }
- }
- else
- {
- return new InteractionResponse(InteractionResult.FAILURE, netherFactoryProperties.getName() + "'s can only be built in the overworld");
- }
- }
- return new InteractionResponse(InteractionResult.FAILURE, "No factory was identified!");
- }
-
- public InteractionResponse addFactory(Factory factory)
- {
- NetherFactory netherFactory = (NetherFactory) factory;
- if (netherFactory.getCenterLocation().getBlock().getType().equals(FactoryModPlugin.CENTRAL_BLOCK_MATERIAL) &&
- (!factoryExistsAt(netherFactory.getCenterLocation())
- || !factoryExistsAt(netherFactory.getInventoryLocation())
- || !factoryExistsAt(netherFactory.getPowerSourceLocation())
- || !factoryExistsAt(netherFactory.getNetherTeleportPlatform())
- || !factoryExistsAt(netherFactory.getOverworldTeleportPlatform()) ))
- {
- netherFactorys.add(netherFactory);
- return new InteractionResponse(InteractionResult.SUCCESS, "");
- }
- else
- {
- return new InteractionResponse(InteractionResult.FAILURE, "");
- }
- }
-
- public NetherFactory getFactory(Location factoryLocation)
- {
- for (NetherFactory factory : netherFactorys)
- {
- if (factory.getCenterLocation().equals(factoryLocation)
- || factory.getInventoryLocation().equals(factoryLocation)
- || factory.getPowerSourceLocation().equals(factoryLocation)
- || factory.getNetherTeleportPlatform().equals(factoryLocation)
- || factory.getOverworldTeleportPlatform().equals(factoryLocation))
- return factory;
- }
- return null;
- }
-
- public boolean factoryExistsAt(Location factoryLocation)
- {
- boolean returnValue = false;
- if (getFactory(factoryLocation) != null)
- {
- returnValue = true;
- }
- return returnValue;
- }
-
- public boolean factoryWholeAt(Location factoryLocation)
- {
- boolean returnValue = false;
- if (getFactory(factoryLocation) != null)
- {
- returnValue = getFactory(factoryLocation).isWhole(false);
- }
- return returnValue;
- }
-
- public void removeFactory(Factory factory)
- {
- netherFactorys.remove((NetherFactory)factory);
- }
-
- public void updateRepair(long time)
- {
- for (NetherFactory factory: netherFactorys)
- {
- factory.updateRepair(time/((double)FactoryModPlugin.REPAIR_PERIOD));
- }
- long currentTime=System.currentTimeMillis();
- Iterator itr=netherFactorys.iterator();
- while(itr.hasNext())
- {
- NetherFactory factory=itr.next();
- if(currentTime>(factory.getTimeDisrepair()+FactoryModPlugin.DISREPAIR_PERIOD))
- {
- itr.remove();
- }
- }
- }
-
- public String getSavesFileName()
- {
- return FactoryModPlugin.NETHER_FACTORY_SAVE_FILE;
- }
-
- public double getScalingFactor(Location location)
- {
- double scalingFactor = 1;
- NetherFactoryProperties properties = plugin.getNetherFactoryProperties();
- for (NetherFactory factory : netherFactorys)
- {
- Location factoryLoc = factory.getCenterLocation();
- if(factory.getCenterLocation().equals(location))
- {
- continue;
- }
- //the distance function uses square root, which is quite expensive, let's check if it's even realistic that it's within range first.
- if ((location.getBlockX()-factoryLoc.getBlockX()) < properties.getScalingRadius() || (location.getBlockX()-factoryLoc.getBlockX()) > -(properties.getScalingRadius()))
- {
- if ((location.getBlockZ()-factoryLoc.getBlockZ()) < properties.getScalingRadius() || (location.getBlockZ()-factoryLoc.getBlockZ()) > -(properties.getScalingRadius()))
- {
- double distance = location.distance(factoryLoc);
- if (distance <= properties.getScalingRadius())
- {
- scalingFactor = scalingFactor * Math.exp(1/(distance/properties.getCostScalingRadius()));
- }
- }
- }
- }
- return scalingFactor;
- }
-
-}
diff --git a/src/com/github/igotyou/FactoryMod/managers/PrintingPressManager.java b/src/com/github/igotyou/FactoryMod/managers/PrintingPressManager.java
deleted file mode 100644
index 464cdfaa..00000000
--- a/src/com/github/igotyou/FactoryMod/managers/PrintingPressManager.java
+++ /dev/null
@@ -1,290 +0,0 @@
-package com.github.igotyou.FactoryMod.managers;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.OutputStreamWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.World;
-import org.bukkit.block.Block;
-import org.bukkit.block.Chest;
-import org.bukkit.inventory.Inventory;
-
-import com.github.igotyou.FactoryMod.FactoryModPlugin;
-import com.github.igotyou.FactoryMod.FactoryObject.FactoryType;
-import com.github.igotyou.FactoryMod.Factorys.PrintingPress;
-import com.github.igotyou.FactoryMod.Factorys.PrintingPress.OperationMode;
-import com.github.igotyou.FactoryMod.Factorys.ProductionFactory;
-import com.github.igotyou.FactoryMod.interfaces.Factory;
-import com.github.igotyou.FactoryMod.interfaces.Manager;
-import com.github.igotyou.FactoryMod.properties.PrintingPressProperties;
-import com.github.igotyou.FactoryMod.properties.ProductionProperties;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse.InteractionResult;
-import com.github.igotyou.FactoryMod.recipes.ProductionRecipe;
-import com.github.igotyou.FactoryMod.utility.ItemList;
-import com.github.igotyou.FactoryMod.utility.NamedItemStack;
-import java.util.Iterator;
-
-//original file:
-/**
-* Manager.java
-* Purpose: Interface for Manager objects for basic manager functionality
-*
-* @author MrTwiggy
-* @version 0.1 1/08/13
-*/
-//edited version:
-/**
-* Manager.java
-* Purpose: Interface for Manager objects for basic manager functionality
-* @author igotyou
-*
-*/
-
-public class PrintingPressManager implements Manager
-{
- private FactoryModPlugin plugin;
- private List producers;
- private long repairTime;
-
- public PrintingPressManager(FactoryModPlugin plugin)
- {
- this.plugin = plugin;
- producers = new ArrayList();
- //Set maintenance clock to 0
- updateFactorys();
- }
-
- public void save(File file) throws IOException
- {
- //Takes difference between last repair update and current one and scales repair accordingly
- updateRepair(System.currentTimeMillis()-repairTime);
- repairTime=System.currentTimeMillis();
- FileOutputStream fileOutputStream = new FileOutputStream(file);
- ObjectOutputStream oos = new ObjectOutputStream(fileOutputStream);
- int version = 1;
- oos.writeInt(version);
- oos.writeInt(producers.size());
- for (PrintingPress production : producers)
- {
- //order: subFactoryType world recipe1,recipe2 central_x central_y central_z inventory_x inventory_y inventory_z power_x power_y power_z active productionTimer energyTimer current_Recipe_number
-
- Location centerlocation = production.getCenterLocation();
- Location inventoryLocation = production.getInventoryLocation();
- Location powerLocation = production.getPowerSourceLocation();
-
- oos.writeUTF(centerlocation.getWorld().getName());
-
- oos.writeInt(centerlocation.getBlockX());
- oos.writeInt(centerlocation.getBlockY());
- oos.writeInt(centerlocation.getBlockZ());
-
- oos.writeInt(inventoryLocation.getBlockX());
- oos.writeInt(inventoryLocation.getBlockY());
- oos.writeInt(inventoryLocation.getBlockZ());
-
- oos.writeInt(powerLocation.getBlockX());
- oos.writeInt(powerLocation.getBlockY());
- oos.writeInt(powerLocation.getBlockZ());
-
- oos.writeBoolean(production.getActive());
- oos.writeInt(production.getMode().getId());
- oos.writeInt(production.getProductionTimer());
- oos.writeInt(production.getEnergyTimer());
- oos.writeDouble(production.getCurrentRepair());
- oos.writeLong(production.getTimeDisrepair());
-
- oos.writeInt(production.getContainedPaper());
- oos.writeInt(production.getContainedBindings());
- oos.writeInt(production.getContainedSecurityMaterials());
- oos.writeInt(production.getLockedResultCode());
-
- int[] processQueue = production.getProcessQueue();
- oos.writeInt(processQueue.length);
- for (int entry : processQueue) {
- oos.writeInt(entry);
- }
- }
- oos.flush();
- fileOutputStream.close();
- }
-
- public void load(File file) throws IOException
- {
- try {
- repairTime=System.currentTimeMillis();
- FileInputStream fileInputStream = new FileInputStream(file);
- ObjectInputStream ois = new ObjectInputStream(fileInputStream);
- int version = ois.readInt();
- assert(version == 1);
- int count = ois.readInt();
- int i = 0;
- for (i = 0; i < count; i++)
- {
- String worldName = ois.readUTF();
- World world = plugin.getServer().getWorld(worldName);
-
- Location centerLocation = new Location(world, ois.readInt(), ois.readInt(), ois.readInt());
- Location inventoryLocation = new Location(world, ois.readInt(), ois.readInt(), ois.readInt());
- Location powerLocation = new Location(world, ois.readInt(), ois.readInt(), ois.readInt());
- boolean active = ois.readBoolean();
- OperationMode mode = PrintingPress.OperationMode.byId(ois.readInt());
- int productionTimer = ois.readInt();
- int energyTimer = ois.readInt();
- double currentRepair = ois.readDouble();
- long timeDisrepair = ois.readLong();
- int containedPaper = ois.readInt();
- int containedBindings = ois.readInt();
- int containedSecurityMaterials = ois.readInt();
- int lockedResultCode = ois.readInt();
-
- int queueLength = ois.readInt();
- int[] processQueue = new int[queueLength];
- int j;
- for (j = 0; j < queueLength; j++) {
- processQueue[j] = ois.readInt();
- }
-
- PrintingPress production = new PrintingPress(centerLocation, inventoryLocation, powerLocation,
- active, productionTimer,
- energyTimer, currentRepair, timeDisrepair,
- mode,
- plugin.getPrintingPressProperties(),
- containedPaper, containedBindings, containedSecurityMaterials,
- processQueue, lockedResultCode);
- addFactory(production);
- }
- fileInputStream.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- public void updateFactorys()
- {
- plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable()
- {
- @Override
- public void run()
- {
- for (PrintingPress production: producers)
- {
- production.update();
- }
- }
- }, 0L, FactoryModPlugin.PRODUCER_UPDATE_CYCLE);
- }
-
- public InteractionResponse createFactory(Location factoryLocation, Location inventoryLocation, Location powerSourceLocation)
- {
- PrintingPressProperties printingPressProperties = plugin.getPrintingPressProperties();
-
- if (!factoryExistsAt(factoryLocation))
- {
- Block inventoryBlock = inventoryLocation.getBlock();
- Chest chest = (Chest) inventoryBlock.getState();
- Inventory chestInventory = chest.getInventory();
- ItemList inputs = printingPressProperties.getConstructionMaterials();
- boolean hasMaterials = inputs.allIn(chestInventory);
- if (hasMaterials)
- {
- PrintingPress production = new PrintingPress(factoryLocation, inventoryLocation, powerSourceLocation, false, plugin.getPrintingPressProperties());
- if (printingPressProperties.getConstructionMaterials().removeFrom(production.getInventory()))
- {
- addFactory(production);
- return new InteractionResponse(InteractionResult.SUCCESS, "Successfully created " + printingPressProperties.getName());
- }
- }
- return new InteractionResponse(InteractionResult.FAILURE, "Not enough materials in chest!");
- }
- return new InteractionResponse(InteractionResult.FAILURE, "There is already a " + printingPressProperties.getName() + " there!");
- }
-
- public InteractionResponse addFactory(Factory factory)
- {
- PrintingPress production = (PrintingPress) factory;
- if (production.getCenterLocation().getBlock().getType().equals(FactoryModPlugin.CENTRAL_BLOCK_MATERIAL) && (!factoryExistsAt(production.getCenterLocation()))
- || !factoryExistsAt(production.getInventoryLocation()) || !factoryExistsAt(production.getPowerSourceLocation()))
- {
- producers.add(production);
- return new InteractionResponse(InteractionResult.SUCCESS, "");
- }
- else
- {
- return new InteractionResponse(InteractionResult.FAILURE, "");
- }
- }
-
- public PrintingPress getFactory(Location factoryLocation)
- {
- for (PrintingPress production : producers)
- {
- if (production.getCenterLocation().equals(factoryLocation) || production.getInventoryLocation().equals(factoryLocation)
- || production.getPowerSourceLocation().equals(factoryLocation))
- return production;
- }
- return null;
- }
-
- public boolean factoryExistsAt(Location factoryLocation)
- {
- boolean returnValue = false;
- if (getFactory(factoryLocation) != null)
- {
- returnValue = true;
- }
- return returnValue;
- }
-
- public boolean factoryWholeAt(Location factoryLocation)
- {
- boolean returnValue = false;
- if (getFactory(factoryLocation) != null)
- {
- returnValue = getFactory(factoryLocation).isWhole(false);
- }
- return returnValue;
- }
-
- public void removeFactory(Factory factory)
- {
- producers.remove((ProductionFactory)factory);
- }
-
- public void updateRepair(long time)
- {
- for (PrintingPress production: producers)
- {
- production.updateRepair(time/((double)FactoryModPlugin.REPAIR_PERIOD));
- }
- long currentTime=System.currentTimeMillis();
- Iterator itr=producers.iterator();
- while(itr.hasNext())
- {
- PrintingPress producer=itr.next();
- if(currentTime>(producer.getTimeDisrepair()+FactoryModPlugin.DISREPAIR_PERIOD))
- {
- itr.remove();
- }
- }
- }
-
- public String getSavesFileName()
- {
- return FactoryModPlugin.PRINTING_PRESSES_SAVE_FILE;
- }
-
-}
diff --git a/src/com/github/igotyou/FactoryMod/managers/ProductionManager.java b/src/com/github/igotyou/FactoryMod/managers/ProductionManager.java
deleted file mode 100644
index 0085443f..00000000
--- a/src/com/github/igotyou/FactoryMod/managers/ProductionManager.java
+++ /dev/null
@@ -1,338 +0,0 @@
-package com.github.igotyou.FactoryMod.managers;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.block.Block;
-import org.bukkit.block.Chest;
-import org.bukkit.inventory.Inventory;
-
-import com.github.igotyou.FactoryMod.FactoryModPlugin;
-import com.github.igotyou.FactoryMod.Factorys.ProductionFactory;
-import com.github.igotyou.FactoryMod.interfaces.Factory;
-import com.github.igotyou.FactoryMod.interfaces.Manager;
-import com.github.igotyou.FactoryMod.interfaces.Recipe;
-import com.github.igotyou.FactoryMod.properties.ProductionProperties;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse;
-import com.github.igotyou.FactoryMod.utility.InteractionResponse.InteractionResult;
-import com.github.igotyou.FactoryMod.recipes.ProductionRecipe;
-import com.github.igotyou.FactoryMod.utility.ItemList;
-import com.github.igotyou.FactoryMod.utility.NamedItemStack;
-import java.util.Iterator;
-
-//original file:
-/**
-* Manager.java
-* Purpose: Interface for Manager objects for basic manager functionality
-*
-* @author MrTwiggy
-* @version 0.1 1/08/13
-*/
-//edited version:
-/**
-* Manager.java
-* Purpose: Interface for Manager objects for basic manager functionality
-* @author igotyou
-*
-*/
-
-public class ProductionManager implements Manager
-{
- private FactoryModPlugin plugin;
- private List producers;
- private long repairTime;
-
- public ProductionManager(FactoryModPlugin plugin)
- {
- this.plugin = plugin;
- producers = new ArrayList();
- //Set maintenance clock to 0
- updateFactorys();
- }
-
- public void save(File file) throws IOException
- {
- //Takes difference between last repair update and current one and scales repair accordingly
- updateRepair(System.currentTimeMillis()-repairTime);
- repairTime=System.currentTimeMillis();
- FileOutputStream fileOutputStream = new FileOutputStream(file);
- BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream));
- for (ProductionFactory production : producers)
- {
- //order: subFactoryType world recipe1,recipe2 central_x central_y central_z inventory_x inventory_y inventory_z power_x power_y power_z active productionTimer energyTimer current_Recipe_number
-
- Location centerlocation = production.getCenterLocation();
- Location inventoryLoctation = production.getInventoryLocation();
- Location powerLocation = production.getPowerSourceLocation();
-
-
-
- bufferedWriter.append(production.getSubFactoryType());
- bufferedWriter.append(" ");
-
- List recipes=production.getRecipes();
- for (int i = 0; i < recipes.size(); i++)
- {
- bufferedWriter.append(String.valueOf(recipes.get(i).getTitle()));
- bufferedWriter.append(",");
- }
- bufferedWriter.append(" ");
-
- bufferedWriter.append(centerlocation.getWorld().getName());
- bufferedWriter.append(" ");
- bufferedWriter.append(Integer.toString(centerlocation.getBlockX()));
- bufferedWriter.append(" ");
- bufferedWriter.append(Integer.toString(centerlocation.getBlockY()));
- bufferedWriter.append(" ");
- bufferedWriter.append(Integer.toString(centerlocation.getBlockZ()));
- bufferedWriter.append(" ");
-
- bufferedWriter.append(Integer.toString(inventoryLoctation.getBlockX()));
- bufferedWriter.append(" ");
- bufferedWriter.append(Integer.toString(inventoryLoctation.getBlockY()));
- bufferedWriter.append(" ");
- bufferedWriter.append(Integer.toString(inventoryLoctation.getBlockZ()));
- bufferedWriter.append(" ");
-
- bufferedWriter.append(Integer.toString(powerLocation.getBlockX()));
- bufferedWriter.append(" ");
- bufferedWriter.append(Integer.toString(powerLocation.getBlockY()));
- bufferedWriter.append(" ");
- bufferedWriter.append(Integer.toString(powerLocation.getBlockZ()));
- bufferedWriter.append(" ");
-
- bufferedWriter.append(Boolean.toString(production.getActive()));
- bufferedWriter.append(" ");
- bufferedWriter.append(Integer.toString(production.getProductionTimer()));
- bufferedWriter.append(" ");
- bufferedWriter.append(Integer.toString(production.getEnergyTimer()));
- bufferedWriter.append(" ");
- bufferedWriter.append(Integer.toString(production.getCurrentRecipeNumber()));
- bufferedWriter.append(" ");
- bufferedWriter.append(Double.toString(production.getCurrentRepair()));
- bufferedWriter.append(" ");
- bufferedWriter.append(String.valueOf(production.getTimeDisrepair()));
- bufferedWriter.append("\n");
- }
- bufferedWriter.flush();
- fileOutputStream.close();
- }
-
- public void load(File file) throws IOException
- {
- repairTime=System.currentTimeMillis();
- FileInputStream fileInputStream = new FileInputStream(file);
- BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
- String line;
- while ((line = bufferedReader.readLine()) != null)
- {
- String parts[] = line.split(" ");
-
- //order: subFactoryType world recipe1,recipe2 central_x central_y central_z inventory_x inventory_y inventory_z power_x power_y power_z active productionTimer energyTimer current_Recipe_number
- String subFactoryType = parts[0];
- String recipeNames[] = parts[1].split(",");
-
- Location centerLocation = new Location(plugin.getServer().getWorld(parts[2]), Integer.parseInt(parts[3]), Integer.parseInt(parts[4]), Integer.parseInt(parts[5]));
- Location inventoryLocation = new Location(plugin.getServer().getWorld(parts[2]), Integer.parseInt(parts[6]), Integer.parseInt(parts[7]), Integer.parseInt(parts[8]));
- Location powerLocation = new Location(plugin.getServer().getWorld(parts[2]), Integer.parseInt(parts[9]), Integer.parseInt(parts[10]), Integer.parseInt(parts[11]));
- boolean active = Boolean.parseBoolean(parts[12]);
- int productionTimer = Integer.parseInt(parts[13]);
- int energyTimer = Integer.parseInt(parts[14]);
- int currentRecipeNumber = Integer.parseInt(parts[15]);
- double currentRepair = Double.parseDouble(parts[16]);
- long timeDisrepair = Long.parseLong(parts[17]);
- if(FactoryModPlugin.productionProperties.containsKey(subFactoryType))
- {
- Set recipes=new HashSet();
-
- // TODO: Give default recipes for subfactory type
- ProductionProperties properties = FactoryModPlugin.productionProperties.get(subFactoryType);
- recipes.addAll(properties.getRecipes());
-
- for(String name:recipeNames)
- {
- if(FactoryModPlugin.productionRecipes.containsKey(name))
- {
- recipes.add(FactoryModPlugin.productionRecipes.get(name));
- }
- }
-
- ProductionFactory production = new ProductionFactory(centerLocation, inventoryLocation, powerLocation, subFactoryType, active, productionTimer, energyTimer, new ArrayList(recipes), currentRecipeNumber, currentRepair,timeDisrepair);
- addFactory(production);
- }
- }
- fileInputStream.close();
- }
-
- public void updateFactorys()
- {
- plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable()
- {
- @Override
- public void run()
- {
- for (ProductionFactory production: producers)
- {
- production.update();
- }
- }
- }, 0L, FactoryModPlugin.PRODUCER_UPDATE_CYCLE);
- }
-
- public InteractionResponse createFactory(Location factoryLocation, Location inventoryLocation, Location powerSourceLocation)
- {
- if (!factoryExistsAt(factoryLocation))
- {
- HashMap properties = plugin.productionProperties;
- Block inventoryBlock = inventoryLocation.getBlock();
- Chest chest = (Chest) inventoryBlock.getState();
- Inventory chestInventory = chest.getInventory();
- String subFactoryType = null;
- for (Map.Entry entry : properties.entrySet())
- {
- ItemList inputs = entry.getValue().getInputs();
- if(inputs.exactlyIn(chestInventory))
- {
- subFactoryType = entry.getKey();
- }
- }
- if (subFactoryType != null)
- {
- ProductionFactory production = new ProductionFactory(factoryLocation, inventoryLocation, powerSourceLocation,subFactoryType);
- if (properties.get(subFactoryType).getInputs().allIn(production.getInventory()))
- {
- addFactory(production);
- properties.get(subFactoryType).getInputs().removeFrom(production.getInventory());
- return new InteractionResponse(InteractionResult.SUCCESS, "Successfully created " + production.getProductionFactoryProperties().getName());
- }
- }
- return new InteractionResponse(InteractionResult.FAILURE, "Incorrect materials in chest! Stacks must match perfectly.");
- }
- return new InteractionResponse(InteractionResult.FAILURE, "There is already a factory there!");
- }
-
- public InteractionResponse createFactory(Location factoryLocation, Location inventoryLocation, Location powerSourceLocation, int productionTimer, int energyTimer)
- {
- if (!factoryExistsAt(factoryLocation))
- {
- HashMap properties = plugin.productionProperties;
- Block inventoryBlock = inventoryLocation.getBlock();
- Chest chest = (Chest) inventoryBlock.getState();
- Inventory chestInventory = chest.getInventory();
- String subFactoryType = null;
- boolean hasMaterials = true;
- for (Map.Entry entry : properties.entrySet())
- {
- ItemList inputs = entry.getValue().getInputs();
- if(!inputs.allIn(chestInventory))
- {
- hasMaterials = false;
- }
- if (hasMaterials == true)
- {
- subFactoryType = entry.getKey();
- }
- }
- if (hasMaterials && subFactoryType != null)
- {
- ProductionFactory production = new ProductionFactory(factoryLocation, inventoryLocation, powerSourceLocation,subFactoryType);
- if (properties.get(subFactoryType).getInputs().removeFrom(production.getInventory()))
- {
- addFactory(production);
- return new InteractionResponse(InteractionResult.SUCCESS, "Successfully created " + subFactoryType + " production factory");
- }
- }
- return new InteractionResponse(InteractionResult.FAILURE, "Not enough materials in chest!");
- }
- return new InteractionResponse(InteractionResult.FAILURE, "There is already a factory there!");
- }
-
- public InteractionResponse addFactory(Factory factory)
- {
- ProductionFactory production = (ProductionFactory) factory;
- if (production.getCenterLocation().getBlock().getType().equals(Material.WORKBENCH) && (!factoryExistsAt(production.getCenterLocation()))
- || !factoryExistsAt(production.getInventoryLocation()) || !factoryExistsAt(production.getPowerSourceLocation()))
- {
- producers.add(production);
- return new InteractionResponse(InteractionResult.SUCCESS, "");
- }
- else
- {
- return new InteractionResponse(InteractionResult.FAILURE, "");
- }
- }
-
- public ProductionFactory getFactory(Location factoryLocation)
- {
- for (ProductionFactory production : producers)
- {
- if (production.getCenterLocation().equals(factoryLocation) || production.getInventoryLocation().equals(factoryLocation)
- || production.getPowerSourceLocation().equals(factoryLocation))
- return production;
- }
- return null;
- }
-
- public boolean factoryExistsAt(Location factoryLocation)
- {
- boolean returnValue = false;
- if (getFactory(factoryLocation) != null)
- {
- returnValue = true;
- }
- return returnValue;
- }
-
- public boolean factoryWholeAt(Location factoryLocation)
- {
- boolean returnValue = false;
- if (getFactory(factoryLocation) != null)
- {
- returnValue = getFactory(factoryLocation).isWhole(false);
- }
- return returnValue;
- }
-
- public void removeFactory(Factory factory)
- {
- producers.remove((ProductionFactory)factory);
- }
-
- public void updateRepair(long time)
- {
- for (ProductionFactory production: producers)
- {
- production.updateRepair(time/((double)FactoryModPlugin.REPAIR_PERIOD));
- }
- long currentTime=System.currentTimeMillis();
- Iterator itr=producers.iterator();
- while(itr.hasNext())
- {
- ProductionFactory producer=itr.next();
- if(currentTime>(producer.getTimeDisrepair()+FactoryModPlugin.DISREPAIR_PERIOD))
- {
- itr.remove();
- }
- }
- }
-
- public String getSavesFileName()
- {
- return FactoryModPlugin.PRODUCTION_SAVES_FILE;
- }
-
-}
diff --git a/src/com/github/igotyou/FactoryMod/properties/NetherFactoryProperties.java b/src/com/github/igotyou/FactoryMod/properties/NetherFactoryProperties.java
deleted file mode 100644
index 7591f2cf..00000000
--- a/src/com/github/igotyou/FactoryMod/properties/NetherFactoryProperties.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package com.github.igotyou.FactoryMod.properties;
-
-
-import org.bukkit.Material;
-import org.bukkit.configuration.ConfigurationSection;
-
-import com.github.igotyou.FactoryMod.FactoryModPlugin;
-import com.github.igotyou.FactoryMod.utility.ItemList;
-import com.github.igotyou.FactoryMod.utility.NamedItemStack;
-
-
-public class NetherFactoryProperties
-{
- private ItemList constructionMaterials;
- private ItemList fuel;
- private ItemList repairMaterials;
- private int energyTime;
- private String name;
- private int repair;
- private double repairTime;
- private int scalingMode;
- private int scalingRadius;
- private int costScalingRadius;
- private boolean useFuelOnTeleport;
-
- public NetherFactoryProperties(ItemList constructionMaterials, ItemList fuel, ItemList repairMaterials,
- int energyTime, String name,int repair, double repairTime, int scalingRadius, boolean useFuelOnTeleport, int costScalingRadius)
- {
- this.constructionMaterials = constructionMaterials;
- this.fuel = fuel;
- this.repairMaterials = repairMaterials;
- this.energyTime = energyTime;
- this.name = name;
- this.repair=repair;
- this.repairTime=repairTime;
- this.scalingRadius = scalingRadius;
- this.costScalingRadius = costScalingRadius;
- this.useFuelOnTeleport = useFuelOnTeleport;
- }
-
- public int getRepair()
- {
- return repair;
- }
-
- public int getScalingRadius()
- {
- return scalingRadius;
- }
-
- public int getCostScalingRadius()
- {
- return costScalingRadius;
- }
-
- //0 == no scaling, 1==linear scaling, 2==exponential scaling
- public int getScalingMode()
- {
- return scalingMode;
- }
-
- public ItemList getConstructionMaterials()
- {
- return constructionMaterials;
- }
-
- public ItemList getFuel()
- {
- return fuel;
- }
-
- public ItemList getRepairMaterials()
- {
- return repairMaterials;
- }
-
- public int getEnergyTime()
- {
- return energyTime;
- }
-
- public String getName()
- {
- return name;
- }
-
- public static NetherFactoryProperties fromConfig(FactoryModPlugin plugin, ConfigurationSection configNetherFactory)
- {
- ItemList nfFuel=plugin.getItems(configNetherFactory.getConfigurationSection("fuel"));
- if(nfFuel.isEmpty())
- {
- nfFuel=new ItemList();
- nfFuel.add(new NamedItemStack(Material.getMaterial("COAL"),1,(short)1,"Charcoal"));
- }
- ConfigurationSection costs = configNetherFactory.getConfigurationSection("costs");
- ItemList nfConstructionCost=plugin.getItems(costs.getConfigurationSection("construction"));
- ItemList nfRepairCost=plugin.getItems(costs.getConfigurationSection("repair"));
- int nfEnergyTime = configNetherFactory.getInt("fuel_time", 10);
- int nfRepair = costs.getInt("repair_multiple",1);
- String nfName = configNetherFactory.getString("name", "Nether Factory");
- int repairTime = configNetherFactory.getInt("repair_time",12);
- int nfScalingRadius = configNetherFactory.getInt("scaling_radius", 5000);
- int costScalingRadius = configNetherFactory.getInt("scaling_radius", 5000);
- boolean nfUseFuelOnTeleport = configNetherFactory.getBoolean("use_fuel_on_teleport", false);
- return new NetherFactoryProperties(nfConstructionCost, nfFuel, nfRepairCost, nfEnergyTime, nfName, nfRepair, repairTime, nfScalingRadius,nfUseFuelOnTeleport, costScalingRadius);
-
- }
-
- public double getRepairTime()
- {
- return repairTime;
- }
-
- public boolean getUseFuelOnTeleport()
- {
- return useFuelOnTeleport;
- }
-
-}
diff --git a/src/com/github/igotyou/FactoryMod/properties/PrintingPressProperties.java b/src/com/github/igotyou/FactoryMod/properties/PrintingPressProperties.java
deleted file mode 100644
index 7285b726..00000000
--- a/src/com/github/igotyou/FactoryMod/properties/PrintingPressProperties.java
+++ /dev/null
@@ -1,187 +0,0 @@
-package com.github.igotyou.FactoryMod.properties;
-
-import java.util.List;
-
-import org.bukkit.Material;
-import org.bukkit.configuration.ConfigurationSection;
-
-import com.github.igotyou.FactoryMod.FactoryModPlugin;
-import com.github.igotyou.FactoryMod.recipes.ProductionRecipe;
-import com.github.igotyou.FactoryMod.utility.ItemList;
-import com.github.igotyou.FactoryMod.utility.NamedItemStack;
-
-public class PrintingPressProperties {
-
- private ItemList fuel;
- private ItemList constructionMaterials;
- private ItemList plateMaterials;
- private ItemList bindingMaterials;
- private ItemList pageMaterials;
- private int pagesPerLot;
- private ItemList pamphletMaterials;
- private int pamphletsPerLot;
- private ItemList securityMaterials;
- private int securityNotesPerLot;
- private int energyTime;
- private String name;
- private int maxRepair;
- private ItemList repairMaterials;
- private int pageLead;
- private int setPlateTime;
- private int repairTime;
- private int bookPagesCap;
-
-
- public int getPageLead() {
- return pageLead;
- }
-
-
- public PrintingPressProperties(
- ItemList fuel,
- ItemList constructionMaterials,
- ItemList repairMaterials,
- ItemList plateMaterials,
- ItemList bindingMaterials,
- ItemList pageMaterials,
- int pagesPerLot,
- ItemList pamphletMaterials,
- int pamphletsPerLot,
- ItemList securityMaterials,
- int securityNotesPerLot,
- int energyTime, String name, int repair, int paperRate,
- int pageLead, int setPlateTime, int repairTime, int bookPagesCap
- )
- {
- this.fuel = fuel;
- this.energyTime = energyTime;
- this.name = name;
- this.maxRepair=repair;
- this.constructionMaterials = constructionMaterials;
- this.repairMaterials = repairMaterials;
- this.plateMaterials = plateMaterials;
- this.bindingMaterials = bindingMaterials;
- this.pageMaterials = pageMaterials;
- this.pagesPerLot = pagesPerLot;
- this.pamphletMaterials = pamphletMaterials;
- this.pamphletsPerLot = pamphletsPerLot;
- this.securityMaterials = securityMaterials;
- this.securityNotesPerLot = securityNotesPerLot;
- this.pageLead = pageLead;
- this.setPlateTime = setPlateTime;
- this.repairTime = repairTime;
- this.bookPagesCap = bookPagesCap;
- }
-
-
- public int getSetPlateTime() {
- return setPlateTime;
- }
-
-
- public int getRepairTime() {
- return repairTime;
- }
-
-
- public ItemList getBindingMaterials() {
- return bindingMaterials;
- }
-
-
- public ItemList getPageMaterials() {
- return pageMaterials;
- }
-
- public ItemList getSecurityMaterials() {
- return securityMaterials;
- }
-
- public ItemList getRepairMaterials() {
- return repairMaterials;
- }
-
- public ItemList getPlateMaterials() {
- return plateMaterials;
- }
-
-
- public static PrintingPressProperties fromConfig(FactoryModPlugin plugin, ConfigurationSection configPrintingPresses) {
- ItemList ppFuel=plugin.getItems(configPrintingPresses.getConfigurationSection("fuel"));
- if(ppFuel.isEmpty())
- {
- ppFuel=new ItemList();
- ppFuel.add(new NamedItemStack(Material.getMaterial("COAL"),1,(short)1,"Charcoal"));
- }
- ConfigurationSection costs = configPrintingPresses.getConfigurationSection("costs");
- ItemList ppConstructionCost=plugin.getItems(costs.getConfigurationSection("construction"));
- ItemList ppRepairCost=plugin.getItems(costs.getConfigurationSection("repair"));
- ItemList ppPlateCost=plugin.getItems(costs.getConfigurationSection("plates"));
- ItemList ppBindingCost=plugin.getItems(costs.getConfigurationSection("binding"));
- ItemList ppPageCost=plugin.getItems(costs.getConfigurationSection("page_lot"));
- int pagesPerLot = costs.getInt("pages_per_lot",16);
- ItemList ppPamphletCost=plugin.getItems(costs.getConfigurationSection("pamphlet_lot"));
- int pamphletsPerLot = costs.getInt("pamphlets_per_lot",24);
- ItemList ppSecurityCost=plugin.getItems(costs.getConfigurationSection("security_lot"));
- int securityNotesPerLot = costs.getInt("security_notes_per_lot",24);
- int ppEnergyTime = configPrintingPresses.getInt("fuel_time", 10);
- int ppRepair = costs.getInt("repair_multiple",1);
- String ppName = configPrintingPresses.getString("name", "Printing Press");
- int paperRate = configPrintingPresses.getInt("paper_rate",3);
- int pageLead = configPrintingPresses.getInt("page_lead",12);
- int setPageTime = configPrintingPresses.getInt("set_page_time",20);
- int repairTime = configPrintingPresses.getInt("repair_time",12);
- int bookPagesCap = configPrintingPresses.getInt("book_pages_cap",16);
- return new PrintingPressProperties(ppFuel, ppConstructionCost, ppRepairCost, ppPlateCost, ppBindingCost, ppPageCost, pagesPerLot, ppPamphletCost, pamphletsPerLot, ppSecurityCost, securityNotesPerLot, ppEnergyTime, ppName, ppRepair, paperRate, pageLead, setPageTime, repairTime, bookPagesCap);
- }
-
-
- public int getMaxRepair()
- {
- return maxRepair;
- }
-
- public int getPagesPerLot() {
- return pagesPerLot;
- }
-
-
- public ItemList getPamphletMaterials() {
- return pamphletMaterials;
- }
-
-
- public int getPamphletsPerLot() {
- return pamphletsPerLot;
- }
-
-
- public int getSecurityNotesPerLot() {
- return securityNotesPerLot;
- }
-
-
- public ItemList getFuel()
- {
- return fuel;
- }
-
- public int getEnergyTime()
- {
- return energyTime;
- }
-
- public String getName()
- {
- return name;
- }
-
- public ItemList getConstructionMaterials() {
- return constructionMaterials;
- }
-
-
- public int getBookPagesCap() {
- return bookPagesCap;
- }
-}
diff --git a/src/com/github/igotyou/FactoryMod/properties/ProductionProperties.java b/src/com/github/igotyou/FactoryMod/properties/ProductionProperties.java
deleted file mode 100644
index 4172b3aa..00000000
--- a/src/com/github/igotyou/FactoryMod/properties/ProductionProperties.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.github.igotyou.FactoryMod.properties;
-
-import java.util.List;
-
-import com.github.igotyou.FactoryMod.interfaces.Properties;
-import com.github.igotyou.FactoryMod.recipes.ProductionRecipe;
-import com.github.igotyou.FactoryMod.utility.ItemList;
-import com.github.igotyou.FactoryMod.utility.NamedItemStack;
-
-
-public class ProductionProperties implements Properties
-{
- private ItemList inputs;
- private List recipes;
- private ItemList fuel;
- private int energyTime;
- private String name;
- private int repair;
-
- public ProductionProperties(ItemList inputs, List recipes,
- ItemList fuel, int energyTime, String name,int repair)
- {
- this.inputs = inputs;
- this.recipes = recipes;
- this.fuel = fuel;
- this.energyTime = energyTime;
- this.name = name;
- this.repair=repair;
- }
-
- public int getRepair()
- {
- return repair;
- }
-
- public ItemList getInputs()
- {
- return inputs;
- }
-
- public List getRecipes()
- {
- return recipes;
- }
-
- public ItemList getFuel()
- {
- return fuel;
- }
-
- public int getEnergyTime()
- {
- return energyTime;
- }
-
- public String getName()
- {
- return name;
- }
-}
diff --git a/src/com/github/igotyou/FactoryMod/recipes/ProbabilisticEnchantment.java b/src/com/github/igotyou/FactoryMod/recipes/ProbabilisticEnchantment.java
deleted file mode 100644
index 69d3f8f4..00000000
--- a/src/com/github/igotyou/FactoryMod/recipes/ProbabilisticEnchantment.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.github.igotyou.FactoryMod.recipes;
-
-import org.bukkit.enchantments.Enchantment;
-
-/**
- *
- * @author Brian Landry
- */
-public class ProbabilisticEnchantment {
- private String name;
- private Enchantment enchantment;
- private int level;
- private double probability;
-
- public ProbabilisticEnchantment(String name, String enchantment,Integer level,double probability){
- this.name=name;
- this.enchantment=Enchantment.getByName(enchantment);
- this.level=level.intValue();
- this.probability=probability;
- }
-
- public String getName()
- {
- return name;
- }
-
- public Enchantment getEnchantment()
- {
- return enchantment;
- }
-
- public int getLevel()
- {
- return level;
- }
-
- public double getProbability()
- {
- return probability;
- }
-
-}
diff --git a/src/com/github/igotyou/FactoryMod/recipes/ProductionRecipe.java b/src/com/github/igotyou/FactoryMod/recipes/ProductionRecipe.java
deleted file mode 100644
index 10d85dc2..00000000
--- a/src/com/github/igotyou/FactoryMod/recipes/ProductionRecipe.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package com.github.igotyou.FactoryMod.recipes;
-
-import java.util.HashMap;
-import java.util.Random;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.bukkit.enchantments.Enchantment;
-
-import com.github.igotyou.FactoryMod.interfaces.Recipe;
-import com.github.igotyou.FactoryMod.utility.ItemList;
-import com.github.igotyou.FactoryMod.utility.NamedItemStack;
-import org.bukkit.inventory.Inventory;
-
-public class ProductionRecipe implements Recipe
-{
- private String title;
- private String recipeName;
- private int productionTime;
- private ItemList inputs;
- private ItemList upgrades;
- private ItemList outputs;
- private ItemList repairs;
- private List outputRecipes;
- private List enchantments;
- private boolean useOnce;
-
- public ProductionRecipe(String title,String recipeName,int productionTime,ItemList inputs,ItemList upgrades,
- ItemList outputs,List enchantments,boolean useOnce, ItemList repairs)
- {
- this.title=title;
- this.recipeName = recipeName;
- this.productionTime = productionTime;
- this.inputs = inputs;
- this.upgrades=upgrades;
- this.outputs = outputs;
- this.outputRecipes=new ArrayList();
- this.enchantments=enchantments;
- this.useOnce=useOnce;
- this.repairs=repairs;
- }
-
- public ProductionRecipe(String title,String recipeName,int productionTime,ItemList repairs)
- {
- this(title,recipeName,productionTime,new ItemList(),new ItemList(),new ItemList(),new ArrayList(),false,repairs);
- }
-
- public boolean hasMaterials(Inventory inventory)
- {
- return inputs.allIn(inventory)&&upgrades.oneIn(inventory)&&repairs.allIn(inventory);
- }
- public void addOutputRecipe(ProductionRecipe outputRecipe)
- {
- this.outputRecipes.add(outputRecipe);
- }
-
- public ItemList getInputs()
- {
- return inputs;
- }
-
- public ItemList getUpgrades()
- {
- return upgrades;
- }
-
- public ItemList