Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WoodType compat #410

Merged
merged 3 commits into from
Oct 29, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
WoodType compat
  • Loading branch information
millennIumAMbiguity committed Oct 1, 2024
commit 03440062eaf0039c591af9c93ecbf30a8193223f
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package org.valkyrienskies.eureka.block

import net.minecraft.world.level.block.Block

public interface IWoodType {

fun getWood(): Block

fun getPlanks(): Block

fun getSerializedName(): String

}
Original file line number Diff line number Diff line change
@@ -34,7 +34,7 @@ import org.valkyrienskies.mod.common.ValkyrienSkiesMod
import org.valkyrienskies.mod.common.getShipManagingPos
import org.valkyrienskies.mod.common.getShipObjectManagingPos

class ShipHelmBlock(properties: Properties, val woodType: WoodType) : BaseEntityBlock(properties) {
class ShipHelmBlock(properties: Properties, val woodType: IWoodType) : BaseEntityBlock(properties) {
val HELM_BASE = RotShapes.box(2.0, 0.0, 2.0, 14.0, 2.0, 14.0)
val HELM_POLE = RotShapes.box(4.0, 2.0, 5.0, 12.0, 13.0, 13.0)

28 changes: 14 additions & 14 deletions common/src/main/kotlin/org/valkyrienskies/eureka/block/WoodType.kt
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
package org.valkyrienskies.eureka.block

import net.minecraft.resources.ResourceLocation
import net.minecraft.util.StringRepresentable
import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.Blocks

// TODO mod compat
public enum class WoodType(final val logBlock: Block, final val plankBlock: Block) : StringRepresentable, IWoodType {
OAK(Blocks.OAK_LOG, Blocks.OAK_PLANKS),
SPRUCE(Blocks.SPRUCE_LOG, Blocks.SPRUCE_PLANKS),
BIRCH(Blocks.BIRCH_LOG, Blocks.BIRCH_PLANKS),
JUNGLE(Blocks.JUNGLE_LOG, Blocks.JUNGLE_PLANKS),
ACACIA(Blocks.ACACIA_LOG, Blocks.ACACIA_PLANKS),
DARK_OAK(Blocks.DARK_OAK_LOG, Blocks.DARK_OAK_PLANKS),
CRIMSON(Blocks.CRIMSON_STEM, Blocks.CRIMSON_PLANKS),
WARPED(Blocks.WARPED_STEM, Blocks.WARPED_PLANKS);

enum class WoodType(val resourceName: String) : StringRepresentable {
OAK("oak"),
SPRUCE("spruce"),
BIRCH("birch"),
JUNGLE("jungle"),
ACACIA("acacia"),
DARK_OAK("dark_oak"),
WARPED("warped"),
CRIMSON("crimson");
override fun getSerializedName(): String = name.lowercase()

val textureLocationPlanks get() = ResourceLocation("minecraft:block/${resourceName}_planks")
val textureLocationLog get() = ResourceLocation("minecraft:block/${resourceName}_log")
override fun getWood(): Block = logBlock

override fun getSerializedName(): String = resourceName
override fun getPlanks(): Block = plankBlock
}
Original file line number Diff line number Diff line change
@@ -9,6 +9,7 @@ import net.minecraft.client.resources.model.BakedModel
import net.minecraft.world.level.block.entity.BlockEntity
import net.minecraft.world.level.block.state.StateHolder
import net.minecraft.world.level.block.state.properties.EnumProperty
import org.valkyrienskies.eureka.block.IWoodType
import org.valkyrienskies.eureka.block.ShipHelmBlock
import org.valkyrienskies.eureka.block.WoodType
import java.util.function.Function
@@ -53,14 +54,14 @@ object WheelModels {
matrixStack.popPose()
}

fun setModelGetter(getter: Function<WoodType, BakedModel>) {
fun setModelGetter(getter: Function<IWoodType, BakedModel>) {
models.values.forEach { it.getter = getter::apply }
}

class WheelModel(type: WoodType) :
StateHolder<WheelModels, WheelModel>(WheelModels, ImmutableMap.of(property, type), null) {

var getter: (WoodType) -> BakedModel = { throw IllegalStateException("Getter not set") }
var getter: (IWoodType) -> BakedModel = { throw IllegalStateException("Getter not set") }

val model by lazy { getter(type) }
}
Original file line number Diff line number Diff line change
@@ -58,7 +58,7 @@ public void onInitializeClient() {
for (final WoodType woodType : WoodType.values()) {
out.accept(new ResourceLocation(
EurekaMod.MOD_ID,
"block/" + woodType.getResourceName() + "_ship_helm_wheel"
"block/" + woodType.getSerializedName().toLowerCase() + "_ship_helm_wheel"
));
}
});
@@ -67,7 +67,7 @@ public void onInitializeClient() {
BakedModelManagerHelper.getModel(Minecraft.getInstance().getModelManager(),
new ResourceLocation(
EurekaMod.MOD_ID,
"block/" + woodType.getResourceName() + "_ship_helm_wheel"
"block/" + woodType.getSerializedName().toLowerCase() + "_ship_helm_wheel"
)));
}
}
Original file line number Diff line number Diff line change
@@ -17,6 +17,7 @@ import org.valkyrienskies.eureka.EurekaConfig
import org.valkyrienskies.eureka.EurekaMod
import org.valkyrienskies.eureka.EurekaMod.init
import org.valkyrienskies.eureka.EurekaMod.initClient
import org.valkyrienskies.eureka.block.IWoodType
import org.valkyrienskies.eureka.block.WoodType
import org.valkyrienskies.eureka.blockentity.renderer.ShipHelmBlockEntityRenderer
import org.valkyrienskies.eureka.blockentity.renderer.WheelModels.setModelGetter
@@ -66,13 +67,13 @@ class EurekaModForge {
}
happendClientSetup = true
initClient()
setModelGetter { woodType: WoodType ->
setModelGetter { woodType: IWoodType ->
ForgeModelBakery.instance()!!
.bakedTopLevelModels
.getOrDefault(
ResourceLocation(
EurekaMod.MOD_ID,
"block/" + woodType.resourceName + "_ship_helm_wheel"
"block/" + woodType.getSerializedName().lowercase() + "_ship_helm_wheel"
),
Minecraft.getInstance().modelManager.missingModel
)
@@ -91,7 +92,7 @@ class EurekaModForge {
for (woodType in WoodType.values()) {
ForgeModelBakery.addSpecialModel(
ResourceLocation(
EurekaMod.MOD_ID, "block/" + woodType.resourceName + "_ship_helm_wheel"
EurekaMod.MOD_ID, "block/" + woodType.getSerializedName().lowercase() + "_ship_helm_wheel"
)
)
}
Loading
Oops, something went wrong.