Browse Source

more bugfixes, more blocks

1.10
Adrian Siekierka 2 years ago
parent
commit
05a454e517

+ 1
- 0
TODO.md View File

@@ -0,0 +1 @@
* Stained bricks. Requires new blending mode.

+ 21
- 0
src/main/java/pl/asie/ucw/CommandUCWDebug.java View File

@@ -31,6 +31,9 @@ import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;

import javax.annotation.Nullable;
import java.util.*;

public class CommandUCWDebug extends CommandBase {
@Override
public String getName() {
@@ -42,12 +45,30 @@ public class CommandUCWDebug extends CommandBase {
return "no, don't";
}

@Override
public List<String> getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, @Nullable BlockPos targetPos) {
if (args.length == 1) {
Set<String> domains = new HashSet<>();
for (UCWBlockRule rule : UnlimitedChiselWorks.BLOCK_RULES) {
domains.add(rule.fromBlock.getRegistryName().getResourceDomain());
}

return getListOfStringsMatchingLastWord(args, domains.toArray(new String[domains.size()]));
} else {
return Collections.emptyList();
}
}

@Override
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
if (sender instanceof EntityPlayerMP) {
World world = sender.getEntityWorld();
BlockPos pos = sender.getPosition();
for (UCWBlockRule rule : UnlimitedChiselWorks.BLOCK_RULES) {
if (args.length >= 1 && !rule.fromBlock.getRegistryName().toString().toLowerCase().startsWith(args[0].toLowerCase())) {
continue;
}

for (UCWObjectFactory factory : rule.objectFactories.valueCollection()) {
BlockPos.MutableBlockPos posCopy = new BlockPos.MutableBlockPos(pos);
NonNullList<ItemStack> stackList = NonNullList.create();

+ 9
- 3
src/main/java/pl/asie/ucw/UCWBlockRule.java View File

@@ -38,6 +38,12 @@ import java.lang.reflect.Method;
import java.util.*;

public class UCWBlockRule {
public enum BlendMode {
NONE,
BLEND,
PLANK
}

protected final List<IBlockState> from, overlay;
protected final List<IBlockState> through;
protected final List<IBlockState> basedUpon;
@@ -45,7 +51,7 @@ public class UCWBlockRule {
protected final TIntObjectMap<UCWObjectFactory> objectFactories = new TIntObjectHashMap<>();
protected final String prefix;
protected final String group;
protected final boolean blend;
protected final BlendMode mode;
protected final int fromCount;

public UCWBlockRule(JsonObject object) throws Exception {
@@ -64,7 +70,7 @@ public class UCWBlockRule {
overlayBlock = fromBlock;
}

blend = object.has("blend") && object.get("blend").getAsBoolean();
mode = object.has("mode") ? BlendMode.valueOf(object.get("mode").getAsString().toUpperCase()) : BlendMode.NONE;

int fc = 0;
for (IBlockState state : from) {
@@ -80,7 +86,7 @@ public class UCWBlockRule {
for (int i = 0; i < from.size(); i++) {
if (from.get(i) != null) {
IBlockState state = from.get(i);
String s = prefix + i;
String s = prefix + state.getBlock().getMetaFromState(state);

objectFactories.put(i, new UCWObjectFactory(this, state, new ResourceLocation(UnlimitedChiselWorks.MODID, s)));
}

+ 1
- 1
src/main/java/pl/asie/ucw/UCWFakeResourcePack.java View File

@@ -72,7 +72,7 @@ public class UCWFakeResourcePack implements IResourcePack, IResourceManagerReloa
String s = element.getAsString();
if (s != null && s.startsWith(str[1] + ":")) {
String ns = "ucw_generated:ucw_ucw_" + str[0] + "/" + s.replaceFirst(":", "/");
System.out.println(s + " -> " + ns);
// System.out.println(s + " -> " + ns);
return new JsonPrimitive(ns);
} else {
return element;

+ 42
- 5
src/main/java/pl/asie/ucw/UCWMagic.java View File

@@ -58,7 +58,7 @@ public final class UCWMagic {
}
}

System.out.println(state);
// System.out.println(state);
return model.getTextures().iterator().next();
}

@@ -160,7 +160,7 @@ public final class UCWMagic {
return contrast;
}

public static int[] transform(TextureAtlasSprite sprite, int frame, TextureAtlasSprite from, TextureAtlasSprite overlay, TextureAtlasSprite basedUpon, boolean blend) {
public static int[] transform(TextureAtlasSprite sprite, int frame, TextureAtlasSprite from, TextureAtlasSprite overlay, TextureAtlasSprite basedUpon, UCWBlockRule.BlendMode mode) {
int[] texture = sprite.getFrameTextureData(frame)[0];
int width = sprite.getIconWidth();
int height = sprite.getIconHeight();
@@ -179,6 +179,33 @@ public final class UCWMagic {
avgHueFrom = Math.atan2(avgHueFromS, avgHueFromC) / 2.0f / Math.PI;
avgSatFrom /= from.getIconWidth() * from.getIconHeight();

double[] hueRange = new double[4];
double[] satRange = new double[2];
int[] srdiv = new int[2];

if (mode == UCWBlockRule.BlendMode.PLANK) {
for (int i : from.getFrameTextureData(0)[0]) {
float[] hd = toHSL(i);
double normV = (double) (hd[2] - contrastFrom[0]) / contrastFrom[1];
hueRange[0] += Math.sin(hd[0] * 2 * Math.PI) * (1 - normV);
hueRange[1] += Math.sin(hd[0] * 2 * Math.PI) * normV;
hueRange[2] += Math.cos(hd[0] * 2 * Math.PI) * (1 - normV);
hueRange[3] += Math.cos(hd[0] * 2 * Math.PI) * normV;
if (normV < 0.5) {
satRange[0] += hd[1];
srdiv[0]++;
} else {
satRange[1] += hd[1];
srdiv[1]++;
}
}

hueRange[0] = Math.atan2(hueRange[0], hueRange[2]) / 2.0f / Math.PI;
hueRange[1] = Math.atan2(hueRange[1], hueRange[3]) / 2.0f / Math.PI;
satRange[0] /= srdiv[0];
satRange[1] /= srdiv[1];
}

int[] texData = new int[texture.length];
for (int iy = 0; iy < height; iy++) {
for (int ix = 0; ix < width; ix++) {
@@ -188,12 +215,22 @@ public final class UCWMagic {

float[] hsbTex = toHSL(it);
float[] hsbBu = toHSL(ibu);
if (blend || (hsbBu[2] < 0.1 && hsbBu[1] < 0.1 && avgSatFrom >= 0.3)) {
double normV = (double) (hsbTex[2] - contrastBasedUpon[0]) / contrastBasedUpon[1];
float v = (float) ((normV * contrastFrom[1]) + contrastFrom[0]);

if (mode == UCWBlockRule.BlendMode.BLEND || (hsbBu[2] < 0.1 && hsbBu[1] < 0.1 && avgSatFrom >= 0.3)) {
hsbBu[0] = (float) avgHueFrom;
hsbBu[1] = (float) avgSatFrom;
} else if (mode == UCWBlockRule.BlendMode.PLANK) {
double nv2 = normV;
if (nv2 < 0) nv2 = 0;
if (nv2 > 1) nv2 = 1;
hsbBu[0] = (float) (Math.atan2(
(Math.sin(hueRange[1] * 2 * Math.PI) * nv2) + (Math.sin(hueRange[0] * 2 * Math.PI) * (1 - nv2)),
(Math.cos(hueRange[1] * 2 * Math.PI) * nv2) + (Math.cos(hueRange[0] * 2 * Math.PI) * (1 - nv2))
) / 2.0f / Math.PI);
hsbBu[1] = (float) ((satRange[1] * nv2) + (satRange[0] * (1 - nv2)));
}
double normV = (double) (hsbTex[2] - contrastBasedUpon[0]) / contrastBasedUpon[1];
float v = (float) ((normV * contrastFrom[1]) + contrastFrom[0]);

if (v < 0) v = 0;
if (v > 1) v = 1;

+ 8
- 3
src/main/java/pl/asie/ucw/UCWObjectFactory.java View File

@@ -180,11 +180,16 @@ public class UCWObjectFactory {

@Override
public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> items) {
Item fromItem = getItemThrough();
Item origItem = getItemThrough();
NonNullList<ItemStack> proxyList = NonNullList.create();
fromItem.getSubItems(tab, proxyList);
origItem.getSubItems(tab, proxyList);
for (ItemStack stack : proxyList) {
if (stack.getItem() == fromItem) {
if (stack.getItem() == origItem) {
// FIXME: Dirt#9 doesn't really work well :-(
if (rule.throughBlock.getRegistryName().toString().equals("chisel:dirt") && stack.getItemDamage() == 9) {
continue;
}

items.add(UCWMagic.copyChangeItem(stack, this));
}
}

+ 1
- 1
src/main/java/pl/asie/ucw/UCWProxyClient.java View File

@@ -134,7 +134,7 @@ public class UCWProxyClient extends UCWProxyCommon {
clearFramesTextureData();
for (int i = 0; i < locationTex.getFrameCount(); i++) {
int[][] pixels = new int[Minecraft.getMinecraft().gameSettings.mipmapLevels + 1][];
pixels[0] = UCWMagic.transform(locationTex, i, fromTex, overlayTex, basedUponTex, rule.blend);
pixels[0] = UCWMagic.transform(locationTex, i, fromTex, overlayTex, basedUponTex, rule.mode);
framesTextureData.add(pixels);
}


+ 43
- 6
src/main/java/pl/asie/ucw/UnlimitedChiselWorks.java View File

@@ -24,6 +24,8 @@ import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import gnu.trove.map.TObjectIntMap;
import gnu.trove.map.hash.TObjectIntHashMap;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
@@ -32,6 +34,9 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.JsonUtils;
import net.minecraft.util.NonNullList;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.config.ConfigCategory;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.common.config.Property;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.Mod;
@@ -58,9 +63,14 @@ public class UnlimitedChiselWorks {
public static final String MODID = "unlimitedchiselworks";
public static final String VERSION = "${version}";
public static final Set<UCWBlockRule> BLOCK_RULES = new LinkedHashSet<>();
public static final TObjectIntMap<Block> RULE_COMBINATIONS = new TObjectIntHashMap<>();
public static final Set<UCWGroupRule> GROUP_RULES = new LinkedHashSet<>();
protected static final Gson GSON = new Gson();
private static Logger LOGGER;
private static Configuration CONFIG;
private static ConfigCategory C_ENABLED;

private boolean enableDebugFeatures;

@SidedProxy(clientSide = "pl.asie.ucw.UCWProxyClient", serverSide = "pl.asie.ucw.UCWProxyCommon")
private static UCWProxyCommon proxy;
@@ -85,10 +95,18 @@ public class UnlimitedChiselWorks {
try {
UCWBlockRule rule = new UCWBlockRule(element.getAsJsonObject());
if (rule.isValid()) {
if (BLOCK_RULES.contains(rule)) {
LOGGER.warn("Duplicate rule found! " + rule);
} else {
BLOCK_RULES.add(rule);
String fbName = rule.fromBlock.getRegistryName().toString();
if (!C_ENABLED.containsKey(fbName)) {
Property prop = new Property(fbName, "true", Property.Type.BOOLEAN);
C_ENABLED.put(fbName, prop);
}

if (C_ENABLED.get(fbName).getBoolean()) {
if (BLOCK_RULES.contains(rule)) {
LOGGER.warn("Duplicate rule found! " + rule);
} else {
BLOCK_RULES.add(rule);
}
}
}
} catch (Exception e) {
@@ -148,15 +166,24 @@ public class UnlimitedChiselWorks {
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
LOGGER = LogManager.getLogger(MODID);
CONFIG = new Configuration(event.getSuggestedConfigurationFile());

MinecraftForge.EVENT_BUS.register(this);
MinecraftForge.EVENT_BUS.register(proxy);
proxy.preInit();

C_ENABLED = CONFIG.getCategory("enabled");
enableDebugFeatures = CONFIG.getBoolean("enableDebugFeatures", "general", false, "Whether or not to enable debug functionality.");
}

@SubscribeEvent(priority = EventPriority.LOW)
public void registerBlocks(RegistryEvent.Register<Block> event) {
findRules();

if (CONFIG.hasChanged()) {
CONFIG.save();
}

for (UCWBlockRule rule : BLOCK_RULES) {
rule.registerBlocks(event.getRegistry());
}
@@ -171,12 +198,16 @@ public class UnlimitedChiselWorks {

@EventHandler
public void init(FMLInitializationEvent event) {
for (UCWBlockRule rule : BLOCK_RULES) {
RULE_COMBINATIONS.adjustOrPutValue(rule.fromBlock, rule.fromCount, rule.fromCount);
}

for (UCWBlockRule rule : BLOCK_RULES) {
for (int i = 0; i < rule.from.size(); i++) {
IBlockState fromState = rule.from.get(i);
if (fromState == null) continue;

String groupName = rule.fromCount == 1 ? rule.group : rule.group + "_" + i;
String groupName = RULE_COMBINATIONS.get(rule.fromBlock) == 1 ? rule.group : rule.group + "_" + fromState.getBlock().getMetaFromState(fromState);
UCWCompatUtils.addChiselVariation(groupName, new ItemStack(fromState.getBlock(), 1, fromState.getBlock().damageDropped(fromState)));

UCWObjectFactory factory = rule.objectFactories.get(i);
@@ -195,6 +226,10 @@ public class UnlimitedChiselWorks {
UCWCompatUtils.addChiselVariation(rule.groupName, new ItemStack(state.getBlock(), 1, state.getBlock().damageDropped(state)));
}
}

if (CONFIG.hasChanged()) {
CONFIG.save();
}
}

@EventHandler
@@ -214,6 +249,8 @@ public class UnlimitedChiselWorks {

@EventHandler
public void onServerStarting(FMLServerStartingEvent event) {
event.registerServerCommand(new CommandUCWDebug());
if (enableDebugFeatures) {
event.registerServerCommand(new CommandUCWDebug());
}
}
}

+ 97
- 0
src/main/resources/assets/unlimitedchiselworks/ucwdefs/betterwithaddons.json View File

@@ -0,0 +1,97 @@
{
"blocks": [
{
"from": {
"state": "betterwithaddons:whitebrick#variant=default"
},
"overlay": {
"state": "betterwithmods:aesthetic#blocktype=whitestone"
},
"through": {
"block": "chisel:stonebrick",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:stonebrick#variant=stonebrick"
}
},
{
"from": {
"state": "betterwithaddons:whitebrick#variant=default"
},
"overlay": {
"state": "betterwithmods:aesthetic#blocktype=whitestone"
},
"through": {
"block": "chisel:stonebrick1",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:stonebrick#variant=stonebrick"
}
},
{
"from": {
"state": "betterwithaddons:whitebrick#variant=default"
},
"overlay": {
"state": "betterwithmods:aesthetic#blocktype=whitestone"
},
"through": {
"block": "chisel:stonebrick2",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:stonebrick#variant=stonebrick"
}
},
{
"from": {
"block": "betterwithmods:aesthetic#blocktype=whitecobble"
},
"through": {
"block": "chisel:cobblestone",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:cobblestone"
}
},
{
"from": {
"block": "betterwithmods:aesthetic#blocktype=whitecobble"
},
"through": {
"block": "chisel:cobblestone1",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:cobblestone"
}
},
{
"from": {
"block": "betterwithmods:aesthetic#blocktype=whitecobble"
},
"through": {
"block": "chisel:cobblestone2",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:cobblestone"
}
}
]
}

+ 174
- 0
src/main/resources/assets/unlimitedchiselworks/ucwdefs/botania.json View File

@@ -246,6 +246,180 @@
"based_upon": {
"state": "minecraft:quartz_block#variant=default"
}
},
{
"from": {
"state": [
"botania:biomestoneb#variant=forest",
"botania:biomestoneb#variant=plains",
"botania:biomestoneb#variant=mountain",
"botania:biomestoneb#variant=fungal",
"botania:biomestoneb#variant=swamp",
"botania:biomestoneb#variant=desert",
"botania:biomestoneb#variant=taiga",
"botania:biomestoneb#variant=mesa"
]
},
"overlay": {
"state": [
"botania:biomestonea#variant=forest",
"botania:biomestonea#variant=plains",
"botania:biomestonea#variant=mountain",
"botania:biomestonea#variant=fungal",
"botania:biomestonea#variant=swamp",
"botania:biomestonea#variant=desert",
"botania:biomestonea#variant=taiga",
"botania:biomestonea#variant=mesa"
]
},
"through": {
"block": "chisel:stonebrick",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:stonebrick#variant=stonebrick"
}
},
{
"from": {
"state": [
"botania:biomestoneb#variant=forest",
"botania:biomestoneb#variant=plains",
"botania:biomestoneb#variant=mountain",
"botania:biomestoneb#variant=fungal",
"botania:biomestoneb#variant=swamp",
"botania:biomestoneb#variant=desert",
"botania:biomestoneb#variant=taiga",
"botania:biomestoneb#variant=mesa"
]
},
"overlay": {
"state": [
"botania:biomestonea#variant=forest",
"botania:biomestonea#variant=plains",
"botania:biomestonea#variant=mountain",
"botania:biomestonea#variant=fungal",
"botania:biomestonea#variant=swamp",
"botania:biomestonea#variant=desert",
"botania:biomestonea#variant=taiga",
"botania:biomestonea#variant=mesa"
]
},
"through": {
"block": "chisel:stonebrick1",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:stonebrick#variant=stonebrick"
}
},
{
"from": {
"state": [
"botania:biomestoneb#variant=forest",
"botania:biomestoneb#variant=plains",
"botania:biomestoneb#variant=mountain",
"botania:biomestoneb#variant=fungal",
"botania:biomestoneb#variant=swamp",
"botania:biomestoneb#variant=desert",
"botania:biomestoneb#variant=taiga",
"botania:biomestoneb#variant=mesa"
]
},
"overlay": {
"state": [
"botania:biomestonea#variant=forest",
"botania:biomestonea#variant=plains",
"botania:biomestonea#variant=mountain",
"botania:biomestonea#variant=fungal",
"botania:biomestonea#variant=swamp",
"botania:biomestonea#variant=desert",
"botania:biomestonea#variant=taiga",
"botania:biomestonea#variant=mesa"
]
},
"through": {
"block": "chisel:stonebrick2",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:stonebrick#variant=stonebrick"
}
},
{
"from": {
"state": [
"botania:biomestonea#variant=forest_cobble",
"botania:biomestonea#variant=plains_cobble",
"botania:biomestonea#variant=mountain_cobble",
"botania:biomestonea#variant=fungal_cobble",
"botania:biomestonea#variant=swamp_cobble",
"botania:biomestonea#variant=desert_cobble",
"botania:biomestonea#variant=taiga_cobble",
"botania:biomestonea#variant=mesa_cobble"
]
},
"through": {
"block": "chisel:cobblestone",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:cobblestone"
}
},
{
"from": {
"state": [
"botania:biomestonea#variant=forest_cobble",
"botania:biomestonea#variant=plains_cobble",
"botania:biomestonea#variant=mountain_cobble",
"botania:biomestonea#variant=fungal_cobble",
"botania:biomestonea#variant=swamp_cobble",
"botania:biomestonea#variant=desert_cobble",
"botania:biomestonea#variant=taiga_cobble",
"botania:biomestonea#variant=mesa_cobble"
]
},
"through": {
"block": "chisel:cobblestone1",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:cobblestone"
}
},
{
"from": {
"state": [
"botania:biomestonea#variant=forest_cobble",
"botania:biomestonea#variant=plains_cobble",
"botania:biomestonea#variant=mountain_cobble",
"botania:biomestonea#variant=fungal_cobble",
"botania:biomestonea#variant=swamp_cobble",
"botania:biomestonea#variant=desert_cobble",
"botania:biomestonea#variant=taiga_cobble",
"botania:biomestonea#variant=mesa_cobble"
]
},
"through": {
"block": "chisel:cobblestone2",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:cobblestone"
}
}
]
}

+ 6
- 6
src/main/resources/assets/unlimitedchiselworks/ucwdefs/extratrees.json View File

@@ -7,7 +7,7 @@
"variant"
]
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -25,7 +25,7 @@
"variant"
]
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -43,7 +43,7 @@
"variant"
]
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -61,7 +61,7 @@
"variant"
]
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -79,7 +79,7 @@
"variant"
]
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -97,7 +97,7 @@
"variant"
]
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [

+ 4
- 4
src/main/resources/assets/unlimitedchiselworks/ucwdefs/forestry.json View File

@@ -7,7 +7,7 @@
"variant"
]
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -25,7 +25,7 @@
"variant"
]
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -43,7 +43,7 @@
"variant"
]
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -61,7 +61,7 @@
"variant"
]
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [

+ 111
- 0
src/main/resources/assets/unlimitedchiselworks/ucwdefs/futurepack.json View File

@@ -0,0 +1,111 @@
{
"blocks": [
{
"from": {
"state": "fp:dirt#metadata=0"
},
"through": {
"block": "chisel:dirt",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:dirt#snowy=false,variant=dirt"
}
},
{
"from": {
"state": "fp:stone#variant=brick"
},
"overlay": {
"state": "fp:stone#variant=stone"
},
"through": {
"block": "chisel:stonebrick",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:stonebrick#variant=stonebrick"
}
},
{
"from": {
"state": "fp:stone#variant=brick"
},
"overlay": {
"state": "fp:stone#variant=stone"
},
"through": {
"block": "chisel:stonebrick1",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:stonebrick#variant=stonebrick"
}
},
{
"from": {
"state": "fp:stone#variant=brick"
},
"overlay": {
"state": "fp:stone#variant=stone"
},
"through": {
"block": "chisel:stonebrick2",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:stonebrick#variant=stonebrick"
}
},
{
"from": {
"state": "fp:stone#variant=sandstone"
},
"through": {
"block": "chisel:sandstoneyellow",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:sandstone#type=sandstone"
}
},
{
"from": {
"state": "fp:stone#variant=sandstone"
},
"through": {
"block": "chisel:sandstoneyellow1",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:sandstone#type=sandstone"
}
},
{
"from": {
"state": "fp:stone#variant=sandstone"
},
"through": {
"block": "chisel:sandstoneyellow2",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:sandstone#type=sandstone"
}
}
]
}

+ 7
- 6
src/main/resources/assets/unlimitedchiselworks/ucwdefs/integrateddynamics.json View File

@@ -4,6 +4,7 @@
"from": {
"block": "integrateddynamics:menril_planks"
},
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -21,7 +22,7 @@
"overlay": {
"state": "integrateddynamics:crystalized_chorus_block"
},
"blend": true,
"mode": "blend",
"through": {
"block": "chisel:stonebrick",
"iterate": [
@@ -39,7 +40,7 @@
"overlay": {
"state": "integrateddynamics:crystalized_chorus_block"
},
"blend": true,
"mode": "blend",
"through": {
"block": "chisel:stonebrick1",
"iterate": [
@@ -57,7 +58,7 @@
"overlay": {
"state": "integrateddynamics:crystalized_chorus_block"
},
"blend": true,
"mode": "blend",
"through": {
"block": "chisel:stonebrick2",
"iterate": [
@@ -75,7 +76,7 @@
"overlay": {
"state": "integrateddynamics:crystalized_menril_block"
},
"blend": true,
"mode": "blend",
"through": {
"block": "chisel:stonebrick",
"iterate": [
@@ -93,7 +94,7 @@
"overlay": {
"state": "integrateddynamics:crystalized_menril_block"
},
"blend": true,
"mode": "blend",
"through": {
"block": "chisel:stonebrick1",
"iterate": [
@@ -111,7 +112,7 @@
"overlay": {
"state": "integrateddynamics:crystalized_menril_block"
},
"blend": true,
"mode": "blend",
"through": {
"block": "chisel:stonebrick2",
"iterate": [

+ 2
- 2
src/main/resources/assets/unlimitedchiselworks/ucwdefs/natura.json View File

@@ -7,7 +7,7 @@
"type"
]
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -25,7 +25,7 @@
"type"
]
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [

+ 1
- 1
src/main/resources/assets/unlimitedchiselworks/ucwdefs/quark.json View File

@@ -7,7 +7,7 @@
"variant"
]
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [

+ 55
- 0
src/main/resources/assets/unlimitedchiselworks/ucwdefs/roots.json View File

@@ -0,0 +1,55 @@
{
"blocks": [
{
"from": {
"state": "roots:runestone_brick"
},
"overlay": {
"state": "roots:runestone"
},
"through": {
"block": "chisel:stonebrick",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:stonebrick#variant=stonebrick"
}
},
{
"from": {
"state": "roots:runestone_brick"
},
"overlay": {
"state": "roots:runestone"
},
"through": {
"block": "chisel:stonebrick1",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:stonebrick#variant=stonebrick"
}
},
{
"from": {
"state": "roots:runestone_brick"
},
"overlay": {
"state": "roots:runestone"
},
"through": {
"block": "chisel:stonebrick2",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:stonebrick#variant=stonebrick"
}
}
]
}

+ 16
- 16
src/main/resources/assets/unlimitedchiselworks/ucwdefs/rustic.json View File

@@ -72,7 +72,7 @@
"from": {
"state": "rustic:painted_wood_white"
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -87,7 +87,7 @@
"from": {
"state": "rustic:painted_wood_orange"
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -102,7 +102,7 @@
"from": {
"state": "rustic:painted_wood_magenta"
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -117,7 +117,7 @@
"from": {
"state": "rustic:painted_wood_light_blue"
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -132,7 +132,7 @@
"from": {
"state": "rustic:painted_wood_yellow"
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -147,7 +147,7 @@
"from": {
"state": "rustic:painted_wood_lime"
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -162,7 +162,7 @@
"from": {
"state": "rustic:painted_wood_pink"
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -177,7 +177,7 @@
"from": {
"state": "rustic:painted_wood_gray"
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -192,7 +192,7 @@
"from": {
"state": "rustic:painted_wood_silver"
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -207,7 +207,7 @@
"from": {
"state": "rustic:painted_wood_cyan"
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -222,7 +222,7 @@
"from": {
"state": "rustic:painted_wood_purple"
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -237,7 +237,7 @@
"from": {
"state": "rustic:painted_wood_blue"
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -252,7 +252,7 @@
"from": {
"state": "rustic:painted_wood_brown"
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -267,7 +267,7 @@
"from": {
"state": "rustic:painted_wood_green"
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -282,7 +282,7 @@
"from": {
"state": "rustic:painted_wood_red"
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
@@ -297,7 +297,7 @@
"from": {
"state": "rustic:painted_wood_black"
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [

+ 1
- 1
src/main/resources/assets/unlimitedchiselworks/ucwdefs/techreborn.json View File

@@ -4,7 +4,7 @@
"from": {
"state": "techreborn:rubber_planks"
},
"blend": true,
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [

+ 70
- 0
src/main/resources/assets/unlimitedchiselworks/ucwdefs/wizardry.json View File

@@ -0,0 +1,70 @@
{
"blocks": [
{
"from": {
"block": "wizardry:nacre_block_brick"
},
"overlay": {
"block": "wizardry:nacre_block"
},
"through": {
"block": "chisel:stonebrick",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:stonebrick#variant=stonebrick"
}
},
{
"from": {
"block": "wizardry:nacre_block_brick"
},
"overlay": {
"block": "wizardry:nacre_block"
},
"through": {
"block": "chisel:stonebrick1",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:stonebrick#variant=stonebrick"
}
},
{
"from": {
"block": "wizardry:nacre_block_brick"
},
"overlay": {
"block": "wizardry:nacre_block"
},
"through": {
"block": "chisel:stonebrick2",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:stonebrick#variant=stonebrick"
}
},
{
"from": {
"state": "wizardry:wisdom_wood_planks"
},
"mode": "plank",
"through": {
"block": "chisel:planks-oak",
"iterate": [
"variation"
]
},
"based_upon": {
"state": "minecraft:planks#variant=oak"
}
}
]
}

Loading…
Cancel
Save