Removed color provider

This commit is contained in:
paulevsGitch 2021-07-10 16:25:34 +03:00
parent 2c8862a37b
commit 4040597a6d
475 changed files with 5411 additions and 7521 deletions

View file

@ -1,157 +1,164 @@
class ModelPart { class ModelPart {
static java.util.ArrayList<ModelPart> parts = new java.util.ArrayList<>(20); static java.util.ArrayList<ModelPart> parts = new java.util.ArrayList<>(20);
final String name; final String name;
ModelPart parent = null; ModelPart parent = null;
boolean mirror = false; boolean mirror = false;
float x=0, y=0, z=0, rx=0, ry=0, rz=0; float x = 0, y = 0, z = 0, rx = 0, ry = 0, rz = 0;
int u=0, v=0; int u = 0, v = 0;
float bx=0,by=0,bz=0,ba=0,bb=0,bc=0; float bx = 0, by = 0, bz = 0, ba = 0, bb = 0, bc = 0;
float scale = 1; float scale = 1;
static int wd = 64; static int wd = 64;
static int hg = 32; static int hg = 32;
boolean hadBox = false; boolean hadBox = false;
ModelPart(Convert c, String name){
this(c, 0, 0, name);
} ModelPart(Convert c, String name) {
this(c, 0, 0, name);
ModelPart(Convert c, int u, int v, String name){ }
this.name = name;
this.u = u;
this.v = v;
parts.add(this);
}
ModelPart(int wd, int hg, int u, int v, String name){ ModelPart(Convert c, int u, int v, String name) {
this.name = name; this.name = name;
this.u = u; this.u = u;
this.v = v; this.v = v;
ModelPart.wd = wd; parts.add(this);
ModelPart.hg = hg; }
parts.add(this);
}
ModelPart setPos(float x, float y, float z){ ModelPart(int wd, int hg, int u, int v, String name) {
this.x=x; this.name = name;
this.y=y; this.u = u;
this.z=z; this.v = v;
return this; ModelPart.wd = wd;
} ModelPart.hg = hg;
parts.add(this);
}
ModelPart setRotationAngle(float x, float y, float z){ ModelPart setPos(float x, float y, float z) {
this.rx=x; this.x = x;
this.ry=y; this.y = y;
this.rz=z; this.z = z;
return this; return this;
} }
ModelPart addChild(ModelPart p){ ModelPart setRotationAngle(float x, float y, float z) {
p.parent = this; this.rx = x;
return this; this.ry = y;
} this.rz = z;
return this;
}
ModelPart texOffs(int u, int v){ ModelPart addChild(ModelPart p) {
this.u=u; p.parent = this;
this.v=v; return this;
return this; }
}
ModelPart addBox(float x, float y, float z, float a, float b, float c){
return addBox(x, y, z, a, b, c, 1);
}
ModelPart addBox(float x, float y, float z, float a, float b, float c, float _d){ ModelPart texOffs(int u, int v) {
bx=x; this.u = u;
by=y; this.v = v;
bz=z; return this;
ba=a; }
bb=b;
bc=c;
scale = _d;
hadBox = true;
return this;
}
ModelPart addBox(float x, float y, float z, float a, float b, float c, float _d, boolean mirror){
this.mirror = mirror;
bx=x;
by=y;
bz=z;
ba=a;
bb=b;
bc=c;
hadBox = true;
return this;
}
public String toString(){ ModelPart addBox(float x, float y, float z, float a, float b, float c) {
String s = ""; return addBox(x, y, z, a, b, c, 1);
String pName = parent==null?"modelPartData":parent.name; }
if (scale!=1){
s += "CubeDeformation deformation_"+name+" = new CubeDeformation("+scale+"f);\n";
}
s += "PartDefinition " + name + " = ";
s += pName+".addOrReplaceChild(\""+name+"\", CubeListBuilder.create()\n";
if (this.mirror) s+= ".mirror()\n";
s+= ".texOffs("+u+", "+v+")";
if (this.hadBox) {
s+= "\n";
if (scale!=1)
s+= ".addBox("+bx+"f, "+by+"f, "+bz+"f, "+ba+"f, "+bb+"f, "+bc+"f, deformation_"+name+"),\n";
else
s+= ".addBox("+bx+"f, "+by+"f, "+bz+"f, "+ba+"f, "+bb+"f, "+bc+"f),\n";
} else {
s+= ",\n";
}
if (x==0 && y==0 && z==0 && rx==0 && ry==0 && rz==0){ ModelPart addBox(float x, float y, float z, float a, float b, float c, float _d) {
s+= "PartPose.ZERO"; bx = x;
} else if (rx==0 && ry==0 && rz==0){ by = y;
s+= "PartPose.offset("+x+"f, "+y+"f, "+z+"f)"; bz = z;
} else { ba = a;
s+= "PartPose.offsetAndRotation("+x+"f, "+y+"f, "+z+"f, \n"+rx+"f, "+ry+"f, "+rz+"f)"; bb = b;
} bc = c;
s +=");"; scale = _d;
hadBox = true;
return this;
}
return s; ModelPart addBox(float x, float y, float z, float a, float b, float c, float _d, boolean mirror) {
} this.mirror = mirror;
bx = x;
by = y;
bz = z;
ba = a;
bb = b;
bc = c;
hadBox = true;
return this;
}
public static void print(){ public String toString() {
System.out.println("public static LayerDefinition getTexturedModelData() {"); String s = "";
System.out.println(" MeshDefinition modelData = new MeshDefinition();"); String pName = parent == null ? "modelPartData" : parent.name;
System.out.println(" PartDefinition modelPartData = modelData.getRoot();"); if (scale != 1) {
for(ModelPart p : parts){ s += "CubeDeformation deformation_" + name + " = new CubeDeformation(" + scale + "f);\n";
System.out.println(p); }
System.out.println(); s += "PartDefinition " + name + " = ";
} s += pName + ".addOrReplaceChild(\"" + name + "\", CubeListBuilder.create()\n";
System.out.println("return LayerDefinition.create(modelData, "+wd+", "+hg+");"); if (this.mirror) s += ".mirror()\n";
System.out.println("}"); s += ".texOffs(" + u + ", " + v + ")";
if (this.hadBox) {
s += "\n";
if (scale != 1)
s += ".addBox(" + bx + "f, " + by + "f, " + bz + "f, " + ba + "f, " + bb + "f, " + bc + "f, deformation_" + name + "),\n";
else s += ".addBox(" + bx + "f, " + by + "f, " + bz + "f, " + ba + "f, " + bb + "f, " + bc + "f),\n";
}
else {
s += ",\n";
}
System.out.println(); if (x == 0 && y == 0 && z == 0 && rx == 0 && ry == 0 && rz == 0) {
System.out.println(); s += "PartPose.ZERO";
}
else if (rx == 0 && ry == 0 && rz == 0) {
s += "PartPose.offset(" + x + "f, " + y + "f, " + z + "f)";
}
else {
s += "PartPose.offsetAndRotation(" + x + "f, " + y + "f, " + z + "f, \n" + rx + "f, " + ry + "f, " + rz + "f)";
}
s += ");";
for(ModelPart p : parts){ return s;
String pName = p.parent==null?"modelPart":p.parent.name; }
System.out.println(p.name +" = "+pName+".getChild(\""+p.name+"\");");
} public static void print() {
} System.out.println("public static LayerDefinition getTexturedModelData() {");
System.out.println(" MeshDefinition modelData = new MeshDefinition();");
System.out.println(" PartDefinition modelPartData = modelData.getRoot();");
for (ModelPart p : parts) {
System.out.println(p);
System.out.println();
}
System.out.println("return LayerDefinition.create(modelData, " + wd + ", " + hg + ");");
System.out.println("}");
System.out.println();
System.out.println();
for (ModelPart p : parts) {
String pName = p.parent == null ? "modelPart" : p.parent.name;
System.out.println(p.name + " = " + pName + ".getChild(\"" + p.name + "\");");
}
}
} }
public class Convert {
public static void main(String[] args){
new Convert().c();
ModelPart.print(); public class Convert {
} public static void main(String[] args) {
void setRotationAngle(ModelPart p, float x, float y, float z){ new Convert().c();
p.setRotationAngle(x, y, z);
} ModelPart.print();
public void c (){ }
float scale = 1;
ModelPart partC = new ModelPart(64, 64, 0, 19, "partC"); void setRotationAngle(ModelPart p, float x, float y, float z) {
p.setRotationAngle(x, y, z);
}
public void c() {
float scale = 1;
ModelPart partC = new ModelPart(64, 64, 0, 19, "partC");
partC.addBox(1.0F, 0.0F, 1.0F, 14.0F, 9.0F, 14.0F, 0.0F); partC.addBox(1.0F, 0.0F, 1.0F, 14.0F, 9.0F, 14.0F, 0.0F);
ModelPart partA = new ModelPart(64, 64, 0, 0,"partA"); ModelPart partA = new ModelPart(64, 64, 0, 0, "partA");
partA.addBox(1.0F, 0.0F, 0.0F, 14.0F, 5.0F, 14.0F, 0.0F); partA.addBox(1.0F, 0.0F, 0.0F, 14.0F, 5.0F, 14.0F, 0.0F);
partA.y = 9.0F; partA.y = 9.0F;
partA.z = 1.0F; partA.z = 1.0F;
@ -176,5 +183,5 @@ public class Convert {
ModelPart partLeftB = new ModelPart(64, 64, 0, 0, "partLeftB"); ModelPart partLeftB = new ModelPart(64, 64, 0, 0, "partLeftB");
partLeftB.addBox(0.0F, -1.0F, 15.0F, 1.0F, 4.0F, 1.0F, 0.0F); partLeftB.addBox(0.0F, -1.0F, 15.0F, 1.0F, 4.0F, 1.0F, 0.0F);
partLeftB.y = 8.0F; partLeftB.y = 8.0F;
} }
} }

View file

@ -1,14 +1,18 @@
[![](https://jitpack.io/v/paulevsGitch/BetterEnd.svg)](https://jitpack.io/#paulevsGitch/BetterEnd) [![](https://jitpack.io/v/paulevsGitch/BetterEnd.svg)](https://jitpack.io/#paulevsGitch/BetterEnd)
# Better End # Better End
Better End Mod for Fabric, MC 1.17.1 Better End Mod for Fabric, MC 1.17.1
Importing: Importing:
* Clone repo * Clone repo
* Edit gradle.properties if necessary * Edit gradle.properties if necessary
* Run command line in folder: gradlew genSources eclipse (or Another-IDE-Name) * Run command line in folder: gradlew genSources eclipse (or Another-IDE-Name)
* Import project to IDE * Import project to IDE
Building: Building:
* Clone repo * Clone repo
* Run command line in folder: gradlew build * Run command line in folder: gradlew build
* Mod .jar will be in ./build/libs * Mod .jar will be in ./build/libs

View file

@ -1,14 +1,14 @@
buildscript { buildscript {
dependencies { dependencies {
classpath 'org.kohsuke:github-api:1.114' classpath 'org.kohsuke:github-api:1.114'
} }
} }
plugins { plugins {
id 'idea' id 'idea'
id 'eclipse' id 'eclipse'
id 'fabric-loom' version '0.8-SNAPSHOT' id 'fabric-loom' version '0.8-SNAPSHOT'
id 'maven-publish' id 'maven-publish'
} }
sourceCompatibility = JavaVersion.VERSION_16 sourceCompatibility = JavaVersion.VERSION_16
@ -20,101 +20,101 @@ group = project.maven_group
repositories { repositories {
maven { url "https://maven.dblsaiko.net/" } maven { url "https://maven.dblsaiko.net/" }
maven { url "https://maven.fabricmc.net/" } maven { url "https://maven.fabricmc.net/" }
maven { url 'https://maven.blamejared.com' } maven { url 'https://maven.blamejared.com' }
maven { url "https://maven.shedaniel.me/" } maven { url "https://maven.shedaniel.me/" }
maven { url 'https://jitpack.io' } maven { url 'https://jitpack.io' }
} }
dependencies { dependencies {
minecraft "com.mojang:minecraft:${project.minecraft_version}" minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings minecraft.officialMojangMappings() mappings minecraft.officialMojangMappings()
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
useApi "vazkii.patchouli:Patchouli:1.17-${project.patchouli_version}" useApi "vazkii.patchouli:Patchouli:1.17-${project.patchouli_version}"
useApi "com.github.paulevsGitch:BCLib:${project.bclib_version}" useApi "com.github.paulevsGitch:BCLib:${project.bclib_version}"
useOptional "me.shedaniel:RoughlyEnoughItems-fabric:${project.rei_version}" useOptional "me.shedaniel:RoughlyEnoughItems-fabric:${project.rei_version}"
useOptional "me.shedaniel:RoughlyEnoughItems-api-fabric:${project.rei_version}" useOptional "me.shedaniel:RoughlyEnoughItems-api-fabric:${project.rei_version}"
//useOptional "grondag:canvas-mc116:${project.canvas_version}" //useOptional "grondag:canvas-mc116:${project.canvas_version}"
} }
def useOptional(String dep) { def useOptional(String dep) {
dependencies.modRuntime (dep) { dependencies.modRuntime(dep) {
exclude group: 'net.fabricmc.fabric-api' exclude group: 'net.fabricmc.fabric-api'
exclude group: 'net.fabricmc' exclude group: 'net.fabricmc'
if (!dep.contains("me.shedaniel")) { if (!dep.contains("me.shedaniel")) {
exclude group: 'me.shedaniel.cloth' exclude group: 'me.shedaniel.cloth'
exclude group: 'me.shedaniel' exclude group: 'me.shedaniel'
} }
} }
dependencies.modCompileOnly (dep) { dependencies.modCompileOnly(dep) {
exclude group: 'net.fabricmc.fabric-api' exclude group: 'net.fabricmc.fabric-api'
exclude group: 'net.fabricmc' exclude group: 'net.fabricmc'
if (!dep.contains("me.shedaniel")) { if (!dep.contains("me.shedaniel")) {
exclude group: 'me.shedaniel.cloth' exclude group: 'me.shedaniel.cloth'
exclude group: 'me.shedaniel' exclude group: 'me.shedaniel'
} }
} }
} }
def useApi(String dep) { def useApi(String dep) {
dependencies.modApi (dep) { dependencies.modApi(dep) {
exclude group: 'net.fabricmc.fabric-api' exclude group: 'net.fabricmc.fabric-api'
exclude group: 'net.fabricmc' exclude group: 'net.fabricmc'
if (!dep.contains("me.shedaniel")) { if (!dep.contains("me.shedaniel")) {
exclude group: 'me.shedaniel.cloth' exclude group: 'me.shedaniel.cloth'
exclude group: 'me.shedaniel' exclude group: 'me.shedaniel'
} }
} }
} }
processResources { processResources {
inputs.property "version", project.version inputs.property "version", project.version
duplicatesStrategy = 'WARN' duplicatesStrategy = 'WARN'
from(sourceSets.main.resources.srcDirs) { from(sourceSets.main.resources.srcDirs) {
include "fabric.mod.json" include "fabric.mod.json"
expand "version": project.version expand "version": project.version
} }
from(sourceSets.main.resources.srcDirs) { from(sourceSets.main.resources.srcDirs) {
exclude "fabric.mod.json" exclude "fabric.mod.json"
} }
} }
// ensure that the encoding is set to UTF-8, no matter what the system default is // ensure that the encoding is set to UTF-8, no matter what the system default is
// this fixes some edge cases with special characters not displaying correctly // this fixes some edge cases with special characters not displaying correctly
// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
tasks.withType(JavaCompile) { tasks.withType(JavaCompile) {
options.encoding = "UTF-8" options.encoding = "UTF-8"
} }
javadoc { javadoc {
options.tags = ["reason"] options.tags = ["reason"]
} }
task javadocJar(type: Jar, dependsOn: javadoc) { task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc' classifier = 'javadoc'
from javadoc.destinationDir from javadoc.destinationDir
} }
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
// if it is present. // if it is present.
// If you remove this task, sources will not be generated. // If you remove this task, sources will not be generated.
task sourcesJar(type: Jar, dependsOn: classes) { task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources' classifier = 'sources'
from sourceSets.main.allSource from sourceSets.main.allSource
} }
jar { jar {
from "LICENSE" from "LICENSE"
} }
artifacts { artifacts {
archives sourcesJar archives sourcesJar
archives javadocJar archives javadocJar
} }
def env = System.getenv() def env = System.getenv()
@ -123,24 +123,24 @@ import org.kohsuke.github.GHReleaseBuilder
import org.kohsuke.github.GitHub import org.kohsuke.github.GitHub
task release(dependsOn: [remapJar, sourcesJar, javadocJar]) { task release(dependsOn: [remapJar, sourcesJar, javadocJar]) {
onlyIf { onlyIf {
env.GITHUB_TOKEN env.GITHUB_TOKEN
} }
doLast { doLast {
def github = GitHub.connectUsingOAuth(env.GITHUB_TOKEN as String) def github = GitHub.connectUsingOAuth(env.GITHUB_TOKEN as String)
def repository = github.getRepository("paulevsGitch/BetterEnd") def repository = github.getRepository("paulevsGitch/BetterEnd")
def releaseBuilder = new GHReleaseBuilder(repository, version as String) def releaseBuilder = new GHReleaseBuilder(repository, version as String)
releaseBuilder.name("${archivesBaseName}-${version}") releaseBuilder.name("${archivesBaseName}-${version}")
releaseBuilder.body("A changelog can be found at https://github.com/paulevsGitch/BetterEnd/commits") releaseBuilder.body("A changelog can be found at https://github.com/paulevsGitch/BetterEnd/commits")
releaseBuilder.commitish("master") releaseBuilder.commitish("master")
def ghRelease = releaseBuilder.create() def ghRelease = releaseBuilder.create()
ghRelease.uploadAsset(file("${project.buildDir}/libs/${archivesBaseName}-${version}.jar"), "application/java-archive"); ghRelease.uploadAsset(file("${project.buildDir}/libs/${archivesBaseName}-${version}.jar"), "application/java-archive");
ghRelease.uploadAsset(file("${project.buildDir}/libs/${archivesBaseName}-${version}-sources.jar"), "application/java-archive"); ghRelease.uploadAsset(file("${project.buildDir}/libs/${archivesBaseName}-${version}-sources.jar"), "application/java-archive");
ghRelease.uploadAsset(file("${project.buildDir}/libs/${archivesBaseName}-${version}-javadoc.jar"), "application/java-archive"); ghRelease.uploadAsset(file("${project.buildDir}/libs/${archivesBaseName}-${version}-javadoc.jar"), "application/java-archive");
} }
} }
// configure the maven publication // configure the maven publication

View file

@ -1,21 +1,18 @@
# Done to increase the memory available to gradle. # Done to increase the memory available to gradle.
org.gradle.jvmargs=-Xmx2G org.gradle.jvmargs=-Xmx2G
# Fabric Properties # Fabric Properties
# check these on https://fabricmc.net/use # check these on https://fabricmc.net/use
minecraft_version= 1.17.1 minecraft_version=1.17.1
yarn_mappings= 6 yarn_mappings=6
loader_version= 0.11.6 loader_version=0.11.6
# Mod Properties # Mod Properties
mod_version = 0.10.2-pre mod_version=0.10.3-pre
maven_group = ru.betterend maven_group=ru.betterend
archives_base_name = better-end archives_base_name=better-end
# Dependencies # Dependencies
# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api
patchouli_version = 55-FABRIC-SNAPSHOT patchouli_version=55-FABRIC-SNAPSHOT
fabric_version = 0.36.1+1.17 fabric_version=0.36.1+1.17
bclib_version = 0.2.0 bclib_version=0.2.1
rei_version = 6.0.262-alpha rei_version=6.0.262-alpha
canvas_version = 1.0.+ canvas_version=1.0.+

View file

@ -1,6 +1,6 @@
{ {
"parent": "block/cube_all", "parent": "block/cube_all",
"textures": { "textures": {
"all": "betterend:block/%name%" "all": "betterend:block/%name%"
} }
} }

View file

@ -1,8 +1,8 @@
{ {
"parent": "block/slab", "parent": "block/slab",
"textures": { "textures": {
"bottom": "betterend:block/%name%_bricks", "bottom": "betterend:block/%name%_bricks",
"side": "betterend:block/%name%_bricks", "side": "betterend:block/%name%_bricks",
"top": "betterend:block/%name%_bricks" "top": "betterend:block/%name%_bricks"
} }
} }

View file

@ -1,8 +1,8 @@
{ {
"parent": "block/inner_stairs", "parent": "block/inner_stairs",
"textures": { "textures": {
"bottom": "betterend:block/%name%_bricks", "bottom": "betterend:block/%name%_bricks",
"side": "betterend:block/%name%_bricks", "side": "betterend:block/%name%_bricks",
"top": "betterend:block/%name%_bricks" "top": "betterend:block/%name%_bricks"
} }
} }

View file

@ -1,8 +1,8 @@
{ {
"parent": "block/outer_stairs", "parent": "block/outer_stairs",
"textures": { "textures": {
"bottom": "betterend:block/%name%_bricks", "bottom": "betterend:block/%name%_bricks",
"side": "betterend:block/%name%_bricks", "side": "betterend:block/%name%_bricks",
"top": "betterend:block/%name%_bricks" "top": "betterend:block/%name%_bricks"
} }
} }

View file

@ -1,8 +1,8 @@
{ {
"parent": "block/stairs", "parent": "block/stairs",
"textures": { "textures": {
"bottom": "betterend:block/%name%_bricks", "bottom": "betterend:block/%name%_bricks",
"side": "betterend:block/%name%_bricks", "side": "betterend:block/%name%_bricks",
"top": "betterend:block/%name%_bricks" "top": "betterend:block/%name%_bricks"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"parent": "minecraft:block/wall_inventory", "parent": "minecraft:block/wall_inventory",
"textures": { "textures": {
"wall": "betterend:block/%name%_bricks" "wall": "betterend:block/%name%_bricks"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"parent": "minecraft:block/template_wall_post", "parent": "minecraft:block/template_wall_post",
"textures": { "textures": {
"wall": "betterend:block/%name%_bricks" "wall": "betterend:block/%name%_bricks"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"parent": "minecraft:block/template_wall_side", "parent": "minecraft:block/template_wall_side",
"textures": { "textures": {
"wall": "betterend:block/%name%_bricks" "wall": "betterend:block/%name%_bricks"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"parent": "minecraft:block/template_wall_side_tall", "parent": "minecraft:block/template_wall_side_tall",
"textures": { "textures": {
"wall": "betterend:block/%name%_bricks" "wall": "betterend:block/%name%_bricks"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"parent": "block/cube_all", "parent": "block/cube_all",
"textures": { "textures": {
"all": "betterend:block/%name%_bricks" "all": "betterend:block/%name%_bricks"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"parent": "block/button", "parent": "block/button",
"textures": { "textures": {
"texture": "betterend:block/%name%" "texture": "betterend:block/%name%"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"parent": "block/button_inventory", "parent": "block/button_inventory",
"textures": { "textures": {
"texture": "betterend:block/%name%" "texture": "betterend:block/%name%"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"parent": "block/button_pressed", "parent": "block/button_pressed",
"textures": { "textures": {
"texture": "betterend:block/%name%" "texture": "betterend:block/%name%"
} }
} }

View file

@ -1,8 +1,8 @@
{ {
"parent": "block/slab", "parent": "block/slab",
"textures": { "textures": {
"bottom": "betterend:block/%name%", "bottom": "betterend:block/%name%",
"side": "betterend:block/%name%", "side": "betterend:block/%name%",
"top": "betterend:block/%name%" "top": "betterend:block/%name%"
} }
} }

View file

@ -1,8 +1,8 @@
{ {
"parent": "block/inner_stairs", "parent": "block/inner_stairs",
"textures": { "textures": {
"bottom": "betterend:block/%name%", "bottom": "betterend:block/%name%",
"side": "betterend:block/%name%", "side": "betterend:block/%name%",
"top": "betterend:block/%name%" "top": "betterend:block/%name%"
} }
} }

View file

@ -1,8 +1,8 @@
{ {
"parent": "block/outer_stairs", "parent": "block/outer_stairs",
"textures": { "textures": {
"bottom": "betterend:block/%name%", "bottom": "betterend:block/%name%",
"side": "betterend:block/%name%", "side": "betterend:block/%name%",
"top": "betterend:block/%name%" "top": "betterend:block/%name%"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"parent": "block/pressure_plate_down", "parent": "block/pressure_plate_down",
"textures": { "textures": {
"texture": "betterend:block/%name%" "texture": "betterend:block/%name%"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"parent": "block/pressure_plate_up", "parent": "block/pressure_plate_up",
"textures": { "textures": {
"texture": "betterend:block/%name%" "texture": "betterend:block/%name%"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"parent": "block/cube_all", "parent": "block/cube_all",
"textures": { "textures": {
"all": "betterend:block/%name%_small_tiles" "all": "betterend:block/%name%_small_tiles"
} }
} }

View file

@ -1,8 +1,8 @@
{ {
"parent": "block/stairs", "parent": "block/stairs",
"textures": { "textures": {
"bottom": "betterend:block/%name%", "bottom": "betterend:block/%name%",
"side": "betterend:block/%name%", "side": "betterend:block/%name%",
"top": "betterend:block/%name%" "top": "betterend:block/%name%"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"parent": "block/cube_all", "parent": "block/cube_all",
"textures": { "textures": {
"all": "betterend:block/%name%_tile" "all": "betterend:block/%name%_tile"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"parent": "minecraft:block/wall_inventory", "parent": "minecraft:block/wall_inventory",
"textures": { "textures": {
"wall": "betterend:block/%name%" "wall": "betterend:block/%name%"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"parent": "minecraft:block/template_wall_post", "parent": "minecraft:block/template_wall_post",
"textures": { "textures": {
"wall": "betterend:block/%name%" "wall": "betterend:block/%name%"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"parent": "minecraft:block/template_wall_side", "parent": "minecraft:block/template_wall_side",
"textures": { "textures": {
"wall": "betterend:block/%name%" "wall": "betterend:block/%name%"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"parent": "minecraft:block/template_wall_side_tall", "parent": "minecraft:block/template_wall_side_tall",
"textures": { "textures": {
"wall": "betterend:block/%name%" "wall": "betterend:block/%name%"
} }
} }

View file

@ -1,7 +1,7 @@
{ {
"variants": { "variants": {
"": { "": {
"model": "betterend:block/%name%" "model": "betterend:block/%name%"
} }
} }
} }

View file

@ -1,15 +1,15 @@
{ {
"variants": { "variants": {
"type=bottom": { "type=bottom": {
"model": "betterend:block/%name%_brick_half_slab" "model": "betterend:block/%name%_brick_half_slab"
}, },
"type=double": { "type=double": {
"model": "betterend:block/%name%_bricks" "model": "betterend:block/%name%_bricks"
}, },
"type=top": { "type=top": {
"model": "betterend:block/%name%_brick_half_slab", "model": "betterend:block/%name%_brick_half_slab",
"uvlock": true, "uvlock": true,
"x": 180 "x": 180
} }
} }
} }

View file

@ -1,209 +1,209 @@
{ {
"variants": { "variants": {
"facing=east,half=bottom,shape=inner_left": { "facing=east,half=bottom,shape=inner_left": {
"model": "betterend:block/%name%_brick_inner_stairs", "model": "betterend:block/%name%_brick_inner_stairs",
"uvlock": true, "uvlock": true,
"y": 270 "y": 270
}, },
"facing=east,half=bottom,shape=inner_right": { "facing=east,half=bottom,shape=inner_right": {
"model": "betterend:block/%name%_brick_inner_stairs" "model": "betterend:block/%name%_brick_inner_stairs"
}, },
"facing=east,half=bottom,shape=outer_left": { "facing=east,half=bottom,shape=outer_left": {
"model": "betterend:block/%name%_brick_outer_stairs", "model": "betterend:block/%name%_brick_outer_stairs",
"uvlock": true, "uvlock": true,
"y": 270 "y": 270
}, },
"facing=east,half=bottom,shape=outer_right": { "facing=east,half=bottom,shape=outer_right": {
"model": "betterend:block/%name%_brick_outer_stairs" "model": "betterend:block/%name%_brick_outer_stairs"
}, },
"facing=east,half=bottom,shape=straight": { "facing=east,half=bottom,shape=straight": {
"model": "betterend:block/%name%_brick_stairs" "model": "betterend:block/%name%_brick_stairs"
}, },
"facing=east,half=top,shape=inner_left": { "facing=east,half=top,shape=inner_left": {
"model": "betterend:block/%name%_brick_inner_stairs", "model": "betterend:block/%name%_brick_inner_stairs",
"uvlock": true, "uvlock": true,
"x": 180 "x": 180
}, },
"facing=east,half=top,shape=inner_right": { "facing=east,half=top,shape=inner_right": {
"model": "betterend:block/%name%_brick_inner_stairs", "model": "betterend:block/%name%_brick_inner_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 90 "y": 90
}, },
"facing=east,half=top,shape=outer_left": { "facing=east,half=top,shape=outer_left": {
"model": "betterend:block/%name%_brick_outer_stairs", "model": "betterend:block/%name%_brick_outer_stairs",
"uvlock": true, "uvlock": true,
"x": 180 "x": 180
}, },
"facing=east,half=top,shape=outer_right": { "facing=east,half=top,shape=outer_right": {
"model": "betterend:block/%name%_brick_outer_stairs", "model": "betterend:block/%name%_brick_outer_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 90 "y": 90
}, },
"facing=east,half=top,shape=straight": { "facing=east,half=top,shape=straight": {
"model": "betterend:block/%name%_brick_stairs", "model": "betterend:block/%name%_brick_stairs",
"uvlock": true, "uvlock": true,
"x": 180 "x": 180
}, },
"facing=north,half=bottom,shape=inner_left": { "facing=north,half=bottom,shape=inner_left": {
"model": "betterend:block/%name%_brick_inner_stairs", "model": "betterend:block/%name%_brick_inner_stairs",
"uvlock": true, "uvlock": true,
"y": 180 "y": 180
}, },
"facing=north,half=bottom,shape=inner_right": { "facing=north,half=bottom,shape=inner_right": {
"model": "betterend:block/%name%_brick_inner_stairs", "model": "betterend:block/%name%_brick_inner_stairs",
"uvlock": true, "uvlock": true,
"y": 270 "y": 270
}, },
"facing=north,half=bottom,shape=outer_left": { "facing=north,half=bottom,shape=outer_left": {
"model": "betterend:block/%name%_brick_outer_stairs", "model": "betterend:block/%name%_brick_outer_stairs",
"uvlock": true, "uvlock": true,
"y": 180 "y": 180
}, },
"facing=north,half=bottom,shape=outer_right": { "facing=north,half=bottom,shape=outer_right": {
"model": "betterend:block/%name%_brick_outer_stairs", "model": "betterend:block/%name%_brick_outer_stairs",
"uvlock": true, "uvlock": true,
"y": 270 "y": 270
}, },
"facing=north,half=bottom,shape=straight": { "facing=north,half=bottom,shape=straight": {
"model": "betterend:block/%name%_brick_stairs", "model": "betterend:block/%name%_brick_stairs",
"uvlock": true, "uvlock": true,
"y": 270 "y": 270
}, },
"facing=north,half=top,shape=inner_left": { "facing=north,half=top,shape=inner_left": {
"model": "betterend:block/%name%_brick_inner_stairs", "model": "betterend:block/%name%_brick_inner_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 270 "y": 270
}, },
"facing=north,half=top,shape=inner_right": { "facing=north,half=top,shape=inner_right": {
"model": "betterend:block/%name%_brick_inner_stairs", "model": "betterend:block/%name%_brick_inner_stairs",
"uvlock": true, "uvlock": true,
"x": 180 "x": 180
}, },
"facing=north,half=top,shape=outer_left": { "facing=north,half=top,shape=outer_left": {
"model": "betterend:block/%name%_brick_outer_stairs", "model": "betterend:block/%name%_brick_outer_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 270 "y": 270
}, },
"facing=north,half=top,shape=outer_right": { "facing=north,half=top,shape=outer_right": {
"model": "betterend:block/%name%_brick_outer_stairs", "model": "betterend:block/%name%_brick_outer_stairs",
"uvlock": true, "uvlock": true,
"x": 180 "x": 180
}, },
"facing=north,half=top,shape=straight": { "facing=north,half=top,shape=straight": {
"model": "betterend:block/%name%_brick_stairs", "model": "betterend:block/%name%_brick_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 270 "y": 270
}, },
"facing=south,half=bottom,shape=inner_left": { "facing=south,half=bottom,shape=inner_left": {
"model": "betterend:block/%name%_brick_inner_stairs" "model": "betterend:block/%name%_brick_inner_stairs"
}, },
"facing=south,half=bottom,shape=inner_right": { "facing=south,half=bottom,shape=inner_right": {
"model": "betterend:block/%name%_brick_inner_stairs", "model": "betterend:block/%name%_brick_inner_stairs",
"uvlock": true, "uvlock": true,
"y": 90 "y": 90
}, },
"facing=south,half=bottom,shape=outer_left": { "facing=south,half=bottom,shape=outer_left": {
"model": "betterend:block/%name%_brick_outer_stairs" "model": "betterend:block/%name%_brick_outer_stairs"
}, },
"facing=south,half=bottom,shape=outer_right": { "facing=south,half=bottom,shape=outer_right": {
"model": "betterend:block/%name%_brick_outer_stairs", "model": "betterend:block/%name%_brick_outer_stairs",
"uvlock": true, "uvlock": true,
"y": 90 "y": 90
}, },
"facing=south,half=bottom,shape=straight": { "facing=south,half=bottom,shape=straight": {
"model": "betterend:block/%name%_brick_stairs", "model": "betterend:block/%name%_brick_stairs",
"uvlock": true, "uvlock": true,
"y": 90 "y": 90
}, },
"facing=south,half=top,shape=inner_left": { "facing=south,half=top,shape=inner_left": {
"model": "betterend:block/%name%_brick_inner_stairs", "model": "betterend:block/%name%_brick_inner_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 90 "y": 90
}, },
"facing=south,half=top,shape=inner_right": { "facing=south,half=top,shape=inner_right": {
"model": "betterend:block/%name%_brick_inner_stairs", "model": "betterend:block/%name%_brick_inner_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 180 "y": 180
}, },
"facing=south,half=top,shape=outer_left": { "facing=south,half=top,shape=outer_left": {
"model": "betterend:block/%name%_brick_outer_stairs", "model": "betterend:block/%name%_brick_outer_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 90 "y": 90
}, },
"facing=south,half=top,shape=outer_right": { "facing=south,half=top,shape=outer_right": {
"model": "betterend:block/%name%_brick_outer_stairs", "model": "betterend:block/%name%_brick_outer_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 180 "y": 180
}, },
"facing=south,half=top,shape=straight": { "facing=south,half=top,shape=straight": {
"model": "betterend:block/%name%_brick_stairs", "model": "betterend:block/%name%_brick_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 90 "y": 90
}, },
"facing=west,half=bottom,shape=inner_left": { "facing=west,half=bottom,shape=inner_left": {
"model": "betterend:block/%name%_brick_inner_stairs", "model": "betterend:block/%name%_brick_inner_stairs",
"uvlock": true, "uvlock": true,
"y": 90 "y": 90
}, },
"facing=west,half=bottom,shape=inner_right": { "facing=west,half=bottom,shape=inner_right": {
"model": "betterend:block/%name%_brick_inner_stairs", "model": "betterend:block/%name%_brick_inner_stairs",
"uvlock": true, "uvlock": true,
"y": 180 "y": 180
}, },
"facing=west,half=bottom,shape=outer_left": { "facing=west,half=bottom,shape=outer_left": {
"model": "betterend:block/%name%_brick_outer_stairs", "model": "betterend:block/%name%_brick_outer_stairs",
"uvlock": true, "uvlock": true,
"y": 90 "y": 90
}, },
"facing=west,half=bottom,shape=outer_right": { "facing=west,half=bottom,shape=outer_right": {
"model": "betterend:block/%name%_brick_outer_stairs", "model": "betterend:block/%name%_brick_outer_stairs",
"uvlock": true, "uvlock": true,
"y": 180 "y": 180
}, },
"facing=west,half=bottom,shape=straight": { "facing=west,half=bottom,shape=straight": {
"model": "betterend:block/%name%_brick_stairs", "model": "betterend:block/%name%_brick_stairs",
"uvlock": true, "uvlock": true,
"y": 180 "y": 180
}, },
"facing=west,half=top,shape=inner_left": { "facing=west,half=top,shape=inner_left": {
"model": "betterend:block/%name%_brick_inner_stairs", "model": "betterend:block/%name%_brick_inner_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 180 "y": 180
}, },
"facing=west,half=top,shape=inner_right": { "facing=west,half=top,shape=inner_right": {
"model": "betterend:block/%name%_brick_inner_stairs", "model": "betterend:block/%name%_brick_inner_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 270 "y": 270
}, },
"facing=west,half=top,shape=outer_left": { "facing=west,half=top,shape=outer_left": {
"model": "betterend:block/%name%_brick_outer_stairs", "model": "betterend:block/%name%_brick_outer_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 180 "y": 180
}, },
"facing=west,half=top,shape=outer_right": { "facing=west,half=top,shape=outer_right": {
"model": "betterend:block/%name%_brick_outer_stairs", "model": "betterend:block/%name%_brick_outer_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 270 "y": 270
}, },
"facing=west,half=top,shape=straight": { "facing=west,half=top,shape=straight": {
"model": "betterend:block/%name%_brick_stairs", "model": "betterend:block/%name%_brick_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 180 "y": 180
} }
} }
} }

View file

@ -1,90 +1,90 @@
{ {
"multipart": [ "multipart": [
{ {
"when": { "when": {
"up": "true" "up": "true"
}, },
"apply": { "apply": {
"model": "betterend:block/%name%_brick_wall_post" "model": "betterend:block/%name%_brick_wall_post"
} }
}, },
{ {
"when": { "when": {
"north": "low" "north": "low"
}, },
"apply": { "apply": {
"model": "betterend:block/%name%_brick_wall_side", "model": "betterend:block/%name%_brick_wall_side",
"uvlock": true "uvlock": true
} }
}, },
{ {
"when": { "when": {
"east": "low" "east": "low"
}, },
"apply": { "apply": {
"model": "betterend:block/%name%_brick_wall_side", "model": "betterend:block/%name%_brick_wall_side",
"y": 90, "y": 90,
"uvlock": true "uvlock": true
} }
}, },
{ {
"when": { "when": {
"south": "low" "south": "low"
}, },
"apply": { "apply": {
"model": "betterend:block/%name%_brick_wall_side", "model": "betterend:block/%name%_brick_wall_side",
"y": 180, "y": 180,
"uvlock": true "uvlock": true
} }
}, },
{ {
"when": { "when": {
"west": "low" "west": "low"
}, },
"apply": { "apply": {
"model": "betterend:block/%name%_brick_wall_side", "model": "betterend:block/%name%_brick_wall_side",
"y": 270, "y": 270,
"uvlock": true "uvlock": true
} }
}, },
{ {
"when": { "when": {
"north": "tall" "north": "tall"
}, },
"apply": { "apply": {
"model": "betterend:block/%name%_brick_wall_side_tall", "model": "betterend:block/%name%_brick_wall_side_tall",
"uvlock": true "uvlock": true
} }
}, },
{ {
"when": { "when": {
"east": "tall" "east": "tall"
}, },
"apply": { "apply": {
"model": "betterend:block/%name%_brick_wall_side_tall", "model": "betterend:block/%name%_brick_wall_side_tall",
"y": 90, "y": 90,
"uvlock": true "uvlock": true
} }
}, },
{ {
"when": { "when": {
"south": "tall" "south": "tall"
}, },
"apply": { "apply": {
"model": "betterend:block/%name%_brick_wall_side_tall", "model": "betterend:block/%name%_brick_wall_side_tall",
"y": 180, "y": 180,
"uvlock": true "uvlock": true
} }
}, },
{ {
"when": { "when": {
"west": "tall" "west": "tall"
}, },
"apply": { "apply": {
"model": "betterend:block/%name%_brick_wall_side_tall", "model": "betterend:block/%name%_brick_wall_side_tall",
"y": 270, "y": 270,
"uvlock": true "uvlock": true
} }
} }
] ]
} }

View file

@ -1,7 +1,7 @@
{ {
"variants": { "variants": {
"": { "": {
"model": "betterend:block/%name%_bricks" "model": "betterend:block/%name%_bricks"
} }
} }
} }

View file

@ -1,118 +1,118 @@
{ {
"variants": { "variants": {
"face=ceiling,facing=east,powered=false": { "face=ceiling,facing=east,powered=false": {
"model": "betterend:block/%name%_button", "model": "betterend:block/%name%_button",
"x": 180, "x": 180,
"y": 270 "y": 270
}, },
"face=ceiling,facing=east,powered=true": { "face=ceiling,facing=east,powered=true": {
"model": "betterend:block/%name%_button_pressed", "model": "betterend:block/%name%_button_pressed",
"x": 180, "x": 180,
"y": 270 "y": 270
}, },
"face=ceiling,facing=north,powered=false": { "face=ceiling,facing=north,powered=false": {
"model": "betterend:block/%name%_button", "model": "betterend:block/%name%_button",
"x": 180, "x": 180,
"y": 180 "y": 180
}, },
"face=ceiling,facing=north,powered=true": { "face=ceiling,facing=north,powered=true": {
"model": "betterend:block/%name%_button_pressed", "model": "betterend:block/%name%_button_pressed",
"x": 180, "x": 180,
"y": 180 "y": 180
}, },
"face=ceiling,facing=south,powered=false": { "face=ceiling,facing=south,powered=false": {
"model": "betterend:block/%name%_button", "model": "betterend:block/%name%_button",
"x": 180 "x": 180
}, },
"face=ceiling,facing=south,powered=true": { "face=ceiling,facing=south,powered=true": {
"model": "betterend:block/%name%_button_pressed", "model": "betterend:block/%name%_button_pressed",
"x": 180 "x": 180
}, },
"face=ceiling,facing=west,powered=false": { "face=ceiling,facing=west,powered=false": {
"model": "betterend:block/%name%_button", "model": "betterend:block/%name%_button",
"x": 180, "x": 180,
"y": 90 "y": 90
}, },
"face=ceiling,facing=west,powered=true": { "face=ceiling,facing=west,powered=true": {
"model": "betterend:block/%name%_button_pressed", "model": "betterend:block/%name%_button_pressed",
"x": 180, "x": 180,
"y": 90 "y": 90
}, },
"face=floor,facing=east,powered=false": { "face=floor,facing=east,powered=false": {
"model": "betterend:block/%name%_button", "model": "betterend:block/%name%_button",
"y": 90 "y": 90
}, },
"face=floor,facing=east,powered=true": { "face=floor,facing=east,powered=true": {
"model": "betterend:block/%name%_button_pressed", "model": "betterend:block/%name%_button_pressed",
"y": 90 "y": 90
}, },
"face=floor,facing=north,powered=false": { "face=floor,facing=north,powered=false": {
"model": "betterend:block/%name%_button" "model": "betterend:block/%name%_button"
}, },
"face=floor,facing=north,powered=true": { "face=floor,facing=north,powered=true": {
"model": "betterend:block/%name%_button_pressed" "model": "betterend:block/%name%_button_pressed"
}, },
"face=floor,facing=south,powered=false": { "face=floor,facing=south,powered=false": {
"model": "betterend:block/%name%_button", "model": "betterend:block/%name%_button",
"y": 180 "y": 180
}, },
"face=floor,facing=south,powered=true": { "face=floor,facing=south,powered=true": {
"model": "betterend:block/%name%_button_pressed", "model": "betterend:block/%name%_button_pressed",
"y": 180 "y": 180
}, },
"face=floor,facing=west,powered=false": { "face=floor,facing=west,powered=false": {
"model": "betterend:block/%name%_button", "model": "betterend:block/%name%_button",
"y": 270 "y": 270
}, },
"face=floor,facing=west,powered=true": { "face=floor,facing=west,powered=true": {
"model": "betterend:block/%name%_button_pressed", "model": "betterend:block/%name%_button_pressed",
"y": 270 "y": 270
}, },
"face=wall,facing=east,powered=false": { "face=wall,facing=east,powered=false": {
"model": "betterend:block/%name%_button", "model": "betterend:block/%name%_button",
"uvlock": true, "uvlock": true,
"x": 90, "x": 90,
"y": 90 "y": 90
}, },
"face=wall,facing=east,powered=true": { "face=wall,facing=east,powered=true": {
"model": "betterend:block/%name%_button_pressed", "model": "betterend:block/%name%_button_pressed",
"uvlock": true, "uvlock": true,
"x": 90, "x": 90,
"y": 90 "y": 90
}, },
"face=wall,facing=north,powered=false": { "face=wall,facing=north,powered=false": {
"model": "betterend:block/%name%_button", "model": "betterend:block/%name%_button",
"uvlock": true, "uvlock": true,
"x": 90 "x": 90
}, },
"face=wall,facing=north,powered=true": { "face=wall,facing=north,powered=true": {
"model": "betterend:block/%name%_button_pressed", "model": "betterend:block/%name%_button_pressed",
"uvlock": true, "uvlock": true,
"x": 90 "x": 90
}, },
"face=wall,facing=south,powered=false": { "face=wall,facing=south,powered=false": {
"model": "betterend:block/%name%_button", "model": "betterend:block/%name%_button",
"uvlock": true, "uvlock": true,
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"face=wall,facing=south,powered=true": { "face=wall,facing=south,powered=true": {
"model": "betterend:block/%name%_button_pressed", "model": "betterend:block/%name%_button_pressed",
"uvlock": true, "uvlock": true,
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"face=wall,facing=west,powered=false": { "face=wall,facing=west,powered=false": {
"model": "betterend:block/%name%_button", "model": "betterend:block/%name%_button",
"uvlock": true, "uvlock": true,
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"face=wall,facing=west,powered=true": { "face=wall,facing=west,powered=true": {
"model": "betterend:block/%name%_button_pressed", "model": "betterend:block/%name%_button_pressed",
"uvlock": true, "uvlock": true,
"x": 90, "x": 90,
"y": 270 "y": 270
} }
} }
} }

View file

@ -1,7 +1,16 @@
{ {
"variants": { "variants": {
"axis=x": { "model": "betterend:block/%name%_pillar", "x": 90, "y": 90 }, "axis=x": {
"axis=y": { "model": "betterend:block/%name%_pillar" }, "model": "betterend:block/%name%_pillar",
"axis=z": { "model": "betterend:block/%name%_pillar", "x": 90 } "x": 90,
} "y": 90
},
"axis=y": {
"model": "betterend:block/%name%_pillar"
},
"axis=z": {
"model": "betterend:block/%name%_pillar",
"x": 90
}
}
} }

View file

@ -1,10 +1,10 @@
{ {
"variants": { "variants": {
"powered=false": { "powered=false": {
"model": "betterend:block/%name%_pressure_plate_up" "model": "betterend:block/%name%_pressure_plate_up"
}, },
"powered=true": { "powered=true": {
"model": "betterend:block/%name%_pressure_plate_down" "model": "betterend:block/%name%_pressure_plate_down"
} }
} }
} }

View file

@ -1,15 +1,15 @@
{ {
"variants": { "variants": {
"type=bottom": { "type=bottom": {
"model": "betterend:block/%name%_half_slab" "model": "betterend:block/%name%_half_slab"
}, },
"type=double": { "type=double": {
"model": "betterend:block/%name%" "model": "betterend:block/%name%"
}, },
"type=top": { "type=top": {
"model": "betterend:block/%name%_half_slab", "model": "betterend:block/%name%_half_slab",
"uvlock": true, "uvlock": true,
"x": 180 "x": 180
} }
} }
} }

View file

@ -1,7 +1,7 @@
{ {
"variants": { "variants": {
"": { "": {
"model": "betterend:block/%name%_small_tiles" "model": "betterend:block/%name%_small_tiles"
} }
} }
} }

View file

@ -1,209 +1,209 @@
{ {
"variants": { "variants": {
"facing=east,half=bottom,shape=inner_left": { "facing=east,half=bottom,shape=inner_left": {
"model": "betterend:block/%name%_inner_stairs", "model": "betterend:block/%name%_inner_stairs",
"uvlock": true, "uvlock": true,
"y": 270 "y": 270
}, },
"facing=east,half=bottom,shape=inner_right": { "facing=east,half=bottom,shape=inner_right": {
"model": "betterend:block/%name%_inner_stairs" "model": "betterend:block/%name%_inner_stairs"
}, },
"facing=east,half=bottom,shape=outer_left": { "facing=east,half=bottom,shape=outer_left": {
"model": "betterend:block/%name%_outer_stairs", "model": "betterend:block/%name%_outer_stairs",
"uvlock": true, "uvlock": true,
"y": 270 "y": 270
}, },
"facing=east,half=bottom,shape=outer_right": { "facing=east,half=bottom,shape=outer_right": {
"model": "betterend:block/%name%_outer_stairs" "model": "betterend:block/%name%_outer_stairs"
}, },
"facing=east,half=bottom,shape=straight": { "facing=east,half=bottom,shape=straight": {
"model": "betterend:block/%name%_stairs" "model": "betterend:block/%name%_stairs"
}, },
"facing=east,half=top,shape=inner_left": { "facing=east,half=top,shape=inner_left": {
"model": "betterend:block/%name%_inner_stairs", "model": "betterend:block/%name%_inner_stairs",
"uvlock": true, "uvlock": true,
"x": 180 "x": 180
}, },
"facing=east,half=top,shape=inner_right": { "facing=east,half=top,shape=inner_right": {
"model": "betterend:block/%name%_inner_stairs", "model": "betterend:block/%name%_inner_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 90 "y": 90
}, },
"facing=east,half=top,shape=outer_left": { "facing=east,half=top,shape=outer_left": {
"model": "betterend:block/%name%_outer_stairs", "model": "betterend:block/%name%_outer_stairs",
"uvlock": true, "uvlock": true,
"x": 180 "x": 180
}, },
"facing=east,half=top,shape=outer_right": { "facing=east,half=top,shape=outer_right": {
"model": "betterend:block/%name%_outer_stairs", "model": "betterend:block/%name%_outer_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 90 "y": 90
}, },
"facing=east,half=top,shape=straight": { "facing=east,half=top,shape=straight": {
"model": "betterend:block/%name%_stairs", "model": "betterend:block/%name%_stairs",
"uvlock": true, "uvlock": true,
"x": 180 "x": 180
}, },
"facing=north,half=bottom,shape=inner_left": { "facing=north,half=bottom,shape=inner_left": {
"model": "betterend:block/%name%_inner_stairs", "model": "betterend:block/%name%_inner_stairs",
"uvlock": true, "uvlock": true,
"y": 180 "y": 180
}, },
"facing=north,half=bottom,shape=inner_right": { "facing=north,half=bottom,shape=inner_right": {
"model": "betterend:block/%name%_inner_stairs", "model": "betterend:block/%name%_inner_stairs",
"uvlock": true, "uvlock": true,
"y": 270 "y": 270
}, },
"facing=north,half=bottom,shape=outer_left": { "facing=north,half=bottom,shape=outer_left": {
"model": "betterend:block/%name%_outer_stairs", "model": "betterend:block/%name%_outer_stairs",
"uvlock": true, "uvlock": true,
"y": 180 "y": 180
}, },
"facing=north,half=bottom,shape=outer_right": { "facing=north,half=bottom,shape=outer_right": {
"model": "betterend:block/%name%_outer_stairs", "model": "betterend:block/%name%_outer_stairs",
"uvlock": true, "uvlock": true,
"y": 270 "y": 270
}, },
"facing=north,half=bottom,shape=straight": { "facing=north,half=bottom,shape=straight": {
"model": "betterend:block/%name%_stairs", "model": "betterend:block/%name%_stairs",
"uvlock": true, "uvlock": true,
"y": 270 "y": 270
}, },
"facing=north,half=top,shape=inner_left": { "facing=north,half=top,shape=inner_left": {
"model": "betterend:block/%name%_inner_stairs", "model": "betterend:block/%name%_inner_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 270 "y": 270
}, },
"facing=north,half=top,shape=inner_right": { "facing=north,half=top,shape=inner_right": {
"model": "betterend:block/%name%_inner_stairs", "model": "betterend:block/%name%_inner_stairs",
"uvlock": true, "uvlock": true,
"x": 180 "x": 180
}, },
"facing=north,half=top,shape=outer_left": { "facing=north,half=top,shape=outer_left": {
"model": "betterend:block/%name%_outer_stairs", "model": "betterend:block/%name%_outer_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 270 "y": 270
}, },
"facing=north,half=top,shape=outer_right": { "facing=north,half=top,shape=outer_right": {
"model": "betterend:block/%name%_outer_stairs", "model": "betterend:block/%name%_outer_stairs",
"uvlock": true, "uvlock": true,
"x": 180 "x": 180
}, },
"facing=north,half=top,shape=straight": { "facing=north,half=top,shape=straight": {
"model": "betterend:block/%name%_stairs", "model": "betterend:block/%name%_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 270 "y": 270
}, },
"facing=south,half=bottom,shape=inner_left": { "facing=south,half=bottom,shape=inner_left": {
"model": "betterend:block/%name%_inner_stairs" "model": "betterend:block/%name%_inner_stairs"
}, },
"facing=south,half=bottom,shape=inner_right": { "facing=south,half=bottom,shape=inner_right": {
"model": "betterend:block/%name%_inner_stairs", "model": "betterend:block/%name%_inner_stairs",
"uvlock": true, "uvlock": true,
"y": 90 "y": 90
}, },
"facing=south,half=bottom,shape=outer_left": { "facing=south,half=bottom,shape=outer_left": {
"model": "betterend:block/%name%_outer_stairs" "model": "betterend:block/%name%_outer_stairs"
}, },
"facing=south,half=bottom,shape=outer_right": { "facing=south,half=bottom,shape=outer_right": {
"model": "betterend:block/%name%_outer_stairs", "model": "betterend:block/%name%_outer_stairs",
"uvlock": true, "uvlock": true,
"y": 90 "y": 90
}, },
"facing=south,half=bottom,shape=straight": { "facing=south,half=bottom,shape=straight": {
"model": "betterend:block/%name%_stairs", "model": "betterend:block/%name%_stairs",
"uvlock": true, "uvlock": true,
"y": 90 "y": 90
}, },
"facing=south,half=top,shape=inner_left": { "facing=south,half=top,shape=inner_left": {
"model": "betterend:block/%name%_inner_stairs", "model": "betterend:block/%name%_inner_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 90 "y": 90
}, },
"facing=south,half=top,shape=inner_right": { "facing=south,half=top,shape=inner_right": {
"model": "betterend:block/%name%_inner_stairs", "model": "betterend:block/%name%_inner_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 180 "y": 180
}, },
"facing=south,half=top,shape=outer_left": { "facing=south,half=top,shape=outer_left": {
"model": "betterend:block/%name%_outer_stairs", "model": "betterend:block/%name%_outer_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 90 "y": 90
}, },
"facing=south,half=top,shape=outer_right": { "facing=south,half=top,shape=outer_right": {
"model": "betterend:block/%name%_outer_stairs", "model": "betterend:block/%name%_outer_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 180 "y": 180
}, },
"facing=south,half=top,shape=straight": { "facing=south,half=top,shape=straight": {
"model": "betterend:block/%name%_stairs", "model": "betterend:block/%name%_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 90 "y": 90
}, },
"facing=west,half=bottom,shape=inner_left": { "facing=west,half=bottom,shape=inner_left": {
"model": "betterend:block/%name%_inner_stairs", "model": "betterend:block/%name%_inner_stairs",
"uvlock": true, "uvlock": true,
"y": 90 "y": 90
}, },
"facing=west,half=bottom,shape=inner_right": { "facing=west,half=bottom,shape=inner_right": {
"model": "betterend:block/%name%_inner_stairs", "model": "betterend:block/%name%_inner_stairs",
"uvlock": true, "uvlock": true,
"y": 180 "y": 180
}, },
"facing=west,half=bottom,shape=outer_left": { "facing=west,half=bottom,shape=outer_left": {
"model": "betterend:block/%name%_outer_stairs", "model": "betterend:block/%name%_outer_stairs",
"uvlock": true, "uvlock": true,
"y": 90 "y": 90
}, },
"facing=west,half=bottom,shape=outer_right": { "facing=west,half=bottom,shape=outer_right": {
"model": "betterend:block/%name%_outer_stairs", "model": "betterend:block/%name%_outer_stairs",
"uvlock": true, "uvlock": true,
"y": 180 "y": 180
}, },
"facing=west,half=bottom,shape=straight": { "facing=west,half=bottom,shape=straight": {
"model": "betterend:block/%name%_stairs", "model": "betterend:block/%name%_stairs",
"uvlock": true, "uvlock": true,
"y": 180 "y": 180
}, },
"facing=west,half=top,shape=inner_left": { "facing=west,half=top,shape=inner_left": {
"model": "betterend:block/%name%_inner_stairs", "model": "betterend:block/%name%_inner_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 180 "y": 180
}, },
"facing=west,half=top,shape=inner_right": { "facing=west,half=top,shape=inner_right": {
"model": "betterend:block/%name%_inner_stairs", "model": "betterend:block/%name%_inner_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 270 "y": 270
}, },
"facing=west,half=top,shape=outer_left": { "facing=west,half=top,shape=outer_left": {
"model": "betterend:block/%name%_outer_stairs", "model": "betterend:block/%name%_outer_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 180 "y": 180
}, },
"facing=west,half=top,shape=outer_right": { "facing=west,half=top,shape=outer_right": {
"model": "betterend:block/%name%_outer_stairs", "model": "betterend:block/%name%_outer_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 270 "y": 270
}, },
"facing=west,half=top,shape=straight": { "facing=west,half=top,shape=straight": {
"model": "betterend:block/%name%_stairs", "model": "betterend:block/%name%_stairs",
"uvlock": true, "uvlock": true,
"x": 180, "x": 180,
"y": 180 "y": 180
} }
} }
} }

View file

@ -1,7 +1,7 @@
{ {
"variants": { "variants": {
"": { "": {
"model": "betterend:block/%name%_tile" "model": "betterend:block/%name%_tile"
} }
} }
} }

View file

@ -1,90 +1,90 @@
{ {
"multipart": [ "multipart": [
{ {
"when": { "when": {
"up": "true" "up": "true"
}, },
"apply": { "apply": {
"model": "betterend:block/%name%_wall_post" "model": "betterend:block/%name%_wall_post"
} }
}, },
{ {
"when": { "when": {
"north": "low" "north": "low"
}, },
"apply": { "apply": {
"model": "betterend:block/%name%_wall_side", "model": "betterend:block/%name%_wall_side",
"uvlock": true "uvlock": true
} }
}, },
{ {
"when": { "when": {
"east": "low" "east": "low"
}, },
"apply": { "apply": {
"model": "betterend:block/%name%_wall_side", "model": "betterend:block/%name%_wall_side",
"y": 90, "y": 90,
"uvlock": true "uvlock": true
} }
}, },
{ {
"when": { "when": {
"south": "low" "south": "low"
}, },
"apply": { "apply": {
"model": "betterend:block/%name%_wall_side", "model": "betterend:block/%name%_wall_side",
"y": 180, "y": 180,
"uvlock": true "uvlock": true
} }
}, },
{ {
"when": { "when": {
"west": "low" "west": "low"
}, },
"apply": { "apply": {
"model": "betterend:block/%name%_wall_side", "model": "betterend:block/%name%_wall_side",
"y": 270, "y": 270,
"uvlock": true "uvlock": true
} }
}, },
{ {
"when": { "when": {
"north": "tall" "north": "tall"
}, },
"apply": { "apply": {
"model": "betterend:block/%name%_wall_side_tall", "model": "betterend:block/%name%_wall_side_tall",
"uvlock": true "uvlock": true
} }
}, },
{ {
"when": { "when": {
"east": "tall" "east": "tall"
}, },
"apply": { "apply": {
"model": "betterend:block/%name%_wall_side_tall", "model": "betterend:block/%name%_wall_side_tall",
"y": 90, "y": 90,
"uvlock": true "uvlock": true
} }
}, },
{ {
"when": { "when": {
"south": "tall" "south": "tall"
}, },
"apply": { "apply": {
"model": "betterend:block/%name%_wall_side_tall", "model": "betterend:block/%name%_wall_side_tall",
"y": 180, "y": 180,
"uvlock": true "uvlock": true
} }
}, },
{ {
"when": { "when": {
"west": "tall" "west": "tall"
}, },
"apply": { "apply": {
"model": "betterend:block/%name%_wall_side_tall", "model": "betterend:block/%name%_wall_side_tall",
"y": 270, "y": 270,
"uvlock": true "uvlock": true
} }
} }
] ]
} }

View file

@ -1,3 +1,3 @@
{ {
"parent": "betterend:block/%name%" "parent": "betterend:block/%name%"
} }

View file

@ -1,3 +1,3 @@
{ {
"parent": "betterend:block/%name%_brick_half_slab" "parent": "betterend:block/%name%_brick_half_slab"
} }

View file

@ -1,3 +1,3 @@
{ {
"parent": "betterend:block/%name%_brick_stairs" "parent": "betterend:block/%name%_brick_stairs"
} }

View file

@ -1,3 +1,3 @@
{ {
"parent": "betterend:block/%name%_brick_wall_inventory" "parent": "betterend:block/%name%_brick_wall_inventory"
} }

View file

@ -1,3 +1,3 @@
{ {
"parent": "betterend:block/%name%_bricks" "parent": "betterend:block/%name%_bricks"
} }

View file

@ -1,3 +1,3 @@
{ {
"parent": "betterend:block/%name%_button_inventory" "parent": "betterend:block/%name%_button_inventory"
} }

View file

@ -1,3 +1,3 @@
{ {
"parent": "betterend:block/%name%_pillar" "parent": "betterend:block/%name%_pillar"
} }

View file

@ -1,3 +1,3 @@
{ {
"parent": "betterend:block/%name%_pressure_plate_up" "parent": "betterend:block/%name%_pressure_plate_up"
} }

View file

@ -1,3 +1,3 @@
{ {
"parent": "betterend:block/%name%_half_slab" "parent": "betterend:block/%name%_half_slab"
} }

View file

@ -1,3 +1,3 @@
{ {
"parent": "betterend:block/%name%_small_tiles" "parent": "betterend:block/%name%_small_tiles"
} }

View file

@ -1,3 +1,3 @@
{ {
"parent": "betterend:block/%name%_stairs" "parent": "betterend:block/%name%_stairs"
} }

View file

@ -1,3 +1,3 @@
{ {
"parent": "betterend:block/%name%_tile" "parent": "betterend:block/%name%_tile"
} }

View file

@ -1,3 +1,3 @@
{ {
"parent": "betterend:block/%name%_wall_inventory" "parent": "betterend:block/%name%_wall_inventory"
} }

View file

@ -14,11 +14,7 @@ import ru.bclib.blocks.BaseBlock;
public class AeterniumBlock extends BaseBlock { public class AeterniumBlock extends BaseBlock {
public AeterniumBlock() { public AeterniumBlock() {
super(FabricBlockSettings.of(Material.METAL, MaterialColor.COLOR_GRAY) super(FabricBlockSettings.of(Material.METAL, MaterialColor.COLOR_GRAY).hardness(65F).resistance(1200F).requiresCorrectToolForDrops().sound(SoundType.NETHERITE_BLOCK));
.hardness(65F)
.resistance(1200F)
.requiresCorrectToolForDrops()
.sound(SoundType.NETHERITE_BLOCK));
} }
@Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)

View file

@ -33,15 +33,7 @@ public class AuroraCrystalBlock extends AbstractGlassBlock implements IRenderTyp
private static final int MAX_DROP = 4; private static final int MAX_DROP = 4;
public AuroraCrystalBlock() { public AuroraCrystalBlock() {
super(FabricBlockSettings.of(Material.GLASS) super(FabricBlockSettings.of(Material.GLASS).breakByTool(FabricToolTags.PICKAXES).breakByTool(TagAPI.HAMMERS).hardness(1F).resistance(1F).luminance(15).noOcclusion().isSuffocating((state, world, pos) -> false).sound(SoundType.GLASS));
.breakByTool(FabricToolTags.PICKAXES)
.breakByTool(TagAPI.HAMMERS)
.hardness(1F)
.resistance(1F)
.luminance(15)
.noOcclusion()
.isSuffocating((state, world, pos) -> false)
.sound(SoundType.GLASS));
} }
@Override @Override
@ -109,11 +101,6 @@ public class AuroraCrystalBlock extends AbstractGlassBlock implements IRenderTyp
} }
static { static {
COLORS = new Vec3i[]{ COLORS = new Vec3i[]{new Vec3i(247, 77, 161), new Vec3i(120, 184, 255), new Vec3i(120, 255, 168), new Vec3i(243, 58, 255)};
new Vec3i(247, 77, 161),
new Vec3i(120, 184, 255),
new Vec3i(120, 255, 168),
new Vec3i(243, 58, 255)
};
} }
} }

View file

@ -87,10 +87,7 @@ public class BrimstoneBlock extends BaseBlock {
} }
} }
else if (sideState.getFluidState().getType() == Fluids.WATER) { else if (sideState.getFluidState().getType() == Fluids.WATER) {
BlockState crystal = EndBlocks.SULPHUR_CRYSTAL.defaultBlockState() BlockState crystal = EndBlocks.SULPHUR_CRYSTAL.defaultBlockState().setValue(SulphurCrystalBlock.FACING, dir).setValue(SulphurCrystalBlock.WATERLOGGED, true).setValue(SulphurCrystalBlock.AGE, 0);
.setValue(SulphurCrystalBlock.FACING, dir)
.setValue(SulphurCrystalBlock.WATERLOGGED, true)
.setValue(SulphurCrystalBlock.AGE, 0);
world.setBlockAndUpdate(side, crystal); world.setBlockAndUpdate(side, crystal);
} }
} }

View file

@ -24,11 +24,7 @@ public class BubbleCoralBlock extends EndUnderwaterPlantBlock {
private static final VoxelShape SHAPE = Block.box(0, 0, 0, 16, 14, 16); private static final VoxelShape SHAPE = Block.box(0, 0, 0, 16, 14, 16);
public BubbleCoralBlock() { public BubbleCoralBlock() {
super(FabricBlockSettings.of(Material.WATER_PLANT) super(FabricBlockSettings.of(Material.WATER_PLANT).breakByTool(FabricToolTags.SHEARS).breakByHand(true).sound(SoundType.CORAL_BLOCK).noCollission());
.breakByTool(FabricToolTags.SHEARS)
.breakByHand(true)
.sound(SoundType.CORAL_BLOCK)
.noCollission());
} }
@Override @Override

View file

@ -32,14 +32,7 @@ public class BulbVineLanternBlock extends EndLanternBlock implements IRenderType
private static final VoxelShape SHAPE_FLOOR = Block.box(4, 0, 4, 12, 12, 12); private static final VoxelShape SHAPE_FLOOR = Block.box(4, 0, 4, 12, 12, 12);
public BulbVineLanternBlock() { public BulbVineLanternBlock() {
this(FabricBlockSettings.of(Material.METAL) this(FabricBlockSettings.of(Material.METAL).hardness(1).resistance(1).breakByTool(FabricToolTags.PICKAXES).materialColor(MaterialColor.COLOR_LIGHT_GRAY).luminance(15).requiresCorrectToolForDrops().sound(SoundType.LANTERN));
.hardness(1)
.resistance(1)
.breakByTool(FabricToolTags.PICKAXES)
.materialColor(MaterialColor.COLOR_LIGHT_GRAY)
.luminance(15)
.requiresCorrectToolForDrops()
.sound(SoundType.LANTERN));
} }
public BulbVineLanternBlock(Properties settings) { public BulbVineLanternBlock(Properties settings) {
@ -62,9 +55,7 @@ public class BulbVineLanternBlock extends EndLanternBlock implements IRenderType
Map<String, String> textures = Maps.newHashMap(); Map<String, String> textures = Maps.newHashMap();
textures.put("%glow%", getGlowTexture()); textures.put("%glow%", getGlowTexture());
textures.put("%metal%", getMetalTexture(resourceLocation)); textures.put("%metal%", getMetalTexture(resourceLocation));
Optional<String> pattern = blockState.getValue(IS_FLOOR) ? Optional<String> pattern = blockState.getValue(IS_FLOOR) ? Patterns.createJson(Patterns.BLOCK_BULB_LANTERN_FLOOR, textures) : Patterns.createJson(Patterns.BLOCK_BULB_LANTERN_CEIL, textures);
Patterns.createJson(Patterns.BLOCK_BULB_LANTERN_FLOOR, textures) :
Patterns.createJson(Patterns.BLOCK_BULB_LANTERN_CEIL, textures);
return ModelsHelper.fromPattern(pattern); return ModelsHelper.fromPattern(pattern);
} }

View file

@ -14,14 +14,10 @@ public class EndBlockProperties extends BlockProperties {
public static final BooleanProperty HAS_ITEM = BooleanProperty.create("has_item"); public static final BooleanProperty HAS_ITEM = BooleanProperty.create("has_item");
public static final IntegerProperty PORTAL = IntegerProperty.create("portal", 0, EndPortals.getCount()); public static final IntegerProperty PORTAL = IntegerProperty.create("portal", 0, EndPortals.getCount());
public static final IntegerProperty PLANT_ID = IntegerProperty.create("plant_id", 0, 127);
public enum PedestalState implements StringRepresentable { public enum PedestalState implements StringRepresentable {
PEDESTAL_TOP("pedestal_top"), PEDESTAL_TOP("pedestal_top"), COLUMN_TOP("column_top"), BOTTOM("bottom"), PILLAR("pillar"), COLUMN("column"), DEFAULT("default");
COLUMN_TOP("column_top"),
BOTTOM("bottom"),
PILLAR("pillar"),
COLUMN("column"),
DEFAULT("default");
private final String name; private final String name;
@ -41,12 +37,7 @@ public class EndBlockProperties extends BlockProperties {
} }
public enum HydraluxShape implements StringRepresentable { public enum HydraluxShape implements StringRepresentable {
FLOWER_BIG_BOTTOM("flower_big_bottom", true), FLOWER_BIG_BOTTOM("flower_big_bottom", true), FLOWER_BIG_TOP("flower_big_top", true), FLOWER_SMALL_BOTTOM("flower_small_bottom", true), FLOWER_SMALL_TOP("flower_small_top", true), VINE("vine", false), ROOTS("roots", false);
FLOWER_BIG_TOP("flower_big_top", true),
FLOWER_SMALL_BOTTOM("flower_small_bottom", true),
FLOWER_SMALL_TOP("flower_small_top", true),
VINE("vine", false),
ROOTS("roots", false);
private final String name; private final String name;
private final boolean glow; private final boolean glow;
@ -72,13 +63,7 @@ public class EndBlockProperties extends BlockProperties {
} }
public enum LumecornShape implements StringRepresentable { public enum LumecornShape implements StringRepresentable {
LIGHT_TOP("light_top", 15), LIGHT_TOP("light_top", 15), LIGHT_TOP_MIDDLE("light_top_middle", 15), LIGHT_MIDDLE("light_middle", 15), LIGHT_BOTTOM("light_bottom", 15), MIDDLE("middle", 0), BOTTOM_BIG("bottom_big", 0), BOTTOM_SMALL("bottom_small", 0);
LIGHT_TOP_MIDDLE("light_top_middle", 15),
LIGHT_MIDDLE("light_middle", 15),
LIGHT_BOTTOM("light_bottom", 15),
MIDDLE("middle", 0),
BOTTOM_BIG("bottom_big", 0),
BOTTOM_SMALL("bottom_small", 0);
private final String name; private final String name;
private final int light; private final int light;
@ -104,9 +89,7 @@ public class EndBlockProperties extends BlockProperties {
} }
public enum CactusBottom implements StringRepresentable { public enum CactusBottom implements StringRepresentable {
EMPTY("empty"), EMPTY("empty"), SAND("sand"), MOSS("moss");
SAND("sand"),
MOSS("moss");
private final String name; private final String name;

View file

@ -42,12 +42,7 @@ public class EndLilyBlock extends EndUnderwaterPlantBlock {
private static final VoxelShape SHAPE_TOP = Block.box(2, 0, 2, 14, 6, 14); private static final VoxelShape SHAPE_TOP = Block.box(2, 0, 2, 14, 6, 14);
public EndLilyBlock() { public EndLilyBlock() {
super(FabricBlockSettings.of(Material.WATER_PLANT) super(FabricBlockSettings.of(Material.WATER_PLANT).breakByTool(FabricToolTags.SHEARS).breakByHand(true).sound(SoundType.WET_GRASS).lightLevel((state) -> state.getValue(SHAPE) == TripleShape.TOP ? 13 : 0).noCollission());
.breakByTool(FabricToolTags.SHEARS)
.breakByHand(true)
.sound(SoundType.WET_GRASS)
.lightLevel((state) -> state.getValue(SHAPE) == TripleShape.TOP ? 13 : 0)
.noCollission());
} }
@Override @Override

View file

@ -110,8 +110,7 @@ public class EndLotusSeedBlock extends UnderwaterPlantWithAgeBlock {
p.setX(pos.getX() + x); p.setX(pos.getX() + x);
for (int z = -1; z < 2; z++) { for (int z = -1; z < 2; z++) {
p.setZ(pos.getZ() + z); p.setZ(pos.getZ() + z);
if (world.isEmptyBlock(p) && !world.getFluidState(p.below()).isEmpty()) if (world.isEmptyBlock(p) && !world.getFluidState(p.below()).isEmpty()) count++;
count++;
} }
} }
return count == 9; return count == 9;

View file

@ -95,8 +95,7 @@ public class EndPortalBlock extends NetherPortalBlock implements IRenderTyped, I
BlockPos exitPos = findExitPos(currentWorld, destination, pos, entity); BlockPos exitPos = findExitPos(currentWorld, destination, pos, entity);
if (exitPos == null) return; if (exitPos == null) return;
if (entity instanceof ServerPlayer && ((ServerPlayer) entity).isCreative()) { if (entity instanceof ServerPlayer && ((ServerPlayer) entity).isCreative()) {
((ServerPlayer) entity).teleportTo(destination, exitPos.getX() + 0.5, exitPos.getY(), ((ServerPlayer) entity).teleportTo(destination, exitPos.getX() + 0.5, exitPos.getY(), exitPos.getZ() + 0.5, entity.getYRot(), entity.getXRot());
exitPos.getZ() + 0.5, entity.getYRot(), entity.getXRot());
} }
else { else {
((TeleportingEntity) entity).be_setExitPos(exitPos); ((TeleportingEntity) entity).be_setExitPos(exitPos);
@ -106,8 +105,7 @@ public class EndPortalBlock extends NetherPortalBlock implements IRenderTyped, I
} }
private boolean validate(Entity entity) { private boolean validate(Entity entity) {
return !entity.isPassenger() && !entity.isVehicle() && return !entity.isPassenger() && !entity.isVehicle() && entity.canChangeDimensions() && !entity.isOnPortalCooldown();
entity.canChangeDimensions() && !entity.isOnPortalCooldown();
} }
@Override @Override
@ -127,8 +125,7 @@ public class EndPortalBlock extends NetherPortalBlock implements IRenderTyped, I
MutableBlockPos checkPos = basePos.mutable(); MutableBlockPos checkPos = basePos.mutable();
BlockState currentState = currentWorld.getBlockState(currentPos); BlockState currentState = currentWorld.getBlockState(currentPos);
int radius = (EternalRitual.SEARCH_RADIUS >> 4) + 1; int radius = (EternalRitual.SEARCH_RADIUS >> 4) + 1;
checkPos = EternalRitual.findBlockPos(targetWorld, checkPos, radius, this, state -> state.is(this) && checkPos = EternalRitual.findBlockPos(targetWorld, checkPos, radius, this, state -> state.is(this) && state.getValue(PORTAL).equals(currentState.getValue(PORTAL)));
state.getValue(PORTAL).equals(currentState.getValue(PORTAL)));
if (checkPos != null) { if (checkPos != null) {
BlockState checkState = targetWorld.getBlockState(checkPos); BlockState checkState = targetWorld.getBlockState(checkPos);
Axis axis = checkState.getValue(AXIS); Axis axis = checkState.getValue(AXIS);

View file

@ -49,12 +49,7 @@ public class EndStoneSmelter extends BaseBlockWithEntity {
public static final String ID = "end_stone_smelter"; public static final String ID = "end_stone_smelter";
public EndStoneSmelter() { public EndStoneSmelter() {
super(FabricBlockSettings.of(Material.STONE, MaterialColor.COLOR_GRAY) super(FabricBlockSettings.of(Material.STONE, MaterialColor.COLOR_GRAY).luminance(state -> state.getValue(LIT) ? 15 : 0).hardness(4F).resistance(100F).requiresCorrectToolForDrops().sound(SoundType.STONE));
.luminance(state -> state.getValue(LIT) ? 15 : 0)
.hardness(4F)
.resistance(100F)
.requiresCorrectToolForDrops()
.sound(SoundType.STONE));
registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH).setValue(LIT, false)); registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH).setValue(LIT, false));
} }

View file

@ -14,11 +14,7 @@ import ru.bclib.blocks.BaseBlock;
public class EnderBlock extends BaseBlock { public class EnderBlock extends BaseBlock {
public EnderBlock() { public EnderBlock() {
super(FabricBlockSettings.of(Material.STONE, MaterialColor.WARPED_WART_BLOCK) super(FabricBlockSettings.of(Material.STONE, MaterialColor.WARPED_WART_BLOCK).hardness(5F).resistance(6F).requiresCorrectToolForDrops().sound(SoundType.STONE));
.hardness(5F)
.resistance(6F)
.requiresCorrectToolForDrops()
.sound(SoundType.STONE));
} }
@Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)

View file

@ -21,9 +21,7 @@ public class EndstoneDustBlock extends FallingBlock {
private static final int COLOR = ColorUtil.color(226, 239, 168); private static final int COLOR = ColorUtil.color(226, 239, 168);
public EndstoneDustBlock() { public EndstoneDustBlock() {
super(FabricBlockSettings.copyOf(Blocks.SAND) super(FabricBlockSettings.copyOf(Blocks.SAND).breakByTool(FabricToolTags.SHOVELS).materialColor(Blocks.END_STONE.defaultMaterialColor()));
.breakByTool(FabricToolTags.SHOVELS)
.materialColor(Blocks.END_STONE.defaultMaterialColor()));
} }
@Override @Override

View file

@ -24,10 +24,7 @@ public class FlamaeaBlock extends EndPlantBlock implements ISpetialItem {
private static final VoxelShape SHAPE = Block.box(0, 0, 0, 16, 1, 16); private static final VoxelShape SHAPE = Block.box(0, 0, 0, 16, 1, 16);
public FlamaeaBlock() { public FlamaeaBlock() {
super(FabricBlockSettings.of(Material.PLANT) super(FabricBlockSettings.of(Material.PLANT).breakByTool(FabricToolTags.SHEARS).breakByHand(true).sound(SoundType.WET_GRASS));
.breakByTool(FabricToolTags.SHEARS)
.breakByHand(true)
.sound(SoundType.WET_GRASS));
} }
@Override @Override

View file

@ -0,0 +1,76 @@
package ru.betterend.blocks;
import com.google.common.collect.Lists;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.client.resources.model.UnbakedModel;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.level.block.state.properties.IntegerProperty;
import ru.bclib.blocks.BaseBlockNotFull;
import ru.bclib.client.models.BlockModelProvider;
import ru.betterend.client.models.MergedModel;
import ru.betterend.interfaces.PottablePlant;
import ru.betterend.registry.EndBlocks;
import java.util.List;
import java.util.Map;
public class FlowerPotBlock extends BaseBlockNotFull {
private static final IntegerProperty PLANT_ID = EndBlockProperties.PLANT_ID;
private final Block[] blocks;
@Environment(EnvType.CLIENT)
private UnbakedModel source;
public FlowerPotBlock(Block source) {
super(FabricBlockSettings.copyOf(source));
List<Block> blocks = Lists.newArrayList();
EndBlocks.getModBlocks().forEach(block -> {
if (block instanceof PottablePlant) {
blocks.add(block);
}
});
this.blocks = blocks.toArray(new Block[] {});
}
@Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
super.createBlockStateDefinition(builder);
builder.add(PLANT_ID);
}
@Override
@Environment(EnvType.CLIENT)
public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map<ResourceLocation, UnbakedModel> modelCache) {
int id = blockState.getValue(PLANT_ID);
if (id == 0 || id > blocks.length) {
if (id == 0) {
source = super.getModelVariant(stateId, blockState, modelCache);
}
return source;
}
registerModel(stateId, blockState, modelCache);
MergedModel model = new MergedModel(blockState, source);
Block plant = blocks[id - 1];
if (plant instanceof BlockModelProvider) {
ResourceLocation location = Registry.BLOCK.getKey(plant);
//model.addModel(((BlockModelProvider) plant).getBlockModel(location, plant.defaultBlockState()));
model = new MergedModel(blockState, ((BlockModelProvider) plant).getBlockModel(location, plant.defaultBlockState()));
System.out.println("Plant " + id + " is instance!");
}
return model;
}
private void registerModel(ResourceLocation stateId, BlockState blockState, Map<ResourceLocation, UnbakedModel> modelCache) {
ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath());
registerBlockModel(stateId, modelId, blockState, modelCache);
}
}

View file

@ -21,12 +21,7 @@ public class GlowingPillarLuminophorBlock extends BaseBlock {
public static final BooleanProperty NATURAL = EndBlockProperties.NATURAL; public static final BooleanProperty NATURAL = EndBlockProperties.NATURAL;
public GlowingPillarLuminophorBlock() { public GlowingPillarLuminophorBlock() {
super(FabricBlockSettings.of(Material.LEAVES) super(FabricBlockSettings.of(Material.LEAVES).materialColor(MaterialColor.COLOR_ORANGE).breakByTool(FabricToolTags.SHEARS).strength(0.2F).luminance(15).sound(SoundType.GRASS));
.materialColor(MaterialColor.COLOR_ORANGE)
.breakByTool(FabricToolTags.SHEARS)
.strength(0.2F)
.luminance(15)
.sound(SoundType.GRASS));
this.registerDefaultState(this.stateDefinition.any().setValue(NATURAL, false)); this.registerDefaultState(this.stateDefinition.any().setValue(NATURAL, false));
} }

View file

@ -23,13 +23,7 @@ import java.util.Random;
public class GlowingPillarSeedBlock extends EndPlantWithAgeBlock { public class GlowingPillarSeedBlock extends EndPlantWithAgeBlock {
public GlowingPillarSeedBlock() { public GlowingPillarSeedBlock() {
super(FabricBlockSettings.of(Material.PLANT) super(FabricBlockSettings.of(Material.PLANT).breakByTool(FabricToolTags.SHEARS).breakByHand(true).sound(SoundType.GRASS).lightLevel(state -> state.getValue(AGE) * 3 + 3).randomTicks().noCollission());
.breakByTool(FabricToolTags.SHEARS)
.breakByHand(true)
.sound(SoundType.GRASS)
.lightLevel(state -> state.getValue(AGE) * 3 + 3)
.randomTicks()
.noCollission());
} }
@Override @Override

View file

@ -34,12 +34,7 @@ public class HelixTreeLeavesBlock extends BaseBlock implements IColorProvider {
private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(0); private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(0);
public HelixTreeLeavesBlock() { public HelixTreeLeavesBlock() {
super(FabricBlockSettings.of(Material.LEAVES) super(FabricBlockSettings.of(Material.LEAVES).materialColor(MaterialColor.COLOR_ORANGE).breakByTool(FabricToolTags.SHEARS).sound(SoundType.WART_BLOCK).sound(SoundType.GRASS).strength(0.2F));
.materialColor(MaterialColor.COLOR_ORANGE)
.breakByTool(FabricToolTags.SHEARS)
.sound(SoundType.WART_BLOCK)
.sound(SoundType.GRASS)
.strength(0.2F));
} }
@Override @Override

View file

@ -33,12 +33,7 @@ public class HydraluxBlock extends UnderwaterPlantBlock {
public static final EnumProperty<HydraluxShape> SHAPE = EndBlockProperties.HYDRALUX_SHAPE; public static final EnumProperty<HydraluxShape> SHAPE = EndBlockProperties.HYDRALUX_SHAPE;
public HydraluxBlock() { public HydraluxBlock() {
super(FabricBlockSettings.of(Material.WATER_PLANT) super(FabricBlockSettings.of(Material.WATER_PLANT).breakByTool(FabricToolTags.SHEARS).breakByHand(true).sound(SoundType.WET_GRASS).lightLevel((state) -> state.getValue(SHAPE).hasGlow() ? 15 : 0).noCollission());
.breakByTool(FabricToolTags.SHEARS)
.breakByHand(true)
.sound(SoundType.WET_GRASS)
.lightLevel((state) -> state.getValue(SHAPE).hasGlow() ? 15 : 0)
.noCollission());
} }
@Override @Override

View file

@ -13,13 +13,7 @@ import ru.bclib.blocks.BaseBlock;
public class HydraluxPetalBlock extends BaseBlock { public class HydraluxPetalBlock extends BaseBlock {
public HydraluxPetalBlock() { public HydraluxPetalBlock() {
this(FabricBlockSettings.of(Material.PLANT) this(FabricBlockSettings.of(Material.PLANT).breakByTool(FabricToolTags.AXES).breakByHand(true).hardness(1).resistance(1).materialColor(MaterialColor.PODZOL).sound(SoundType.WART_BLOCK));
.breakByTool(FabricToolTags.AXES)
.breakByHand(true)
.hardness(1)
.resistance(1)
.materialColor(MaterialColor.PODZOL)
.sound(SoundType.WART_BLOCK));
} }
public HydraluxPetalBlock(Properties settings) { public HydraluxPetalBlock(Properties settings) {

View file

@ -40,7 +40,6 @@ import ru.bclib.blocks.BlockProperties;
import ru.bclib.util.BlocksHelper; import ru.bclib.util.BlocksHelper;
import ru.betterend.blocks.entities.BlockEntityHydrothermalVent; import ru.betterend.blocks.entities.BlockEntityHydrothermalVent;
import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndBlocks;
import ru.betterend.registry.EndParticles;
import java.util.Random; import java.util.Random;
@ -51,11 +50,7 @@ public class HydrothermalVentBlock extends BaseBlockNotFull implements EntityBlo
private static final VoxelShape SHAPE = Block.box(1, 1, 1, 15, 16, 15); private static final VoxelShape SHAPE = Block.box(1, 1, 1, 15, 16, 15);
public HydrothermalVentBlock() { public HydrothermalVentBlock() {
super(FabricBlockSettings.of(Material.STONE) super(FabricBlockSettings.of(Material.STONE).breakByTool(FabricToolTags.PICKAXES).sound(SoundType.STONE).noCollission().requiresCorrectToolForDrops());
.breakByTool(FabricToolTags.PICKAXES)
.sound(SoundType.STONE)
.noCollission()
.requiresCorrectToolForDrops());
this.registerDefaultState(defaultBlockState().setValue(WATERLOGGED, true).setValue(ACTIVATED, false)); this.registerDefaultState(defaultBlockState().setValue(WATERLOGGED, true).setValue(ACTIVATED, false));
} }

View file

@ -15,7 +15,6 @@ import net.minecraft.world.phys.shapes.VoxelShape;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import ru.betterend.blocks.basis.PedestalBlock; import ru.betterend.blocks.basis.PedestalBlock;
import ru.betterend.blocks.entities.InfusionPedestalEntity; import ru.betterend.blocks.entities.InfusionPedestalEntity;
import ru.betterend.blocks.entities.PedestalBlockEntity;
import ru.betterend.rituals.InfusionRitual; import ru.betterend.rituals.InfusionRitual;
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")

View file

@ -28,11 +28,7 @@ public class LargeAmaranitaBlock extends EndPlantBlock {
private static final VoxelShape SHAPE_TOP = Shapes.or(Block.box(1, 3, 1, 15, 16, 15), SHAPE_BOTTOM); private static final VoxelShape SHAPE_TOP = Shapes.or(Block.box(1, 3, 1, 15, 16, 15), SHAPE_BOTTOM);
public LargeAmaranitaBlock() { public LargeAmaranitaBlock() {
super(FabricBlockSettings.of(Material.PLANT) super(FabricBlockSettings.of(Material.PLANT).breakByTool(FabricToolTags.SHEARS).breakByHand(true).sound(SoundType.GRASS).lightLevel((state) -> (state.getValue(SHAPE) == TripleShape.TOP) ? 15 : 0));
.breakByTool(FabricToolTags.SHEARS)
.breakByHand(true)
.sound(SoundType.GRASS)
.lightLevel((state) -> (state.getValue(SHAPE) == TripleShape.TOP) ? 15 : 0));
} }
@Override @Override

View file

@ -38,10 +38,7 @@ public class LumecornBlock extends BaseBlockNotFull implements IRenderTyped {
private static final VoxelShape SHAPE_TOP = Block.box(6, 0, 6, 10, 8, 10); private static final VoxelShape SHAPE_TOP = Block.box(6, 0, 6, 10, 8, 10);
public LumecornBlock() { public LumecornBlock() {
super(FabricBlockSettings.of(Material.WOOD) super(FabricBlockSettings.of(Material.WOOD).breakByTool(FabricToolTags.AXES).hardness(0.5F).luminance(state -> state.getValue(SHAPE).getLight()));
.breakByTool(FabricToolTags.AXES)
.hardness(0.5F)
.luminance(state -> state.getValue(SHAPE).getLight()));
} }
@Override @Override

View file

@ -23,12 +23,7 @@ public class PondAnemoneBlock extends EndUnderwaterPlantBlock {
private static final VoxelShape SHAPE = Block.box(2, 0, 2, 14, 14, 14); private static final VoxelShape SHAPE = Block.box(2, 0, 2, 14, 14, 14);
public PondAnemoneBlock() { public PondAnemoneBlock() {
super(FabricBlockSettings.of(Material.WATER_PLANT) super(FabricBlockSettings.of(Material.WATER_PLANT).breakByTool(FabricToolTags.SHEARS).breakByHand(true).luminance(13).sound(SoundType.CORAL_BLOCK).noCollission());
.breakByTool(FabricToolTags.SHEARS)
.breakByHand(true)
.luminance(13)
.sound(SoundType.CORAL_BLOCK)
.noCollission());
} }
@Override @Override

View file

@ -21,13 +21,9 @@ public class RunedFlavolite extends BaseBlock {
public static final BooleanProperty ACTIVATED = BlockProperties.ACTIVE; public static final BooleanProperty ACTIVATED = BlockProperties.ACTIVE;
public RunedFlavolite(boolean unbreakable) { public RunedFlavolite(boolean unbreakable) {
super(FabricBlockSettings.copyOf(EndBlocks.FLAVOLITE.polished) super(FabricBlockSettings.copyOf(EndBlocks.FLAVOLITE.polished).strength(unbreakable ? -1 : 1, unbreakable ? Blocks.BEDROCK.getExplosionResistance() : Blocks.OBSIDIAN.getExplosionResistance()).luminance(state -> {
.strength( return state.getValue(ACTIVATED) ? 8 : 0;
unbreakable ? -1 : 1, }));
unbreakable ? Blocks.BEDROCK.getExplosionResistance() : Blocks.OBSIDIAN.getExplosionResistance()
).luminance(state -> {
return state.getValue(ACTIVATED) ? 8 : 0;
}));
this.registerDefaultState(stateDefinition.any().setValue(ACTIVATED, false)); this.registerDefaultState(stateDefinition.any().setValue(ACTIVATED, false));
} }

View file

@ -60,10 +60,7 @@ public class SmallAmaranitaBlock extends EndPlantBlock {
} }
private boolean checkFrame(ServerLevel world, BlockPos pos) { private boolean checkFrame(ServerLevel world, BlockPos pos) {
return world.getBlockState(pos).is(this) && return world.getBlockState(pos).is(this) && world.getBlockState(pos.south()).is(this) && world.getBlockState(pos.east()).is(this) && world.getBlockState(pos.south().east()).is(this);
world.getBlockState(pos.south()).is(this) &&
world.getBlockState(pos.east()).is(this) &&
world.getBlockState(pos.south().east()).is(this);
} }
private void replaceMushroom(ServerLevel world, BlockPos pos) { private void replaceMushroom(ServerLevel world, BlockPos pos) {

View file

@ -40,11 +40,7 @@ public class SmallJellyshroomBlock extends BaseAttachedBlock implements IRenderT
private static final EnumMap<Direction, VoxelShape> BOUNDING_SHAPES = Maps.newEnumMap(Direction.class); private static final EnumMap<Direction, VoxelShape> BOUNDING_SHAPES = Maps.newEnumMap(Direction.class);
public SmallJellyshroomBlock() { public SmallJellyshroomBlock() {
super(FabricBlockSettings.of(Material.PLANT) super(FabricBlockSettings.of(Material.PLANT).breakByTool(FabricToolTags.SHEARS).breakByHand(true).sound(SoundType.NETHER_WART).noCollission());
.breakByTool(FabricToolTags.SHEARS)
.breakByHand(true)
.sound(SoundType.NETHER_WART)
.noCollission());
} }
@Override @Override

View file

@ -8,12 +8,6 @@ import ru.betterend.blocks.basis.LitPillarBlock;
public class SmaragdantCrystalBlock extends LitPillarBlock { public class SmaragdantCrystalBlock extends LitPillarBlock {
public SmaragdantCrystalBlock() { public SmaragdantCrystalBlock() {
super(FabricBlockSettings.of(Material.GLASS) super(FabricBlockSettings.of(Material.GLASS).breakByTool(FabricToolTags.PICKAXES).luminance(15).hardness(1F).resistance(1F).noOcclusion().sound(SoundType.AMETHYST));
.breakByTool(FabricToolTags.PICKAXES)
.luminance(15)
.hardness(1F)
.resistance(1F)
.noOcclusion()
.sound(SoundType.AMETHYST));
} }
} }

View file

@ -37,13 +37,7 @@ public class SmaragdantCrystalShardBlock extends BaseAttachedBlock implements IR
public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED;
public SmaragdantCrystalShardBlock() { public SmaragdantCrystalShardBlock() {
super(FabricBlockSettings.of(Material.STONE) super(FabricBlockSettings.of(Material.STONE).materialColor(MaterialColor.COLOR_GREEN).breakByTool(FabricToolTags.PICKAXES).luminance(15).sound(SoundType.AMETHYST_CLUSTER).requiresCorrectToolForDrops().noCollission());
.materialColor(MaterialColor.COLOR_GREEN)
.breakByTool(FabricToolTags.PICKAXES)
.luminance(15)
.sound(SoundType.AMETHYST_CLUSTER)
.requiresCorrectToolForDrops()
.noCollission());
} }
@Override @Override

View file

@ -47,12 +47,7 @@ public class SulphurCrystalBlock extends BaseAttachedBlock implements IRenderTyp
public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED;
public SulphurCrystalBlock() { public SulphurCrystalBlock() {
super(FabricBlockSettings.of(Material.STONE) super(FabricBlockSettings.of(Material.STONE).materialColor(MaterialColor.COLOR_YELLOW).breakByTool(FabricToolTags.PICKAXES).sound(SoundType.GLASS).requiresCorrectToolForDrops().noCollission());
.materialColor(MaterialColor.COLOR_YELLOW)
.breakByTool(FabricToolTags.PICKAXES)
.sound(SoundType.GLASS)
.requiresCorrectToolForDrops()
.noCollission());
} }
@Override @Override

View file

@ -73,11 +73,6 @@ public class TenaneaFlowersBlock extends BaseVineBlock implements IColorProvider
} }
static { static {
COLORS = new Vec3i[]{ COLORS = new Vec3i[]{new Vec3i(250, 111, 222), new Vec3i(167, 89, 255), new Vec3i(120, 207, 239), new Vec3i(255, 87, 182)};
new Vec3i(250, 111, 222),
new Vec3i(167, 89, 255),
new Vec3i(120, 207, 239),
new Vec3i(255, 87, 182)
};
} }
} }

View file

@ -27,9 +27,7 @@ public class UmbrellaTreeClusterBlock extends BaseBlock {
public static final BooleanProperty NATURAL = BlockProperties.NATURAL; public static final BooleanProperty NATURAL = BlockProperties.NATURAL;
public UmbrellaTreeClusterBlock() { public UmbrellaTreeClusterBlock() {
super(FabricBlockSettings.copyOf(Blocks.NETHER_WART_BLOCK) super(FabricBlockSettings.copyOf(Blocks.NETHER_WART_BLOCK).materialColor(MaterialColor.COLOR_PURPLE).luminance(15));
.materialColor(MaterialColor.COLOR_PURPLE)
.luminance(15));
registerDefaultState(stateDefinition.any().setValue(NATURAL, false)); registerDefaultState(stateDefinition.any().setValue(NATURAL, false));
} }

View file

@ -19,9 +19,7 @@ public class UmbrellaTreeClusterEmptyBlock extends BaseBlock {
public static final BooleanProperty NATURAL = EndBlockProperties.NATURAL; public static final BooleanProperty NATURAL = EndBlockProperties.NATURAL;
public UmbrellaTreeClusterEmptyBlock() { public UmbrellaTreeClusterEmptyBlock() {
super(FabricBlockSettings.copyOf(Blocks.NETHER_WART_BLOCK) super(FabricBlockSettings.copyOf(Blocks.NETHER_WART_BLOCK).materialColor(MaterialColor.COLOR_PURPLE).randomTicks());
.materialColor(MaterialColor.COLOR_PURPLE)
.randomTicks());
registerDefaultState(stateDefinition.any().setValue(NATURAL, false)); registerDefaultState(stateDefinition.any().setValue(NATURAL, false));
} }

View file

@ -130,8 +130,7 @@ public class EndLanternBlock extends BaseBlockNotFull implements SimpleWaterlogg
@Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)
public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map<ResourceLocation, UnbakedModel> modelCache) { public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map<ResourceLocation, UnbakedModel> modelCache) {
String floor = blockState.getValue(IS_FLOOR) ? "_floor" : ""; String floor = blockState.getValue(IS_FLOOR) ? "_floor" : "";
ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath() + floor);
"block/" + stateId.getPath() + floor);
registerBlockModel(stateId, modelId, blockState, modelCache); registerBlockModel(stateId, modelId, blockState, modelCache);
return ModelsHelper.createBlockSimple(modelId); return ModelsHelper.createBlockSimple(modelId);
} }

View file

@ -3,8 +3,9 @@ package ru.betterend.blocks.basis;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import ru.bclib.api.TagAPI; import ru.bclib.api.TagAPI;
import ru.bclib.blocks.BasePlantBlock; import ru.bclib.blocks.BasePlantBlock;
import ru.betterend.interfaces.PottablePlant;
public class EndPlantBlock extends BasePlantBlock { public class EndPlantBlock extends BasePlantBlock implements PottablePlant {
public EndPlantBlock() { public EndPlantBlock() {
this(false); this(false);

View file

@ -33,22 +33,13 @@ public class FurBlock extends BaseAttachedBlock implements IRenderTyped {
private final int dropChance; private final int dropChance;
public FurBlock(ItemLike drop, int light, int dropChance, boolean wet) { public FurBlock(ItemLike drop, int light, int dropChance, boolean wet) {
super(FabricBlockSettings.of(Material.REPLACEABLE_PLANT) super(FabricBlockSettings.of(Material.REPLACEABLE_PLANT).breakByTool(FabricToolTags.SHEARS).breakByHand(true).luminance(light).sound(wet ? SoundType.WET_GRASS : SoundType.GRASS).noCollission());
.breakByTool(FabricToolTags.SHEARS)
.breakByHand(true)
.luminance(light)
.sound(wet ? SoundType.WET_GRASS : SoundType.GRASS)
.noCollission());
this.drop = drop; this.drop = drop;
this.dropChance = dropChance; this.dropChance = dropChance;
} }
public FurBlock(ItemLike drop, int dropChance) { public FurBlock(ItemLike drop, int dropChance) {
super(FabricBlockSettings.of(Material.REPLACEABLE_PLANT) super(FabricBlockSettings.of(Material.REPLACEABLE_PLANT).breakByTool(FabricToolTags.SHEARS).breakByHand(true).sound(SoundType.GRASS).noCollission());
.breakByTool(FabricToolTags.SHEARS)
.breakByHand(true)
.sound(SoundType.GRASS)
.noCollission());
this.drop = drop; this.drop = drop;
this.dropChance = dropChance; this.dropChance = dropChance;
} }

View file

@ -337,8 +337,7 @@ public class PedestalBlock extends BaseBlockNotFull implements EntityBlock {
public boolean isPlaceable(BlockState state) { public boolean isPlaceable(BlockState state) {
if (!state.is(this)) return false; if (!state.is(this)) return false;
PedestalState currentState = state.getValue(STATE); PedestalState currentState = state.getValue(STATE);
return currentState == PedestalState.DEFAULT || return currentState == PedestalState.DEFAULT || currentState == PedestalState.PEDESTAL_TOP;
currentState == PedestalState.PEDESTAL_TOP;
} }
@Override @Override
@ -433,8 +432,7 @@ public class PedestalBlock extends BaseBlockNotFull implements EntityBlock {
@Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)
public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map<ResourceLocation, UnbakedModel> modelCache) { public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map<ResourceLocation, UnbakedModel> modelCache) {
PedestalState state = blockState.getValue(STATE); PedestalState state = blockState.getValue(STATE);
ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath() + "_" + state);
"block/" + stateId.getPath() + "_" + state);
registerBlockModel(stateId, modelId, blockState, modelCache); registerBlockModel(stateId, modelId, blockState, modelCache);
return ModelsHelper.createBlockSimple(modelId); return ModelsHelper.createBlockSimple(modelId);
} }

View file

@ -48,9 +48,7 @@ public class StoneLanternBlock extends EndLanternBlock implements IColorProvider
@Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)
public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) {
String blockName = resourceLocation.getPath(); String blockName = resourceLocation.getPath();
Optional<String> pattern = blockState.getValue(IS_FLOOR) ? Optional<String> pattern = blockState.getValue(IS_FLOOR) ? Patterns.createJson(Patterns.BLOCK_STONE_LANTERN_FLOOR, blockName, blockName) : Patterns.createJson(Patterns.BLOCK_STONE_LANTERN_CEIL, blockName, blockName);
Patterns.createJson(Patterns.BLOCK_STONE_LANTERN_FLOOR, blockName, blockName) :
Patterns.createJson(Patterns.BLOCK_STONE_LANTERN_CEIL, blockName, blockName);
return ModelsHelper.fromPattern(pattern); return ModelsHelper.fromPattern(pattern);
} }
} }

View file

@ -3,7 +3,6 @@ package ru.betterend.blocks.entities;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.BlockPos.MutableBlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ElytraItem; import net.minecraft.world.item.ElytraItem;
@ -36,7 +35,7 @@ public class BlockEntityHydrothermalVent extends BlockEntity {
clientTick(level, worldPosition, state, blockEntity); clientTick(level, worldPosition, state, blockEntity);
} }
//else { //else {
serverTick(level, worldPosition, state, blockEntity); serverTick(level, worldPosition, state, blockEntity);
//} //}
} }
} }

View file

@ -121,8 +121,7 @@ public class EndStoneSmelterBlockEntity extends BaseContainerBlockEntity impleme
return true; return true;
} }
itemStack = iterator.next(); itemStack = iterator.next();
} } while (itemStack.isEmpty());
while (itemStack.isEmpty());
return false; return false;
} }
@ -159,11 +158,9 @@ public class EndStoneSmelterBlockEntity extends BaseContainerBlockEntity impleme
protected int getSmeltTime() { protected int getSmeltTime() {
if (level == null) return 200; if (level == null) return 200;
int smeltTime = level.getRecipeManager().getRecipeFor(AlloyingRecipe.TYPE, this, level) int smeltTime = level.getRecipeManager().getRecipeFor(AlloyingRecipe.TYPE, this, level).map(AlloyingRecipe::getSmeltTime).orElse(0);
.map(AlloyingRecipe::getSmeltTime).orElse(0);
if (smeltTime == 0) { if (smeltTime == 0) {
smeltTime = level.getRecipeManager().getRecipeFor(RecipeType.BLASTING, this, level) smeltTime = level.getRecipeManager().getRecipeFor(RecipeType.BLASTING, this, level).map(BlastingRecipe::getCookingTime).orElse(200);
.map(BlastingRecipe::getCookingTime).orElse(200);
smeltTime /= 1.5; smeltTime /= 1.5;
} }
return smeltTime; return smeltTime;
@ -290,12 +287,10 @@ public class EndStoneSmelterBlockEntity extends BaseContainerBlockEntity impleme
if (recipe == null) return false; if (recipe == null) return false;
boolean validInput; boolean validInput;
if (recipe instanceof AlloyingRecipe) { if (recipe instanceof AlloyingRecipe) {
validInput = !inventory.get(0).isEmpty() && validInput = !inventory.get(0).isEmpty() && !inventory.get(1).isEmpty();
!inventory.get(1).isEmpty();
} }
else { else {
validInput = !inventory.get(0).isEmpty() || validInput = !inventory.get(0).isEmpty() || !inventory.get(1).isEmpty();
!inventory.get(1).isEmpty();
} }
if (validInput) { if (validInput) {
ItemStack result = recipe.getResultItem(); ItemStack result = recipe.getResultItem();

View file

@ -70,10 +70,8 @@ public class BetterEndClient implements ClientModInitializer {
Registry.BLOCK.forEach(block -> { Registry.BLOCK.forEach(block -> {
if (block instanceof IRenderTyped) { if (block instanceof IRenderTyped) {
BCLRenderLayer layer = ((IRenderTyped) block).getRenderLayer(); BCLRenderLayer layer = ((IRenderTyped) block).getRenderLayer();
if (layer == BCLRenderLayer.CUTOUT) if (layer == BCLRenderLayer.CUTOUT) BlockRenderLayerMap.INSTANCE.putBlock(block, cutout);
BlockRenderLayerMap.INSTANCE.putBlock(block, cutout); else if (layer == BCLRenderLayer.TRANSLUCENT) BlockRenderLayerMap.INSTANCE.putBlock(block, translucent);
else if (layer == BCLRenderLayer.TRANSLUCENT)
BlockRenderLayerMap.INSTANCE.putBlock(block, translucent);
} }
}); });
} }

View file

@ -27,8 +27,7 @@ import ru.betterend.recipe.builders.AlloyingRecipe;
public class EndStoneSmelterScreenHandler extends RecipeBookMenu<Container> { public class EndStoneSmelterScreenHandler extends RecipeBookMenu<Container> {
public final static MenuType<EndStoneSmelterScreenHandler> HANDLER_TYPE = ScreenHandlerRegistry.registerSimple( public final static MenuType<EndStoneSmelterScreenHandler> HANDLER_TYPE = ScreenHandlerRegistry.registerSimple(BetterEnd.makeID(EndStoneSmelter.ID), EndStoneSmelterScreenHandler::new);
BetterEnd.makeID(EndStoneSmelter.ID), EndStoneSmelterScreenHandler::new);
private final Container inventory; private final Container inventory;
private final ContainerData propertyDelegate; private final ContainerData propertyDelegate;

View file

@ -0,0 +1,87 @@
package ru.betterend.client.models;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.mojang.datafixers.util.Pair;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.client.resources.model.Material;
import net.minecraft.client.resources.model.ModelBakery;
import net.minecraft.client.resources.model.ModelState;
import net.minecraft.client.resources.model.SimpleBakedModel;
import net.minecraft.client.resources.model.UnbakedModel;
import net.minecraft.core.Direction;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.Nullable;
import ru.bclib.util.BlocksHelper;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.function.Function;
public class MergedModel implements UnbakedModel {
private final List<UnbakedModel> models = Lists.newArrayList();
private final UnbakedModel source;
private final BlockState state;
public MergedModel(BlockState state, UnbakedModel source) {
this.source = source;
this.state = state;
}
public void addModel(UnbakedModel model) {
models.add(model);
}
@Override
public Collection<ResourceLocation> getDependencies() {
Set<ResourceLocation> dependencies = Sets.newHashSet();
dependencies.addAll(source.getDependencies());
models.forEach(model -> dependencies.addAll(model.getDependencies()));
return dependencies;
}
@Override
public Collection<Material> getMaterials(Function<ResourceLocation, UnbakedModel> function, Set<Pair<String, String>> set) {
Set<Material> material = Sets.newHashSet();
material.addAll(source.getMaterials(function, set));
models.forEach(model -> material.addAll(model.getMaterials(function, set)));
return material;
}
@Nullable
@Override
public BakedModel bake(ModelBakery modelBakery, Function<Material, TextureAtlasSprite> function, ModelState modelState, ResourceLocation resourceLocation) {
Random random = new Random(resourceLocation.toString().hashCode());
BakedModel baked = source.bake(modelBakery, function, modelState, resourceLocation);
Map<Direction, List<BakedQuad>> map = makeMap();
List<BakedQuad> quads = Lists.newArrayList();
processModel(baked, map, quads, random);
models.forEach(model -> {
BakedModel baked2 = source.bake(modelBakery, function, modelState, resourceLocation);
processModel(baked2, map, quads, random);
});
return new SimpleBakedModel(quads, map, baked.useAmbientOcclusion(), baked.usesBlockLight(), baked.isGui3d(), baked.getParticleIcon(), baked.getTransforms(), baked.getOverrides());
}
private Map<Direction, List<BakedQuad>> makeMap() {
Map<Direction, List<BakedQuad>> map = Maps.newEnumMap(Direction.class);
for (Direction dir : BlocksHelper.DIRECTIONS) {
map.put(dir, Lists.newArrayList());
}
return map;
}
private void processModel(BakedModel model, Map<Direction, List<BakedQuad>> map, List<BakedQuad> quads, Random random) {
for (Direction dir : BlocksHelper.DIRECTIONS) {
map.get(dir).addAll(model.getQuads(state, dir, random));
}
quads.addAll(model.getQuads(state, null, random));
}
}

View file

@ -99,9 +99,7 @@ public class Patterns {
public static String createJson(Reader data, String parent, String block) { public static String createJson(Reader data, String parent, String block) {
try (BufferedReader buffer = new BufferedReader(data)) { try (BufferedReader buffer = new BufferedReader(data)) {
return buffer.lines().collect(Collectors.joining()) return buffer.lines().collect(Collectors.joining()).replace("%parent%", parent).replace("%block%", block);
.replace("%parent%", parent)
.replace("%block%", block);
} }
catch (Exception ex) { catch (Exception ex) {
return null; return null;
@ -127,8 +125,7 @@ public class Patterns {
public static Optional<String> createJson(ResourceLocation patternId, Map<String, String> textures) { public static Optional<String> createJson(ResourceLocation patternId, Map<String, String> textures) {
ResourceManager resourceManager = Minecraft.getInstance().getResourceManager(); ResourceManager resourceManager = Minecraft.getInstance().getResourceManager();
try (InputStream input = resourceManager.getResource(patternId).getInputStream()) { try (InputStream input = resourceManager.getResource(patternId).getInputStream()) {
String json = new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8)) String json = new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8)).lines().collect(Collectors.joining());
.lines().collect(Collectors.joining());
for (Entry<String, String> texture : textures.entrySet()) { for (Entry<String, String> texture : textures.entrySet()) {
json = json.replace(texture.getKey(), texture.getValue()); json = json.replace(texture.getKey(), texture.getValue());
} }

View file

@ -49,15 +49,9 @@ public class EndCrystalRenderer {
public static LayerDefinition getTexturedModelData() { public static LayerDefinition getTexturedModelData() {
MeshDefinition modelData = new MeshDefinition(); MeshDefinition modelData = new MeshDefinition();
PartDefinition modelPartData = modelData.getRoot(); PartDefinition modelPartData = modelData.getRoot();
modelPartData.addOrReplaceChild("FRAME", CubeListBuilder.create() modelPartData.addOrReplaceChild("FRAME", CubeListBuilder.create().texOffs(0, 0).addBox(-4.0f, -4.0f, -4.0f, 8.0f, 8.0f, 8.0f), PartPose.ZERO);
.texOffs(0, 0)
.addBox(-4.0f, -4.0f, -4.0f, 8.0f, 8.0f, 8.0f),
PartPose.ZERO);
modelPartData.addOrReplaceChild("CORE", CubeListBuilder.create() modelPartData.addOrReplaceChild("CORE", CubeListBuilder.create().texOffs(32, 0).addBox(-4.0f, -4.0f, -4.0f, 8.0f, 8.0f, 8.0f), PartPose.ZERO);
.texOffs(32, 0)
.addBox(-4.0f, -4.0f, -4.0f, 8.0f, 8.0f, 8.0f),
PartPose.ZERO);
return LayerDefinition.create(modelData, 64, 32); return LayerDefinition.create(modelData, 64, 32);
} }

Some files were not shown because too many files have changed in this diff Show more