59 lines
2.8 KiB
Java
59 lines
2.8 KiB
Java
// Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
|
|
//
|
|
// SPDX-License-Identifier: LicenseRef-CCPL
|
|
|
|
package dan200.computercraft.client.turtle;
|
|
|
|
import dan200.computercraft.api.ComputerCraftAPI;
|
|
import dan200.computercraft.api.client.TransformedModel;
|
|
import dan200.computercraft.api.client.turtle.TurtleUpgradeModeller;
|
|
import dan200.computercraft.api.turtle.ITurtleAccess;
|
|
import dan200.computercraft.api.turtle.TurtleSide;
|
|
import dan200.computercraft.shared.ModRegistry;
|
|
import dan200.computercraft.shared.turtle.upgrades.TurtleModem;
|
|
import net.minecraft.core.component.DataComponentPatch;
|
|
import net.minecraft.resources.ResourceLocation;
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
import java.util.Collection;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* A {@link TurtleUpgradeModeller} for modems, providing different models depending on if the modem is on/off.
|
|
*/
|
|
public class TurtleModemModeller implements TurtleUpgradeModeller<TurtleModem> {
|
|
private final ResourceLocation leftOffModel;
|
|
private final ResourceLocation rightOffModel;
|
|
private final ResourceLocation leftOnModel;
|
|
private final ResourceLocation rightOnModel;
|
|
|
|
public TurtleModemModeller(boolean advanced) {
|
|
if (advanced) {
|
|
leftOffModel = new ResourceLocation(ComputerCraftAPI.MOD_ID, "block/turtle_modem_advanced_off_left");
|
|
rightOffModel = new ResourceLocation(ComputerCraftAPI.MOD_ID, "block/turtle_modem_advanced_off_right");
|
|
leftOnModel = new ResourceLocation(ComputerCraftAPI.MOD_ID, "block/turtle_modem_advanced_on_left");
|
|
rightOnModel = new ResourceLocation(ComputerCraftAPI.MOD_ID, "block/turtle_modem_advanced_on_right");
|
|
} else {
|
|
leftOffModel = new ResourceLocation(ComputerCraftAPI.MOD_ID, "block/turtle_modem_normal_off_left");
|
|
rightOffModel = new ResourceLocation(ComputerCraftAPI.MOD_ID, "block/turtle_modem_normal_off_right");
|
|
leftOnModel = new ResourceLocation(ComputerCraftAPI.MOD_ID, "block/turtle_modem_normal_on_left");
|
|
rightOnModel = new ResourceLocation(ComputerCraftAPI.MOD_ID, "block/turtle_modem_normal_on_right");
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public TransformedModel getModel(TurtleModem upgrade, @Nullable ITurtleAccess turtle, TurtleSide side, DataComponentPatch data) {
|
|
var component = data.get(ModRegistry.DataComponents.ON.get());
|
|
var active = component != null && component.isPresent() && component.get();
|
|
|
|
return side == TurtleSide.LEFT
|
|
? TransformedModel.of(active ? leftOnModel : leftOffModel)
|
|
: TransformedModel.of(active ? rightOnModel : rightOffModel);
|
|
}
|
|
|
|
@Override
|
|
public Collection<ResourceLocation> getDependencies() {
|
|
return List.of(leftOffModel, rightOffModel, leftOnModel, rightOnModel);
|
|
}
|
|
}
|