Skip to content

Commit

Permalink
Fix azalea trees
Browse files Browse the repository at this point in the history
  • Loading branch information
quat1024 committed Nov 27, 2023
1 parent c401f74 commit 74d03cd
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,44 +9,36 @@
import net.minecraft.world.level.material.MapColor;
import org.violetmoon.quark.base.handler.WoodSetHandler;
import org.violetmoon.quark.base.handler.WoodSetHandler.WoodSet;
import org.violetmoon.quark.base.util.registryaccess.RegistryAccessUtil;
import org.violetmoon.zeta.event.bus.LoadEvent;
import org.violetmoon.zeta.event.load.ZAddReloadListener;
import org.violetmoon.zeta.event.load.ZRegister;
import org.violetmoon.zeta.module.ZetaLoadModule;
import org.violetmoon.zeta.module.ZetaModule;

@ZetaLoadModule(category = "world", antiOverlap = { "caverns_and_chasms" })
public class AzaleaWoodModule extends ZetaModule {

public static WoodSet woodSet;
private WoodSet woodSet;

@LoadEvent
public final void register(ZRegister event) {
woodSet = WoodSetHandler.addWoodSet(event, this, "azalea", MapColor.COLOR_LIGHT_GREEN, MapColor.COLOR_BROWN, true);
//ugly I know but config is fired before this now
//TODO: not actually fired by the config lol
enabledStatusChanged(true, this.enabled);
}

@SuppressWarnings("unchecked")
public void enabledStatusChanged(boolean firstLoad, boolean newStatus) {
ConfiguredFeature<TreeConfiguration, ?> configured = null;
try {
// Complains about unchecked casts but... it works :)
configured = (ConfiguredFeature<TreeConfiguration, ?>) RegistryAccessUtil.getRegistryAccess()
.registryOrThrow(Registries.CONFIGURED_FEATURE).getOrThrow(TreeFeatures.AZALEA_TREE);
} catch(IllegalStateException e) {
e.printStackTrace();
}

if(configured != null) {
TreeConfiguration config = configured.config();

if(newStatus && woodSet != null)
config.trunkProvider = BlockStateProvider.simple(woodSet.log);
else if(!firstLoad)
config.trunkProvider = BlockStateProvider.simple(Blocks.OAK_LOG);
}
@LoadEvent
public final void onServerReload(ZAddReloadListener e) {
ConfiguredFeature<?, ?> azaleaFeature = e.getRegistryAccess()
.registry(Registries.CONFIGURED_FEATURE)
.flatMap(reg -> reg.getOptional(TreeFeatures.AZALEA_TREE))
.orElse(null);

if(woodSet == null || azaleaFeature == null || !(azaleaFeature.config() instanceof TreeConfiguration treeConfig))
return; // Maybe we interacted with the RegistryAccess too early?

if(enabled)
treeConfig.trunkProvider = BlockStateProvider.simple(woodSet.log);
else
treeConfig.trunkProvider = BlockStateProvider.simple(Blocks.OAK_LOG);
}

}
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package org.violetmoon.zeta.event.load;

import net.minecraft.core.RegistryAccess;
import org.violetmoon.zeta.event.bus.IZetaLoadEvent;

import net.minecraft.server.ReloadableServerResources;
import net.minecraft.server.packs.resources.PreparableReloadListener;

public interface ZAddReloadListener extends IZetaLoadEvent {
ReloadableServerResources getServerResources();
RegistryAccess getRegistryAccess();
void addListener(PreparableReloadListener listener);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.violetmoon.zetaimplforge.event.load;

import net.minecraft.core.RegistryAccess;
import org.violetmoon.zeta.event.load.ZAddReloadListener;

import net.minecraft.server.ReloadableServerResources;
Expand All @@ -18,4 +19,7 @@ public ForgeZAddReloadListener(AddReloadListenerEvent e) {

@Override
public ReloadableServerResources getServerResources() {return e.getServerResources();}

@Override
public RegistryAccess getRegistryAccess() { return e.getRegistryAccess(); }
}

0 comments on commit 74d03cd

Please sign in to comment.