public ItemStack tryPlaceContainedLiquid( World world, ItemStack bucket, int x, int y, int z, int side) { if (world.isRemote) return bucket; CarbonContainer item = (CarbonContainer) bucket.getItem(); int id = bucket.getItemDamage(); if (id != 0) { if (!item.canPlaceInWorld) return bucket; FluidStack liquid = LiquidRegistry.getLiquid(id); if (world.setBlock(x, y, z, liquid.getFluid().getBlock(), 0, 3)) return item.getContainerItem(bucket); return bucket; } if (!item.canBeFilledFromWorld) return bucket; Block block = world.getBlock(x, y, z); if (block instanceof IFluidBlock) { FluidStack liquid = ((IFluidBlock) block).drain(world, x, y, z, false); if (liquid != null && FluidRegistry.isFluidRegistered(liquid.getFluid())) { ItemStack r = FluidContainerRegistry.fillFluidContainer(liquid, bucket); if (r != null && FluidContainerRegistry.isFilledContainer(r)) { ((IFluidBlock) block).drain(world, x, y, z, true); return r; } } } return bucket; }
/** Associates this fluid with the material. Used for melting/casting items. */ public Material setFluid(Fluid fluid) { if (fluid != null && !FluidRegistry.isFluidRegistered(fluid)) { TinkerRegistry.log.warn("Materials cannot have an unregistered fluid associated with them!"); } this.fluid = fluid; return this; }
public FluidLoader(FMLPreInitializationEvent event) { if (FluidRegistry.isFluidRegistered(fluidMercury)) { event .getModLog() .info("Found fluid {}, the registration is canceled. ", fluidMercury.getName()); fluidMercury = FluidRegistry.getFluid(fluidMercury.getName()); } else { FluidRegistry.registerFluid(fluidMercury); } }
@Override public ModelFluid process(ImmutableMap<String, String> customData) { if (!customData.containsKey("fluid")) return this; String fluidStr = customData.get("fluid"); JsonElement e = new JsonParser().parse(fluidStr); String fluid = e.getAsString(); if (!FluidRegistry.isFluidRegistered(fluid)) { FMLLog.severe("fluid '%s' not found", fluid); return WATER; } return new ModelFluid(FluidRegistry.getFluid(fluid)); }
private void loadItems() { registerVariantNames(); int size = 0; ImmutableList<Item> items = ImmutableList.copyOf(GameData.getItemRegistry().typeSafeIterable()); for (Item item : items) { size += getVariantNames(item).size(); } itemBar = ProgressManager.push("ModelLoader: items", size); for (Item item : items) { // default loading for (String s : (List<String>) getVariantNames(item)) { ResourceLocation file = getItemLocation(s); ModelResourceLocation memory = getInventoryVariant(s); itemBar.step(memory.toString()); IModel model = null; try { model = getModel(file); } catch (IOException e) { // Handled by our finally block. } finally { if (model == null || model == getMissingModel()) { FMLLog.fine( "Item json isn't found for '" + memory + "', trying to load the variant from the blockstate json"); try { registerVariant(getModelBlockDefinition(memory), memory); } catch (Exception exception) { FMLLog.getLogger().warn("Unable to load definition " + memory, exception); } } else stateModels.put(memory, model); } } } ProgressManager.pop(itemBar); // replace vanilla bucket models if desired. done afterwards for performance reasons if (ForgeModContainer.replaceVanillaBucketModel) { // ensure the bucket model is loaded if (!stateModels.containsKey(ModelDynBucket.LOCATION)) { // load forges blockstate json for it ModelResourceLocation memory = getInventoryVariant("forge:dynbucket"); registerVariant(getModelBlockDefinition(memory), memory); } // empty bucket for (String s : getVariantNames(Items.bucket)) { ModelResourceLocation memory = getInventoryVariant(s); try { IModel model = getModel(new ResourceLocation("forge", "item/bucket")); // only on successful load, otherwise continue using the old model stateModels.put(memory, model); } catch (IOException e) { // use the original vanilla model } } setBucketModel(Items.water_bucket); setBucketModel(Items.lava_bucket); // milk bucket only replaced if some mod adds milk if (FluidRegistry.isFluidRegistered("milk")) { // can the milk be put into a bucket? Fluid milk = FluidRegistry.getFluid("milk"); FluidStack milkStack = new FluidStack(milk, FluidContainerRegistry.BUCKET_VOLUME); if (FluidContainerRegistry.getContainerCapacity(milkStack, new ItemStack(Items.bucket)) == FluidContainerRegistry.BUCKET_VOLUME) { setBucketModel(Items.milk_bucket); } } else { // milk bucket if no milk fluid is present for (String s : getVariantNames(Items.milk_bucket)) { ModelResourceLocation memory = getInventoryVariant(s); try { IModel model = getModel(new ResourceLocation("forge", "item/bucket_milk")); // only on successful load, otherwise continue using the old model stateModels.put(memory, model); } catch (IOException e) { // use the original vanilla model } } } } }