Add gilded wood
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
package electroblob.wizardry.block;
|
||||
|
||||
import electroblob.wizardry.registry.WizardryTabs;
|
||||
import net.minecraft.block.BlockPlanks;
|
||||
|
||||
public class BlockGildedWood extends BlockPlanks {
|
||||
|
||||
public BlockGildedWood(){
|
||||
super();
|
||||
this.setCreativeTab(WizardryTabs.WIZARDRY);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -5,10 +5,11 @@ import electroblob.wizardry.block.BlockCrystal;
|
||||
import electroblob.wizardry.block.BlockPedestal;
|
||||
import electroblob.wizardry.block.BlockRunestone;
|
||||
import electroblob.wizardry.item.IMultiTexturedItem;
|
||||
import electroblob.wizardry.item.ItemBlockMultiTexturedElemental;
|
||||
import electroblob.wizardry.item.ItemBlockMultiTextured;
|
||||
import electroblob.wizardry.item.ItemCrystal;
|
||||
import electroblob.wizardry.registry.WizardryBlocks;
|
||||
import electroblob.wizardry.registry.WizardryItems;
|
||||
import net.minecraft.block.BlockPlanks;
|
||||
import net.minecraft.client.renderer.block.model.IBakedModel;
|
||||
import net.minecraft.client.renderer.block.model.ModelBakery;
|
||||
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
|
||||
@@ -50,19 +51,24 @@ public final class WizardryModels {
|
||||
ModelLoader.setCustomStateMapper(WizardryBlocks.crystal_block, new StateMap.Builder()
|
||||
.withName(BlockCrystal.ELEMENT).withSuffix("_crystal_block").build());
|
||||
// Yay unchecked casting! But we know it's always ok here, and it makes everything much neater.
|
||||
ItemBlockMultiTexturedElemental crystalBlockItem = (ItemBlockMultiTexturedElemental)Item.getItemFromBlock(WizardryBlocks.crystal_block);
|
||||
ItemBlockMultiTextured crystalBlockItem = (ItemBlockMultiTextured)Item.getItemFromBlock(WizardryBlocks.crystal_block);
|
||||
registerMultiTexturedModel(crystalBlockItem);
|
||||
|
||||
ModelLoader.setCustomStateMapper(WizardryBlocks.runestone, new StateMap.Builder()
|
||||
.withName(BlockRunestone.ELEMENT).withSuffix("_runestone").build());
|
||||
ItemBlockMultiTexturedElemental runestoneItem = (ItemBlockMultiTexturedElemental)Item.getItemFromBlock(WizardryBlocks.runestone);
|
||||
ItemBlockMultiTextured runestoneItem = (ItemBlockMultiTextured)Item.getItemFromBlock(WizardryBlocks.runestone);
|
||||
registerMultiTexturedModel(runestoneItem);
|
||||
|
||||
ModelLoader.setCustomStateMapper(WizardryBlocks.runestone_pedestal, new StateMap.Builder()
|
||||
.withName(BlockPedestal.ELEMENT).ignore(BlockPedestal.NATURAL).withSuffix("_runestone_pedestal").build()); // Don't care about NATURAL property
|
||||
ItemBlockMultiTexturedElemental pedestalItem = (ItemBlockMultiTexturedElemental)Item.getItemFromBlock(WizardryBlocks.runestone_pedestal);
|
||||
ItemBlockMultiTextured pedestalItem = (ItemBlockMultiTextured)Item.getItemFromBlock(WizardryBlocks.runestone_pedestal);
|
||||
registerMultiTexturedModel(pedestalItem);
|
||||
|
||||
ModelLoader.setCustomStateMapper(WizardryBlocks.gilded_wood, new StateMap.Builder()
|
||||
.withName(BlockPlanks.VARIANT).withSuffix("_gilded_wood").build());
|
||||
ItemBlockMultiTextured gildedWoodItem = (ItemBlockMultiTextured)Item.getItemFromBlock(WizardryBlocks.gilded_wood);
|
||||
registerMultiTexturedModel(gildedWoodItem);
|
||||
|
||||
// Items
|
||||
|
||||
registerMultiTexturedModel((ItemCrystal)WizardryItems.magic_crystal);
|
||||
|
||||
@@ -9,7 +9,7 @@ import net.minecraft.util.ResourceLocation;
|
||||
* convenience method {@link electroblob.wizardry.client.model.WizardryModels#registerMultiTexturedModel(Item) WizardryModels.registerMultiTexturedModel(T)}. Also works well for {@code ItemBlock}s!
|
||||
* @author Electroblob
|
||||
* @since Wizardry 4.2
|
||||
* @see ItemBlockMultiTexturedElemental
|
||||
* @see ItemBlockMultiTextured
|
||||
*/
|
||||
public interface IMultiTexturedItem {
|
||||
|
||||
|
||||
+6
-5
@@ -1,32 +1,33 @@
|
||||
package electroblob.wizardry.item;
|
||||
|
||||
import electroblob.wizardry.constants.Element;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.ItemBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class ItemBlockMultiTexturedElemental extends ItemBlock implements IMultiTexturedItem {
|
||||
public class ItemBlockMultiTextured extends ItemBlock implements IMultiTexturedItem {
|
||||
|
||||
private final boolean separateNames;
|
||||
private final String[] prefixes;
|
||||
|
||||
public ItemBlockMultiTexturedElemental(Block block, boolean separateNames){
|
||||
public ItemBlockMultiTextured(Block block, boolean separateNames, String... prefixes){
|
||||
super(block);
|
||||
this.setHasSubtypes(true);
|
||||
this.setMaxDamage(0);
|
||||
this.separateNames = separateNames;
|
||||
this.prefixes = prefixes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getModelName(ItemStack stack){
|
||||
int metadata = stack.getMetadata();
|
||||
if(metadata >= Element.values().length) metadata = 0;
|
||||
if(metadata >= prefixes.length) metadata = 0;
|
||||
return getModelName(metadata);
|
||||
}
|
||||
|
||||
public ResourceLocation getModelName(int metadata){
|
||||
return new ResourceLocation(this.block.getRegistryName().getNamespace(),
|
||||
Element.values()[metadata].getName() + "_" + this.block.getRegistryName().getPath());
|
||||
prefixes[metadata] + "_" + this.block.getRegistryName().getPath());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -4,6 +4,7 @@ import electroblob.wizardry.Wizardry;
|
||||
import electroblob.wizardry.block.*;
|
||||
import electroblob.wizardry.tileentity.*;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockPlanks;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.event.RegistryEvent;
|
||||
@@ -56,6 +57,7 @@ public final class WizardryBlocks {
|
||||
public static final Block thorns = placeholder();
|
||||
public static final Block obsidian_crust = placeholder();
|
||||
public static final Block dry_frosted_ice = placeholder();
|
||||
public static final Block gilded_wood = placeholder();
|
||||
|
||||
/**
|
||||
* Sets both the registry and unlocalised names of the given block, then registers it with the given registry. Use
|
||||
@@ -95,6 +97,7 @@ public final class WizardryBlocks {
|
||||
registerBlock(registry, "thorns", new BlockThorns());
|
||||
registerBlock(registry, "obsidian_crust", new BlockObsidianCrust());
|
||||
registerBlock(registry, "dry_frosted_ice", new BlockDryFrostedIce());
|
||||
registerBlock(registry, "gilded_wood", new BlockPlanks());
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ import electroblob.wizardry.registry.WizardryTabs.CreativeTabListed;
|
||||
import electroblob.wizardry.registry.WizardryTabs.CreativeTabSorted;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockDispenser;
|
||||
import net.minecraft.block.BlockPlanks;
|
||||
import net.minecraft.dispenser.BehaviorProjectileDispense;
|
||||
import net.minecraft.dispenser.IPosition;
|
||||
import net.minecraft.entity.IProjectile;
|
||||
@@ -35,6 +36,7 @@ import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -366,9 +368,9 @@ public final class WizardryItems {
|
||||
}
|
||||
}
|
||||
|
||||
private static void registerMultiTexturedItemBlock(IForgeRegistry<Item> registry, Block block, boolean separateNames){
|
||||
private static void registerMultiTexturedItemBlock(IForgeRegistry<Item> registry, Block block, boolean separateNames, String... prefixes){
|
||||
// We don't need to keep a reference to the ItemBlock
|
||||
Item itemblock = new ItemBlockMultiTexturedElemental(block, separateNames).setRegistryName(block.getRegistryName());
|
||||
Item itemblock = new ItemBlockMultiTextured(block, separateNames, prefixes).setRegistryName(block.getRegistryName());
|
||||
registry.register(itemblock);
|
||||
|
||||
if(block.getCreativeTab() instanceof CreativeTabListed){
|
||||
@@ -389,9 +391,14 @@ public final class WizardryItems {
|
||||
registerItemBlock(registry, WizardryBlocks.crystal_ore);
|
||||
registerItemBlock(registry, WizardryBlocks.crystal_flower);
|
||||
registerItemBlock(registry, WizardryBlocks.transportation_stone);
|
||||
registerMultiTexturedItemBlock(registry, WizardryBlocks.crystal_block, true);
|
||||
registerMultiTexturedItemBlock(registry, WizardryBlocks.runestone, false);
|
||||
registerMultiTexturedItemBlock(registry, WizardryBlocks.runestone_pedestal, false);
|
||||
|
||||
String[] elements = Arrays.stream(Element.values()).map(Element::getName).toArray(String[]::new);
|
||||
String[] woodTypes = Arrays.stream(BlockPlanks.EnumType.values()).map(BlockPlanks.EnumType::getName).toArray(String[]::new);
|
||||
|
||||
registerMultiTexturedItemBlock(registry, WizardryBlocks.crystal_block, true, elements);
|
||||
registerMultiTexturedItemBlock(registry, WizardryBlocks.runestone, false, elements);
|
||||
registerMultiTexturedItemBlock(registry, WizardryBlocks.runestone_pedestal, false, elements);
|
||||
registerMultiTexturedItemBlock(registry, WizardryBlocks.gilded_wood, true, woodTypes);
|
||||
|
||||
// Items
|
||||
|
||||
|
||||
Reference in New Issue
Block a user