diff --git a/common/addons/shortcut-blockstate-fallback/LICENSE b/common/addons/shortcut-blockstate-fallback/LICENSE new file mode 100644 index 000000000..da43ecc81 --- /dev/null +++ b/common/addons/shortcut-blockstate-fallback/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020-2025 Polyhedral Development + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/common/addons/shortcut-blockstate-fallback/build.gradle.kts b/common/addons/shortcut-blockstate-fallback/build.gradle.kts new file mode 100644 index 000000000..9d0aac37f --- /dev/null +++ b/common/addons/shortcut-blockstate-fallback/build.gradle.kts @@ -0,0 +1,5 @@ +version = version("1.0.0") + +dependencies { + compileOnlyApi(project(":common:addons:manifest-addon-loader")) +} diff --git a/common/addons/shortcut-blockstate-fallback/src/main/java/com/dfsek/terra/addons/shortcut/blockstate/BlockStateFallbackTemplate.java b/common/addons/shortcut-blockstate-fallback/src/main/java/com/dfsek/terra/addons/shortcut/blockstate/BlockStateFallbackTemplate.java new file mode 100644 index 000000000..8a15d009c --- /dev/null +++ b/common/addons/shortcut-blockstate-fallback/src/main/java/com/dfsek/terra/addons/shortcut/blockstate/BlockStateFallbackTemplate.java @@ -0,0 +1,35 @@ +package com.dfsek.terra.addons.shortcut.blockstate; + +import com.dfsek.tectonic.api.config.template.annotations.Final; +import com.dfsek.tectonic.api.config.template.annotations.Value; + +import com.dfsek.terra.api.config.AbstractableTemplate; +import com.dfsek.terra.api.config.meta.Meta; + +import java.util.List; + + +public class BlockStateFallbackTemplate implements AbstractableTemplate { + @Value("id") + @Final + private String id; + + @Value("target") + private @Meta String target; + + @Value("alternatives") + private @Meta List<@Meta String> alternatives; + + @Override + public String getID() { + return id; + } + + public String getTarget() { + return target; + } + + public List getAlternatives() { + return alternatives; + } +} diff --git a/common/addons/shortcut-blockstate-fallback/src/main/java/com/dfsek/terra/addons/shortcut/blockstate/FallbackConfigType.java b/common/addons/shortcut-blockstate-fallback/src/main/java/com/dfsek/terra/addons/shortcut/blockstate/FallbackConfigType.java new file mode 100644 index 000000000..a2adbcb99 --- /dev/null +++ b/common/addons/shortcut-blockstate-fallback/src/main/java/com/dfsek/terra/addons/shortcut/blockstate/FallbackConfigType.java @@ -0,0 +1,35 @@ +package com.dfsek.terra.addons.shortcut.blockstate; + +import com.dfsek.tectonic.api.config.template.ConfigTemplate; + +import com.dfsek.tectonic.api.exception.LoadException; + +import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.config.ConfigFactory; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.config.ConfigType; +import com.dfsek.terra.api.util.reflection.TypeKey; + + +public class FallbackConfigType implements ConfigType, ConfigFactory { + @Override + public BlockStateFallbackTemplate getTemplate(ConfigPack pack, Platform platform) { + return null; + } + + @Override + public ConfigFactory getFactory() { + return this; + } + + @Override + public TypeKey getTypeKey() { + return null; + } + + @Override + public BlockState build(BlockStateFallbackTemplate config, Platform platform) throws LoadException { + return null; + } +} diff --git a/common/addons/shortcut-blockstate-fallback/src/main/java/com/dfsek/terra/addons/shortcut/blockstate/ShortcutBlockStateFallbackAddon.java b/common/addons/shortcut-blockstate-fallback/src/main/java/com/dfsek/terra/addons/shortcut/blockstate/ShortcutBlockStateFallbackAddon.java new file mode 100644 index 000000000..fac98e382 --- /dev/null +++ b/common/addons/shortcut-blockstate-fallback/src/main/java/com/dfsek/terra/addons/shortcut/blockstate/ShortcutBlockStateFallbackAddon.java @@ -0,0 +1,31 @@ +package com.dfsek.terra.addons.shortcut.blockstate; + +import com.dfsek.terra.addons.manifest.api.AddonInitializer; +import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.addon.BaseAddon; +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; +import com.dfsek.terra.api.inject.annotations.Inject; +import com.dfsek.terra.api.world.chunk.generation.util.Palette; + + +public class ShortcutBlockStateFallbackAddon implements AddonInitializer { + @Inject + private BaseAddon addon; + @Inject + private Platform platform; + + @Override + public void initialize() { + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(addon, ConfigPackPreLoadEvent.class) + .then(event -> event.getPack() + .registerShortcut(Palette.class, "FALLBACK", + (configLoader, input, tracker) -> new SingletonPalette( + configLoader.loadType(BlockState.class, input, tracker)))) + .failThrough(); + + } +} diff --git a/common/addons/shortcut-blockstate-fallback/src/main/resources/terra.addon.yml b/common/addons/shortcut-blockstate-fallback/src/main/resources/terra.addon.yml new file mode 100644 index 000000000..c7c92d787 --- /dev/null +++ b/common/addons/shortcut-blockstate-fallback/src/main/resources/terra.addon.yml @@ -0,0 +1,12 @@ +schema-version: 1 +contributors: + - Terra contributors +id: shortcut-blockstate-fallback +version: @VERSION@ +entrypoints: + - "com.dfsek.terra.addons.shortcut.blockstate.ShortcutBlockstateFallbackAddon" +website: + issues: https://github.com/PolyhedralDev/Terra/issues + source: https://github.com/PolyhedralDev/Terra + docs: https://terra.polydev.org +license: MIT License \ No newline at end of file