Make it compile

This commit is contained in:
DBotThePony 2022-08-19 01:13:37 +07:00
parent f615173f2b
commit 63fd92a704
Signed by: DBot
GPG Key ID: DCC23B5715498507
103 changed files with 538 additions and 479 deletions

View File

@ -14,7 +14,7 @@ import net.minecraftforge.common.Tags
import net.minecraftforge.common.loot.LootTableIdCondition
import net.minecraftforge.eventbus.api.SubscribeEvent
import net.minecraftforge.fml.common.Mod
import net.minecraftforge.forge.event.lifecycle.GatherDataEvent
import net.minecraftforge.data.event.GatherDataEvent
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.block.*
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerState
@ -34,6 +34,7 @@ import ru.dbotthepony.mc.otm.datagen.models.BlockMatteryModelProvider
import ru.dbotthepony.mc.otm.datagen.recipes.MatteryRecipeProvider
import ru.dbotthepony.mc.otm.datagen.recipes.has
import ru.dbotthepony.mc.otm.registry.*
import ru.dbotthepony.mc.otm.*
@Mod.EventBusSubscriber(modid = DataGen.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
object DataGen {
@ -150,14 +151,14 @@ object DataGen {
AddEnglishLanguage(languageProvider)
event.generator.addProvider(blockModelProvider)
event.generator.addProvider(itemModelProvider)
event.generator.addProvider(blockStateProvider)
event.generator.addProvider(recipeProvider)
event.generator.addProvider(MatterBankProvider(event))
event.generator.addProvider(BatteryBankProvider(event))
event.generator.addProvider(lootTableProvider)
event.generator.addProvider(lootModifier)
event.generator.addProvider(true, blockModelProvider)
event.generator.addProvider(true, itemModelProvider)
event.generator.addProvider(true, blockStateProvider)
event.generator.addProvider(true, recipeProvider)
event.generator.addProvider(true, MatterBankProvider(event))
event.generator.addProvider(true, BatteryBankProvider(event))
event.generator.addProvider(true, lootTableProvider)
event.generator.addProvider(true, lootModifier)
decorativeCubeAll(MBlocks.CRATE_LIST)
decorativeCubeAll(MBlocks.CARBON_FIBRE_BLOCK)
@ -696,37 +697,37 @@ object DataGen {
}
lootModifier.lambda {
it.add("dungeon_pill", LootTableBasicAppender.Companion, LootTableBasicAppender(
it.add("dungeon_pill", LootTableBasicAppender(
arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/simple_dungeon")).build()),
ItemStack(MItems.PILL_ANDROID, 1) to 0.1,
ItemStack(MItems.PILL_HEAL, 2) to 0.5,
))
it.add("mineshaft_pill", LootTableBasicAppender.Companion, LootTableBasicAppender(
it.add("mineshaft_pill", LootTableBasicAppender(
arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/abandoned_mineshaft")).build()),
ItemStack(MItems.PILL_ANDROID, 1) to 0.1,
ItemStack(MItems.PILL_HEAL, 1) to 0.25,
))
it.add("desert_pyramid_pill", LootTableBasicAppender.Companion, LootTableBasicAppender(
it.add("desert_pyramid_pill", LootTableBasicAppender(
arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/abandoned_mineshaft")).build()),
ItemStack(MItems.PILL_ANDROID, 1) to 0.05,
ItemStack(MItems.PILL_HEAL, 1) to 0.3,
))
it.add("jungle_temple_pill", LootTableBasicAppender.Companion, LootTableBasicAppender(
it.add("jungle_temple_pill", LootTableBasicAppender(
arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/jungle_temple")).build()),
ItemStack(MItems.PILL_ANDROID, 1) to 0.1
))
it.add("end_city_pill", LootTableBasicAppender.Companion, LootTableBasicAppender(
it.add("end_city_pill", LootTableBasicAppender(
arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/end_city_treasure")).build()),
ItemStack(MItems.PILL_ANDROID, 1) to 0.1,
ItemStack(MItems.PILL_HUMANE, 1) to 0.2,
ItemStack(MItems.PILL_OBLIVION, 1) to 0.4,
))
it.add("shipwreck_supply_pill", LootTableBasicAppender.Companion, LootTableBasicAppender(
it.add("shipwreck_supply_pill", LootTableBasicAppender(
arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/shipwreck_supply")).build()),
ItemStack(MItems.PILL_HUMANE, 1) to 0.3
))

View File

@ -4,7 +4,8 @@ import com.google.common.collect.ImmutableList
import com.google.common.collect.ImmutableMap
import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap
import net.minecraft.data.DataGenerator
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.network.chat.MutableComponent
import net.minecraft.network.chat.contents.TranslatableContents
import net.minecraft.world.effect.MobEffect
import net.minecraft.world.entity.EntityType
import net.minecraft.world.item.Item
@ -20,8 +21,12 @@ import ru.dbotthepony.mc.otm.registry.ColoredDecorativeBlock
private fun researchString(key: AndroidResearchType<*>): String {
val displayName = key.displayName
if (displayName is TranslatableComponent) {
return displayName.key
if (displayName is MutableComponent) {
val content = displayName.contents
if (content is TranslatableContents) {
return content.key
}
}
return key.displayId
@ -30,7 +35,7 @@ private fun researchString(key: AndroidResearchType<*>): String {
class MatteryLanguageProvider(private val gen: DataGenerator) {
private inner class Slave(language: String) : LanguageProvider(gen, OverdriveThatMatters.MOD_ID, language) {
init {
gen.addProvider(this)
gen.addProvider(true, this)
}
override fun addTranslations() {}

View File

@ -3,7 +3,7 @@ package ru.dbotthepony.mc.otm.datagen.blocks
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.level.block.Block
import net.minecraftforge.client.model.generators.BlockStateProvider
import net.minecraftforge.forge.event.lifecycle.GatherDataEvent
import net.minecraftforge.data.event.GatherDataEvent
import ru.dbotthepony.mc.otm.block.BatteryBankBlock
import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock
import ru.dbotthepony.mc.otm.datagen.DataGen

View File

@ -5,13 +5,14 @@ import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.client.model.generators.BlockStateProvider
import net.minecraftforge.client.model.generators.ConfiguredModel
import net.minecraftforge.forge.event.lifecycle.GatherDataEvent
import net.minecraftforge.data.event.GatherDataEvent
import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerState
import ru.dbotthepony.mc.otm.datagen.DataGen
import ru.dbotthepony.mc.otm.datagen.getValueNullable
import ru.dbotthepony.mc.otm.datagen.toXRotBlockstate
import ru.dbotthepony.mc.otm.datagen.toYRotBlockstate
import ru.dbotthepony.mc.otm.registryName
typealias AdvancedBlockStateFunction = (BlockState, ConfiguredModel.Builder<*>, String) -> String?
private data class AdvancedBlockStateEntry(val block: Block, val func: AdvancedBlockStateFunction)

View File

@ -3,9 +3,10 @@ package ru.dbotthepony.mc.otm.datagen.items
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.item.Item
import net.minecraftforge.client.model.generators.ItemModelProvider
import net.minecraftforge.forge.event.lifecycle.GatherDataEvent
import net.minecraftforge.data.event.GatherDataEvent
import org.apache.logging.log4j.LogManager
import ru.dbotthepony.mc.otm.datagen.DataGen
import ru.dbotthepony.mc.otm.registryName
private data class SimpleItemModel(val item: String, val path: ResourceLocation) {
val traceback = IllegalArgumentException("Failed to register model")

View File

@ -6,8 +6,9 @@ import net.minecraft.resources.ResourceLocation
import net.minecraft.server.packs.PackType
import net.minecraft.world.level.block.Block
import net.minecraftforge.client.model.generators.ModelProvider
import net.minecraftforge.forge.event.lifecycle.GatherDataEvent
import net.minecraftforge.data.event.GatherDataEvent
import ru.dbotthepony.mc.otm.datagen.DataGen
import ru.dbotthepony.mc.otm.registryName
private typealias Callback = (MatteryModelProvider) -> Unit
@ -26,7 +27,7 @@ sealed class MatteryModelProvider(event: GatherDataEvent, folder: String) : Mode
return factory.apply(destinationLocation).also {
generatedModels[destinationLocation] = it
val resource = existingFileHelper.getResource(sourceLocation, PackType.CLIENT_RESOURCES)
val stream = resource.inputStream
val stream = resource.open()
val reader = stream.reader()
try {

View File

@ -8,7 +8,6 @@ import net.minecraft.data.DataGenerator
import net.minecraft.data.recipes.FinishedRecipe
import net.minecraft.data.recipes.RecipeProvider
import net.minecraft.resources.ResourceLocation
import net.minecraft.tags.Tag
import net.minecraft.tags.TagKey
import net.minecraft.world.item.Item
import net.minecraft.world.item.crafting.Ingredient

View File

@ -48,7 +48,6 @@ public final class OverdriveThatMatters {
public static final Logger LOGGER = LogManager.getLogger();
public static OverdriveThatMatters INSTANCE;
public AndroidGui ANDROID_GUI;
private StorageStackType<ItemStackWrapper> ITEM_STORAGE;
public StorageStackType<ItemStackWrapper> ITEM_STORAGE() {
@ -120,9 +119,7 @@ public final class OverdriveThatMatters {
}
private void setupClient(final FMLClientSetupEvent event) {
ANDROID_GUI = new AndroidGui();
MinecraftForge.EVENT_BUS.register(ANDROID_GUI);
MinecraftForge.EVENT_BUS.register(AndroidGui.class);
MinecraftForge.EVENT_BUS.register(AndroidGui.INSTANCE);
MinecraftForge.EVENT_BUS.register(EventHandlerKt.class);
TritaniumArmorModel.register();

View File

@ -11,6 +11,7 @@ import net.minecraft.world.item.Items;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.ForgeRegistry;
import net.minecraftforge.registries.RegistryManager;
import ru.dbotthepony.mc.otm.UnOverengineeringKt;
import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
@ -73,7 +74,7 @@ public record MatterTask(UUID id, @Nullable UUID pattern, Item item, int in_prog
tag.putLong("pattern_u", pattern.getMostSignificantBits());
}
tag.putString("item", Objects.requireNonNull(item.getRegistryName()).toString());
tag.putString("item", Objects.requireNonNull(UnOverengineeringKt.getRegistryName(item)).toString());
tag.putInt("in_progress", in_progress);
tag.putInt("finished", finished);
tag.putInt("required", required);

View File

@ -9,6 +9,7 @@ import net.minecraft.world.item.ItemStack;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.ForgeRegistry;
import net.minecraftforge.registries.RegistryManager;
import ru.dbotthepony.mc.otm.UnOverengineeringKt;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@ -44,7 +45,7 @@ public record PatternState(@Nonnull UUID id, @Nonnull Item item, double research
tag.putLong("id_m", id.getMostSignificantBits());
tag.putLong("id_l", id.getLeastSignificantBits());
tag.putString("item", Objects.requireNonNull(item.getRegistryName()).toString());
tag.putString("item", Objects.requireNonNull(UnOverengineeringKt.getRegistryName(item)).toString());
tag.putDouble("research_percent", research);
return tag;

View File

@ -1,192 +0,0 @@
package ru.dbotthepony.mc.otm.client;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.screens.DeathScreen;
import net.minecraft.client.gui.screens.InBedChatScreen;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraftforge.client.event.ScreenEvent;
import net.minecraftforge.client.event.ScreenOpenEvent;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.client.gui.ForgeIngameGui;
import net.minecraftforge.eventbus.api.EventPriority;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import ru.dbotthepony.mc.otm.OverdriveThatMatters;
import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer;
import ru.dbotthepony.mc.otm.capability.android.IAndroidCapability;
import ru.dbotthepony.mc.otm.capability.MatteryCapability;
import java.util.Optional;
import java.util.Random;
public class AndroidGui {
private static final Minecraft mc = Minecraft.getInstance();
private final ForgeIngameGui gui = mc.gui instanceof ForgeIngameGui ? (ForgeIngameGui) mc.gui : null;
public static final ResourceLocation PLAYER_GUI_LOCATION = new ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/gui/player_gui.png");
private AndroidCapabilityPlayer last_state;
private static int known_button_x = -1;
private static int known_button_y = -1;
private static Button known_button;
private static InBedChatScreen known_button_screen;
private static final Random button_shaker = new Random();
@SubscribeEvent(priority = EventPriority.NORMAL)
@SuppressWarnings("unused")
public void onTick(ScreenEvent.DrawScreenEvent.Pre event) {
if (known_button_screen != null && known_button == null) {
for (var widget : known_button_screen.renderables) {
if (widget instanceof Button btn) {
known_button_x = btn.x;
known_button_y = btn.y;
known_button = btn;
break;
}
}
if (known_button == null) {
known_button_screen = null;
}
}
if (known_button_screen != null && known_button_screen != mc.screen) {
known_button_x = -1;
known_button_y = -1;
known_button = null;
known_button_screen = null;
}
if (known_button_screen == null || mc.player == null) {
return;
}
mc.player.getCapability(MatteryCapability.ANDROID).ifPresent(cap -> {
if (!((AndroidCapabilityPlayer) cap).getWillBecomeAndroid()) {
known_button.x = known_button_x;
known_button.y = known_button_y;
known_button_x = -1;
known_button_y = -1;
known_button = null;
known_button_screen = null;
return;
}
int dispersion = (int) ((10.0 * Math.max(0, ((AndroidCapabilityPlayer) cap).getSleepTicks() - 20)) / (AndroidCapabilityPlayer.SLEEP_TICKS_LIMIT - 20));
known_button.x = known_button_x - dispersion / 2 + (int) (button_shaker.nextDouble() * dispersion);
known_button.y = known_button_y - dispersion / 2 + (int) (button_shaker.nextDouble() * dispersion);
});
}
@SubscribeEvent(priority = EventPriority.LOWEST)
@SuppressWarnings("unused")
public static void onOpenGUI(ScreenOpenEvent event) {
known_button_x = -1;
known_button_y = -1;
known_button = null;
known_button_screen = null;
if (mc.player == null)
return;
if (event.getScreen() instanceof DeathScreen screen) {
mc.player.getCapability(MatteryCapability.ANDROID).ifPresent(cap -> {
if (cap.isAndroid())
screen.title = new TranslatableComponent("otm.death_reason");
});
}
if (event.getScreen() instanceof InBedChatScreen screen) {
known_button_screen = screen;
mc.player.getCapability(MatteryCapability.ANDROID).ifPresent(cap -> {
if (((AndroidCapabilityPlayer) cap).getWillBecomeAndroid()) {
known_button_screen = screen;
}
});
}
}
private static final Logger LOGGER = LogManager.getLogger();
@SubscribeEvent(priority = EventPriority.HIGH)
@SuppressWarnings("unused")
public void onLayerRenderEvent(RenderGameOverlayEvent.PreLayer event) {
if (event.getOverlay() != ForgeIngameGui.FOOD_LEVEL_ELEMENT && event.getOverlay() != ForgeIngameGui.AIR_LEVEL_ELEMENT)
return;
LocalPlayer ply = mc.player;
if (ply == null)
return;
if (
ply.getVehicle() instanceof LivingEntity ||
mc.options.hideGui ||
!mc.gameMode.canHurtPlayer() ||
!(mc.getCameraEntity() instanceof Player)
)
return;
Optional<IAndroidCapability> lazy = ply.getCapability(MatteryCapability.ANDROID).resolve();
AndroidCapabilityPlayer android = null;
if (lazy.isPresent()) {
android = (AndroidCapabilityPlayer) lazy.get();
} else if (!ply.isAlive()) {
android = last_state;
}
if (android != null && android.isAndroid() && mc.gui instanceof ForgeIngameGui gui) {
event.setCanceled(true);
last_state = android;
if (event.getOverlay() == ForgeIngameGui.AIR_LEVEL_ELEMENT) {
return;
}
int y_offset = ply.hasEffect(MobEffects.HUNGER) ? 18 : 0;
float level;
if (android.getMaxBatteryLevel().isZero()) {
level = 0f;
} else {
level = android.getBatteryLevel().div(android.getMaxBatteryLevel()).toFloat();
if (level >= 0.98f)
level = 1f;
}
gui.setupOverlayRenderState(true, false);
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
RenderSystem.setShaderTexture(0, PLAYER_GUI_LOCATION);
int width = event.getWindow().getGuiScaledWidth();
int height = event.getWindow().getGuiScaledHeight();
int left = width / 2 + 10;
int top = height - gui.right_height;
gui.right_height += 10;
// Stack, x, y, blitOffset?, (float) image_x, (float) image_y, rect_x, rect_y, total_image_width, total_image_height
// Stack, x, y, image_x, image_y, rect_x, rect_y
gui.blit(event.getMatrixStack(), left, top, 0, y_offset, 80, 9);
int shift_left = (int) Math.ceil(level * 79f - 0.5f);
gui.blit(event.getMatrixStack(), left + 79 - shift_left, top, 79 - shift_left, y_offset + 9, shift_left, 9);
}
}
}

View File

@ -80,8 +80,8 @@ public class RenderHelper {
builder.vertex(matrix, x + width, y + height, depth_z).uv(u1, v1).endVertex();
builder.vertex(matrix, x + width, y, depth_z).uv(u1, v0).endVertex();
builder.vertex(matrix, x, y, depth_z).uv(u0, v0).endVertex();
builder.end();
BufferUploader.end(builder);
BufferUploader.draw(builder.end());
}
public static void drawTexturedRectUV(
@ -143,8 +143,7 @@ public class RenderHelper {
}
}
builder.end();
BufferUploader.end(builder);
BufferUploader.draw(builder.end());
}
public static void colorSphere(PoseStack stack, float radius) {

View File

@ -3,8 +3,6 @@ package ru.dbotthepony.mc.otm.client.screen;
import net.minecraft.ChatFormatting;
import net.minecraft.client.gui.components.EditBox;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.item.ItemStack;
import ru.dbotthepony.mc.otm.capability.matter.MatterTask;
@ -19,6 +17,9 @@ import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
import static ru.dbotthepony.mc.otm.UnOverengineeringKt.TextComponent;
import static ru.dbotthepony.mc.otm.UnOverengineeringKt.TranslatableComponent;
public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
private static final int MODAL_WIDTH = 213;
private static final int MODAL_HEIGHT = 110;
@ -190,22 +191,22 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
}
private List<Component> getTaskTooltip(List<Component> input, MatterTask task) {
input.add(new TranslatableComponent("otm.gui.matter_task.total", task.total()).withStyle(ChatFormatting.GRAY));
input.add(new TranslatableComponent("otm.gui.matter_task.required", task.required()).withStyle(ChatFormatting.GRAY));
input.add(new TranslatableComponent("otm.gui.matter_task.in_progress", task.in_progress()).withStyle(ChatFormatting.GRAY));
input.add(new TranslatableComponent("otm.gui.matter_task.finished", task.finished()).withStyle(ChatFormatting.GRAY));
input.add(TranslatableComponent("otm.gui.matter_task.total", task.total()).withStyle(ChatFormatting.GRAY));
input.add(TranslatableComponent("otm.gui.matter_task.required", task.required()).withStyle(ChatFormatting.GRAY));
input.add(TranslatableComponent("otm.gui.matter_task.in_progress", task.in_progress()).withStyle(ChatFormatting.GRAY));
input.add(TranslatableComponent("otm.gui.matter_task.finished", task.finished()).withStyle(ChatFormatting.GRAY));
return input;
}
private List<Component> getPatternTooltip(List<Component> input, PatternState pattern) {
input.add(new TranslatableComponent("otm.item.pattern.research", String.format("%.2f", pattern.research() * 100d)).withStyle(ChatFormatting.AQUA));
input.add(TranslatableComponent("otm.item.pattern.research", String.format("%.2f", pattern.research() * 100d)).withStyle(ChatFormatting.AQUA));
return input;
}
private void openTask(MatterTask task) {
var task_frame = new FramePanel(this, null, 0, 0, 170, 40, new TranslatableComponent("otm.container.matter_panel.task")) {
var task_frame = new FramePanel(this, null, 0, 0, 170, 40, TranslatableComponent("otm.container.matter_panel.task")) {
@Override
public void tick() {
super.tick();
@ -246,12 +247,12 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
slot.setDock(Dock.LEFT);
var button = new ButtonPanel(this, task_frame, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.close"));
var button = new ButtonPanel(this, task_frame, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.close"));
button.setDock(Dock.RIGHT);
button.setDockMargin(2, 0, 0, 0);
button.bind(task_frame::remove);
button = new ButtonPanel(this, task_frame, 0, 0, 80, 20, new TranslatableComponent("otm.container.matter_panel.cancel_task"));
button = new ButtonPanel(this, task_frame, 0, 0, 80, 20, TranslatableComponent("otm.container.matter_panel.cancel_task"));
button.setDock(Dock.RIGHT);
button.setDockMargin(2, 0, 0, 0);
button.bind(() -> {
@ -264,7 +265,7 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
}
private void openPattern(PatternState state) {
var pattern_frame = new FramePanel(this, null, 0, 0, MODAL_WIDTH, MODAL_HEIGHT, new TranslatableComponent("otm.container.matter_panel.label")){
var pattern_frame = new FramePanel(this, null, 0, 0, MODAL_WIDTH, MODAL_HEIGHT, TranslatableComponent("otm.container.matter_panel.label")){
@Override
public void tick() {
super.tick();
@ -309,7 +310,7 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
}
};
var input_amount = new EditBoxPanel(this, row_2, 0, 0, 10, 20, new TextComponent("Input amount")) {
var input_amount = new EditBoxPanel(this, row_2, 0, 0, 10, 20, TextComponent("Input amount")) {
@Override
protected void configureNew(@Nonnull EditBox widget, boolean recreation) {
super.configureNew(widget, recreation);
@ -337,17 +338,17 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
}
};
var button = new ButtonPanel(this, row_1, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.increase_by", 8));
var button = new ButtonPanel(this, row_1, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.increase_by", 8));
button.bind(() -> input_amount.increase(8));
button.setDock(Dock.RIGHT);
button.setDockMargin(2, 0, 0, 0);
button = new ButtonPanel(this, row_1, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.increase_by", 64));
button = new ButtonPanel(this, row_1, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.increase_by", 64));
button.setDock(Dock.RIGHT);
button.bind(() -> input_amount.increase(64));
button.setDockMargin(2, 0, 0, 0);
button = new ButtonPanel(this, row_1, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.increase_by", 256));
button = new ButtonPanel(this, row_1, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.increase_by", 256));
button.setDock(Dock.RIGHT);
button.bind(() -> input_amount.increase(256));
button.setDockMargin(2, 0, 0, 0);
@ -356,27 +357,27 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
slot.setDockMargin(0, 0, 4, 0);
input_amount.setDock(Dock.FILL);
button = new ButtonPanel(this, row_3, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.decrease_by", 8));
button = new ButtonPanel(this, row_3, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.decrease_by", 8));
button.bind(() -> input_amount.increase(-8));
button.setDock(Dock.RIGHT);
button.setDockMargin(2, 0, 0, 0);
button = new ButtonPanel(this, row_3, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.decrease_by", 64));
button = new ButtonPanel(this, row_3, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.decrease_by", 64));
button.setDock(Dock.RIGHT);
button.bind(() -> input_amount.increase(-64));
button.setDockMargin(2, 0, 0, 0);
button = new ButtonPanel(this, row_3, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.decrease_by", 256));
button = new ButtonPanel(this, row_3, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.decrease_by", 256));
button.setDock(Dock.RIGHT);
button.bind(() -> input_amount.increase(-256));
button.setDockMargin(2, 0, 0, 0);
button = new ButtonPanel(this, row_4, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.cancel"));
button = new ButtonPanel(this, row_4, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.cancel"));
button.setDock(Dock.RIGHT);
button.bind(pattern_frame::remove);
button.setDockMargin(2, 0, 0, 0);
button = new ButtonPanel(this, row_4, 0, 0, 82, 20, new TranslatableComponent("otm.container.matter_panel.send"));
button = new ButtonPanel(this, row_4, 0, 0, 82, 20, TranslatableComponent("otm.container.matter_panel.send"));
button.setDock(Dock.RIGHT);
button.bind(() -> {
int value = 1;

View File

@ -20,6 +20,7 @@ import net.minecraft.world.inventory.ClickType;
import net.minecraft.world.inventory.Slot;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.client.event.ContainerScreenEvent;
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
import ru.dbotthepony.mc.otm.menu.MatteryMenu;
import ru.dbotthepony.mc.otm.menu.MatterySlot;
import ru.dbotthepony.mc.otm.client.screen.panels.*;
@ -37,12 +38,11 @@ import static org.lwjgl.opengl.GL13.GL_TEXTURE0;
/**
* This class encapsulate most of logic for handling EditablePanel and it's children
* It inherits AbstractContainerScreen, but most of methods of AbstractContainerScreen are re implemented or straight removed
* since they are present inside EditablePanel subclasses, therefore it inherits
* since they are present inside EditablePanel subclasses, therefore
* it inherits AbstractContainerScreen just for signature compatibility
*
* It inherits AbstractContainerScreen just for signature compatibility
*
* Such as slots, they are not drawn inside MatteryScreen, but instead
* drawn by SlotPanel(s)
* Widgets such as slots are not drawn/interacted with using MatteryScreen,
* but are handled by appropriate panels
*
* @param <T> type of menu, which extends MatteryMenu
*/
@ -338,7 +338,7 @@ public abstract class MatteryScreen<T extends MatteryMenu> extends AbstractConta
this.setBlitOffset(200);
this.itemRenderer.blitOffset = 200.0F;
net.minecraft.client.gui.Font font = net.minecraftforge.client.RenderProperties.get(p_97783_).getFont(p_97783_);
net.minecraft.client.gui.Font font = p_97783_.getItem().getRenderPropertiesInternal() instanceof IClientItemExtensions ext ? ext.getFont(p_97783_, IClientItemExtensions.FontContext.TOOLTIP) : null;
if (font == null) font = this.font;
this.itemRenderer.renderAndDecorateItem(p_97783_, p_97784_, p_97785_);
@ -404,7 +404,7 @@ public abstract class MatteryScreen<T extends MatteryMenu> extends AbstractConta
RenderSystem.depthFunc(GL_LESS);
net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new ContainerScreenEvent.DrawBackground(this, pose, mouse_x, mouse_y));
net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new ContainerScreenEvent.Render.Background(this, pose, mouse_x, mouse_y));
RenderSystem.disableDepthTest();
@ -416,7 +416,7 @@ public abstract class MatteryScreen<T extends MatteryMenu> extends AbstractConta
RenderSystem.disableDepthTest();
net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new ContainerScreenEvent.DrawForeground(this, pose, mouse_x, mouse_y));
net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new ContainerScreenEvent.Render.Foreground(this, pose, mouse_x, mouse_y));
var itemstack = this.draggingItem.isEmpty() ? this.menu.getCarried() : this.draggingItem;
@ -559,7 +559,7 @@ public abstract class MatteryScreen<T extends MatteryMenu> extends AbstractConta
public void onSlotMouseDragged(@Nonnull MatterySlot slot, int click_type) {
ItemStack itemstack = this.menu.getCarried();
if (this.clickedSlot != null && this.minecraft.options.touchscreen) {
if (this.clickedSlot != null && this.minecraft.options.touchscreen().get()) {
if (click_type == 0 || click_type == 1) {
if (this.draggingItem.isEmpty()) {
if (slot != this.clickedSlot && !this.clickedSlot.getItem().isEmpty()) {
@ -621,7 +621,7 @@ public abstract class MatteryScreen<T extends MatteryMenu> extends AbstractConta
return;
}
if (this.clickedSlot != null && this.minecraft.options.touchscreen) {
if (this.clickedSlot != null && this.minecraft.options.touchscreen().get()) {
if (p_97814_ == 0 || p_97814_ == 1) {
if (this.draggingItem.isEmpty() && slot != this.clickedSlot) {
this.draggingItem = this.clickedSlot.getItem();

View File

@ -4,9 +4,9 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.crafting.Recipe;
import net.minecraft.world.item.crafting.RecipeSerializer;
import net.minecraft.world.item.crafting.RecipeType;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import ru.dbotthepony.mc.otm.OverdriveThatMatters;
import ru.dbotthepony.mc.otm.recipe.PlatePressRecipe;
import ru.dbotthepony.mc.otm.recipe.PlatePressRecipeFactory;
@ -19,10 +19,6 @@ public class MRecipes {
this.name = name;
}
private void register() {
net.minecraft.core.Registry.register(net.minecraft.core.Registry.RECIPE_TYPE, name, this);
}
@Override
public String toString() {
return name.toString();
@ -31,15 +27,16 @@ public class MRecipes {
public static final MatteryRecipeType<PlatePressRecipe> PLATE_PRESS = new MatteryRecipeType<>(OverdriveThatMatters.loc(MNames.PLATE_PRESS));
@SubscribeEvent
@SuppressWarnings("unused")
public static void register(final FMLCommonSetupEvent event) {
PLATE_PRESS.register();
private static final DeferredRegister<RecipeSerializer<?>> registry = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, OverdriveThatMatters.MOD_ID);
private static final DeferredRegister<RecipeType<?>> typesRegistry = DeferredRegister.create(ForgeRegistries.RECIPE_TYPES, OverdriveThatMatters.MOD_ID);
static {
registry.register(MNames.PLATE_PRESS, () -> PlatePressRecipeFactory.INSTANCE);
typesRegistry.register(MNames.PLATE_PRESS, () -> PLATE_PRESS);
}
@SubscribeEvent
@SuppressWarnings("unused")
public static void register(final RegistryEvent.Register<RecipeSerializer<?>> event) {
event.getRegistry().register(PlatePressRecipeFactory.INSTANCE);
public static void register() {
registry.register(FMLJavaModLoadingContext.get().getModEventBus());
typesRegistry.register(FMLJavaModLoadingContext.get().getModEventBus());
}
}

View File

@ -4,28 +4,28 @@
package ru.dbotthepony.mc.otm
import com.google.common.collect.ImmutableList
import com.google.gson.JsonArray
import com.google.gson.JsonElement
import com.google.gson.JsonObject
import net.minecraft.client.Minecraft
import net.minecraft.core.BlockPos
import net.minecraft.core.Direction
import net.minecraft.core.Vec3i
import net.minecraft.nbt.CompoundTag
import net.minecraft.nbt.ListTag
import net.minecraft.nbt.LongArrayTag
import net.minecraft.nbt.Tag
import net.minecraft.network.chat.MutableComponent
import net.minecraft.network.chat.contents.LiteralContents
import net.minecraft.network.chat.contents.TranslatableContents
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.Container
import net.minecraft.world.entity.Entity
import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
import net.minecraft.world.phys.Vec3
import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.energy.CapabilityEnergy
import net.minecraftforge.items.IItemHandler
import ru.dbotthepony.mc.otm.capability.MatteryCapability
import net.minecraftforge.registries.ForgeRegistries
import net.minecraftforge.registries.IForgeRegistry
import java.util.*
import java.util.function.Consumer
import kotlin.properties.ReadWriteProperty
import kotlin.reflect.KProperty

View File

@ -6,7 +6,7 @@ package ru.dbotthepony.mc.otm
import net.minecraft.world.level.Level
import net.minecraftforge.event.TickEvent
import net.minecraftforge.event.TickEvent.ServerTickEvent
import net.minecraftforge.event.TickEvent.WorldTickEvent
import net.minecraftforge.event.TickEvent.LevelTickEvent
import net.minecraftforge.event.server.ServerAboutToStartEvent
import net.minecraftforge.event.server.ServerStoppedEvent
import net.minecraftforge.event.server.ServerStoppingEvent
@ -118,9 +118,9 @@ fun addPostServerTickerOnce(ticker: ITickable) {
}
@SubscribeEvent(priority = EventPriority.LOWEST)
fun onWorldTick(event: WorldTickEvent) {
fun onWorldTick(event: LevelTickEvent) {
if (event.phase === TickEvent.Phase.START) {
val it = preWorldTick[event.world]
val it = preWorldTick[event.level]
if (it != null) {
for (i in it.size - 1 downTo 0) {
@ -134,7 +134,7 @@ fun onWorldTick(event: WorldTickEvent) {
}
}
val it2 = preWorldTickOnce.remove(event.world)
val it2 = preWorldTickOnce.remove(event.level)
if (it2 != null) {
for (i in it2.size - 1 downTo 0) {
@ -143,7 +143,7 @@ fun onWorldTick(event: WorldTickEvent) {
}
}
} else {
val it = postWorldTick[event.world]
val it = postWorldTick[event.level]
if (it != null) {
for (i in it.size - 1 downTo 0) {
@ -157,7 +157,7 @@ fun onWorldTick(event: WorldTickEvent) {
}
}
val it2 = postWorldTickOnce.remove(event.world)
val it2 = postWorldTickOnce.remove(event.level)
if (it2 != null) {
for (i in it2.size - 1 downTo 0) {

View File

@ -0,0 +1,30 @@
package ru.dbotthepony.mc.otm
import net.minecraft.network.FriendlyByteBuf
import net.minecraft.network.chat.MutableComponent
import net.minecraft.network.chat.contents.LiteralContents
import net.minecraft.network.chat.contents.TranslatableContents
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.item.Item
import net.minecraft.world.level.block.Block
import net.minecraftforge.registries.ForgeRegistries
import net.minecraftforge.registries.IForgeRegistry
// 1.19 being 1.19
fun TranslatableComponent(key: String, vararg values: Any) = MutableComponent.create(TranslatableContents(key, *values))
fun TextComponent(value: String) = MutableComponent.create(LiteralContents(value))
fun <T> IForgeRegistry<T>.getKeyNullable(value: T): ResourceLocation? {
val key = getResourceKey(value)
if (key.isPresent) {
return key.get().location()
}
return null
}
val Item.registryName get() = ForgeRegistries.ITEMS.getKeyNullable(this)
val Block.registryName get() = ForgeRegistries.BLOCKS.getKeyNullable(this)
fun FriendlyByteBuf.writeRegistryId(value: Item) = writeRegistryId(ForgeRegistries.ITEMS, value)

View File

@ -1,11 +1,14 @@
package ru.dbotthepony.mc.otm.android
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraftforge.registries.ForgeRegistryEntry
import net.minecraft.network.chat.ComponentContents
import net.minecraft.network.chat.MutableComponent
import net.minecraft.network.chat.contents.TranslatableContents
import ru.dbotthepony.mc.otm.capability.android.AndroidCapability
import ru.dbotthepony.mc.otm.getKeyNullable
import ru.dbotthepony.mc.otm.registry.MRegistry
open class AndroidFeatureType<T : AndroidFeature> : ForgeRegistryEntry<AndroidFeatureType<*>> {
open class AndroidFeatureType<T : AndroidFeature> {
private val factory: (AndroidFeatureType<T>, AndroidCapability) -> T
constructor(factory: (AndroidCapability) -> T) : super() {
@ -22,8 +25,17 @@ open class AndroidFeatureType<T : AndroidFeature> : ForgeRegistryEntry<AndroidFe
open fun isApplicable(android: AndroidCapability) = true
val registryName by lazy {
check(AndroidResearchType.IS_REGISTRY_INITIALIZED) { "Trying to access registryName too early!" }
MRegistry.ANDROID_FEATURES.getKeyNullable(this)
}
open val displayContents: ComponentContents by lazy {
TranslatableContents(displayId)
}
open val displayName: Component by lazy {
TranslatableComponent(displayId)
MutableComponent.create(displayContents)
}
open val displayId: String by lazy {

View File

@ -1,11 +1,8 @@
package ru.dbotthepony.mc.otm.android
import com.google.common.collect.ImmutableList
import net.minecraft.ChatFormatting
import net.minecraft.nbt.CompoundTag
import net.minecraft.network.FriendlyByteBuf
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.item.ItemStack
import net.minecraftforge.common.util.INBTSerializable
import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer

View File

@ -4,9 +4,9 @@ import com.google.common.collect.ImmutableList
import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap
import net.minecraft.ChatFormatting
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.item.ItemStack
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.render.SkinElement
import ru.dbotthepony.mc.otm.container.iterator
import ru.dbotthepony.mc.otm.registry.MRegistry

View File

@ -2,9 +2,12 @@ package ru.dbotthepony.mc.otm.android
import com.google.common.collect.ImmutableList
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraftforge.registries.ForgeRegistryEntry
import net.minecraft.network.chat.ComponentContents
import net.minecraft.network.chat.MutableComponent
import net.minecraft.network.chat.contents.TranslatableContents
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer
import ru.dbotthepony.mc.otm.getKeyNullable
import ru.dbotthepony.mc.otm.registry.MRegistry
fun interface AndroidResearchFactory<R : AndroidResearch> {
@ -13,7 +16,7 @@ fun interface AndroidResearchFactory<R : AndroidResearch> {
open class AndroidResearchType<R : AndroidResearch>(
protected val factory: AndroidResearchFactory<R>
) : ForgeRegistryEntry<AndroidResearchType<*>>() {
) {
open val prerequisites: List<AndroidResearchType<*>> get() = emptyList()
open val blockedBy: List<AndroidResearchType<*>> get() = emptyList()
@ -47,6 +50,11 @@ open class AndroidResearchType<R : AndroidResearch>(
fun factory(capability: AndroidCapabilityPlayer) = factory.factory(this, capability)
val registryName by lazy {
check(IS_REGISTRY_INITIALIZED) { "Trying to access registryName too early!" }
MRegistry.ANDROID_RESEARCH.getKeyNullable(this)
}
val displayId by lazy {
val registryName = registryName ?: throw NullPointerException("No registry name present")
return@lazy "android_research.${registryName.namespace}.${registryName.path}".intern()
@ -56,8 +64,12 @@ open class AndroidResearchType<R : AndroidResearch>(
return@lazy "$displayId.description".intern()
}
open val displayContents: ComponentContents by lazy {
TranslatableContents(displayId)
}
open val displayName: Component by lazy {
TranslatableComponent(displayId)
MutableComponent.create(displayContents)
}
open val displayDescription: List<Component> by lazy {

View File

@ -2,7 +2,6 @@ package ru.dbotthepony.mc.otm.block.entity
import net.minecraft.core.BlockPos
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.MenuProvider
import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.entity.player.Inventory
@ -10,6 +9,7 @@ import net.minecraft.world.entity.player.Player
import net.minecraft.world.inventory.AbstractContainerMenu
import net.minecraft.world.level.block.state.BlockState
import net.minecraft.world.phys.AABB
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.capability.WorkerEnergyStorage
import ru.dbotthepony.mc.otm.core.ImpreciseFraction

View File

@ -5,7 +5,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player

View File

@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player
import net.minecraft.world.inventory.AbstractContainerMenu
@ -13,6 +12,7 @@ import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.items.CapabilityItemHandler
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.CargoCrateBlock
import ru.dbotthepony.mc.otm.container.MatteryContainer
import ru.dbotthepony.mc.otm.ifHas

View File

@ -5,7 +5,6 @@ import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag
import net.minecraft.nbt.IntTag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player
import net.minecraft.world.inventory.AbstractContainerMenu
@ -196,7 +195,7 @@ class ChemicalGeneratorBlockEntity(pos: BlockPos, state: BlockState) : MatteryBl
if (workingTicks == 0 && !isBlockedByRedstone && check) {
if (!container[SLOT_INPUT].isEmpty) {
val ticks = ForgeHooks.getBurnTime(container[SLOT_INPUT], null)
val residue = container[SLOT_INPUT].item.getContainerItem(container[SLOT_INPUT].copy().also { it.count = 1 })
val residue = container[SLOT_INPUT].item.getCraftingRemainingItem(container[SLOT_INPUT].copy().also { it.count = 1 })
val canPutResidue = residue.isEmpty || container[SLOT_RESIDUE].isEmpty || ItemStack.isSameItemSameTags(container[SLOT_RESIDUE], residue) && container[SLOT_RESIDUE].count < container[2].maxStackSize
if (canPutResidue && ticks >= 4 && (energy.batteryLevel < ImpreciseFraction.ONE || GENERATION_SPEED * (ticks / 4) + energy.batteryLevel <= energy.maxBatteryLevel)) {

View File

@ -9,7 +9,6 @@ import net.minecraft.nbt.IntTag
import net.minecraft.nbt.ListTag
import net.minecraft.network.FriendlyByteBuf
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player

View File

@ -3,13 +3,13 @@ package ru.dbotthepony.mc.otm.block.entity
import net.minecraft.core.BlockPos
import net.minecraft.core.SectionPos
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player
import net.minecraft.world.level.Level
import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.state.BlockState
import net.minecraft.world.phys.AABB
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.BlockGravitationStabilizer
import ru.dbotthepony.mc.otm.block.BlockGravitationStabilizerLens
import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock

View File

@ -17,11 +17,11 @@ import ru.dbotthepony.mc.otm.menu.PatternStorageMenu
import net.minecraft.MethodsReturnNonnullByDefault
import net.minecraft.core.Direction
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel
import net.minecraft.world.level.Level
import net.minecraft.world.level.block.Block
import net.minecraftforge.common.capabilities.Capability
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.matter.*
import ru.dbotthepony.mc.otm.graph.Graph6Node
import ru.dbotthepony.mc.otm.graph.matter.IMatterGraphNode

View File

@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player
import net.minecraft.world.inventory.AbstractContainerMenu
@ -13,6 +12,7 @@ import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.items.CapabilityItemHandler
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus

View File

@ -1,9 +1,9 @@
package ru.dbotthepony.mc.otm.block.entity
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import ru.dbotthepony.mc.otm.TranslatableComponent
enum class RedstoneSetting(val label: TranslatableComponent, val description: TranslatableComponent) {
enum class RedstoneSetting(val label: Component, val description: Component) {
IGNORED(TranslatableComponent("otm.gui.redstone.ignored"), TranslatableComponent("otm.gui.redstone.ignored.description")),
LOW(TranslatableComponent("otm.gui.redstone.low"), TranslatableComponent("otm.gui.redstone.low.description")),
HIGH(TranslatableComponent("otm.gui.redstone.high"), TranslatableComponent("otm.gui.redstone.high.description"));

View File

@ -669,9 +669,9 @@ class ExplosionQueue(private val level: ServerLevel) : SavedData() {
}
@SubscribeEvent
fun onWorldTick(event: TickEvent.WorldTickEvent) {
if (event.phase == TickEvent.Phase.START && event.world is ServerLevel) {
queueForLevel(event.world as ServerLevel).tick()
fun onWorldTick(event: TickEvent.LevelTickEvent) {
if (event.phase == TickEvent.Phase.START && event.level is ServerLevel) {
queueForLevel(event.level as ServerLevel).tick()
}
}
}

View File

@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player
@ -16,6 +15,7 @@ import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.items.CapabilityItemHandler
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.matter.MatterBottlerBlock
import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerState

View File

@ -5,7 +5,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player
@ -16,6 +15,7 @@ import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.BatteryBankBlock
import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity
import ru.dbotthepony.mc.otm.capability.MatteryCapability

View File

@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player
@ -16,6 +15,7 @@ import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.items.CapabilityItemHandler
import net.minecraftforge.items.IItemHandler
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus

View File

@ -20,10 +20,10 @@ import net.minecraft.nbt.CompoundTag
import net.minecraft.nbt.ListTag
import net.minecraft.nbt.Tag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel
import net.minecraft.world.level.Level
import net.minecraftforge.common.capabilities.Capability
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity
import ru.dbotthepony.mc.otm.graph.Graph6Node
import ru.dbotthepony.mc.otm.graph.matter.IMatterGraphNode

View File

@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player
@ -15,6 +14,7 @@ import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.items.CapabilityItemHandler
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus

View File

@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player
@ -14,6 +13,7 @@ import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.items.CapabilityItemHandler
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus

View File

@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player
@ -15,6 +14,7 @@ import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.items.CapabilityItemHandler
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus

View File

@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player
@ -14,6 +13,7 @@ import net.minecraft.world.level.Level
import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity
import ru.dbotthepony.mc.otm.graph.storage.BasicStorageGraphNode
import ru.dbotthepony.mc.otm.capability.MatteryCapability

View File

@ -4,7 +4,6 @@ import net.minecraft.MethodsReturnNonnullByDefault
import net.minecraft.core.BlockPos
import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player
import net.minecraft.world.inventory.AbstractContainerMenu
@ -12,6 +11,7 @@ import net.minecraft.world.item.ItemStack
import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.state.BlockState
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity
import ru.dbotthepony.mc.otm.block.storage.DriveViewerBlock
import ru.dbotthepony.mc.otm.block.entity.worker.WorkerState

View File

@ -8,7 +8,6 @@ import net.minecraft.nbt.CompoundTag
import net.minecraft.nbt.StringTag
import net.minecraft.network.FriendlyByteBuf
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel
import net.minecraft.server.level.ServerPlayer
import net.minecraft.world.Container
@ -19,8 +18,6 @@ import net.minecraft.world.inventory.CraftingContainer
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.crafting.CraftingRecipe
import net.minecraft.world.item.crafting.RecipeType
import net.minecraft.world.item.crafting.ShapedRecipe
import net.minecraft.world.item.crafting.ShapelessRecipe
import net.minecraft.world.level.Level
import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.ForgeHooks
@ -29,6 +26,7 @@ import net.minecraftforge.common.util.INBTSerializable
import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.network.NetworkEvent
import org.apache.logging.log4j.LogManager
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity
import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.capability.WorkerEnergyStorage
@ -49,7 +47,7 @@ import kotlin.collections.HashMap
import kotlin.collections.HashSet
class ItemMonitorPlayerSettings : INBTSerializable<CompoundTag> {
enum class RefillSource(val component: TranslatableComponent) {
enum class RefillSource(val component: Component) {
// Refill everything from system
SYSTEM(TranslatableComponent("otm.gui.item_monitor.refill_source.system")),
@ -66,7 +64,7 @@ class ItemMonitorPlayerSettings : INBTSerializable<CompoundTag> {
DO_NOT(TranslatableComponent("otm.gui.item_monitor.refill_source.do_not")),
}
enum class ResultTarget(val component: TranslatableComponent) {
enum class ResultTarget(val component: Component) {
// Everything goes into storage system
ALL_SYSTEM(TranslatableComponent("otm.gui.item_monitor.result_target.all_system")),
@ -78,7 +76,7 @@ class ItemMonitorPlayerSettings : INBTSerializable<CompoundTag> {
ALL_INVENTORY(TranslatableComponent("otm.gui.item_monitor.result_target.all_inventory")),
}
enum class Amount(val component: TranslatableComponent) {
enum class Amount(val component: Component) {
ONE(TranslatableComponent("otm.gui.item_monitor.amount.one")),
STACK(TranslatableComponent("otm.gui.item_monitor.amount.stack")),
FULL(TranslatableComponent("otm.gui.item_monitor.amount.full"))
@ -251,6 +249,10 @@ class ItemMonitorBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) :
override fun stillValid(p_38874_: Player): Boolean {
return true
}
override fun quickMoveStack(p_38941_: Player, p_38942_: Int): ItemStack {
return ItemStack.EMPTY
}
}
private val craftingGridDummy = CraftingContainer(craftingMenu, 3, 3)

View File

@ -6,7 +6,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player

View File

@ -1,11 +1,9 @@
package ru.dbotthepony.mc.otm.block.entity.storage
import it.unimi.dsi.fastutil.longs.LongArraySet
import net.minecraft.core.BlockPos
import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player

View File

@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player
@ -14,6 +13,7 @@ import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.util.LazyOptional
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity
import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.capability.WorkerEnergyStorage

View File

@ -26,7 +26,7 @@ import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent
import net.minecraft.world.effect.MobEffects
import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.eventbus.api.SubscribeEvent
import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent
import net.minecraftforge.event.entity.living.LivingEvent.LivingTickEvent
import net.minecraftforge.eventbus.api.EventPriority
import ru.dbotthepony.mc.otm.capability.IMatteryEnergyStorage
import ru.dbotthepony.mc.otm.capability.extractEnergy
@ -417,7 +417,7 @@ open class AndroidCapability(final override val entity: LivingEntity) : ICapabil
}
@SubscribeEvent
fun onLivingTick(event: LivingUpdateEvent) {
fun onLivingTick(event: LivingTickEvent) {
val ent = event.entity
if (ent.level.isClientSide) {

View File

@ -4,7 +4,6 @@ import net.minecraft.ChatFormatting
import net.minecraft.nbt.CompoundTag
import net.minecraft.nbt.ListTag
import net.minecraft.nbt.Tag
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.resources.ResourceLocation
import net.minecraft.server.level.ServerPlayer
import net.minecraft.world.entity.Entity
@ -15,6 +14,7 @@ import net.minecraftforge.event.entity.player.PlayerEvent.Clone
import net.minecraftforge.event.entity.player.PlayerEvent.PlayerChangedDimensionEvent
import net.minecraftforge.eventbus.api.SubscribeEvent
import net.minecraftforge.network.PacketDistributor
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.android.AndroidResearch
import ru.dbotthepony.mc.otm.android.AndroidResearchType
import ru.dbotthepony.mc.otm.capability.MatteryCapability
@ -318,13 +318,13 @@ class AndroidCapabilityPlayer(val ply: Player) : AndroidCapability(ply) {
@SubscribeEvent
fun onPlayerChangeDimensionEvent(event: PlayerChangedDimensionEvent) {
event.player.getCapability(MatteryCapability.ANDROID)
event.entity.getCapability(MatteryCapability.ANDROID)
.ifPresentK { (it as AndroidCapabilityPlayer).invalidateNetworkState() }
}
@SubscribeEvent
fun onPlayerCloneEvent(event: Clone) {
val it = event.player.android as AndroidCapabilityPlayer? ?: return
val it = event.entity.android as AndroidCapabilityPlayer? ?: return
var resolver = event.original.getCapability(MatteryCapability.ANDROID)
@ -342,7 +342,7 @@ class AndroidCapabilityPlayer(val ply: Player) : AndroidCapability(ply) {
if (original.willBecomeAndroid && event.isWasDeath) {
original.becomeAndroid()
(event.player as? ServerPlayer)?.displayClientMessage(TranslatableComponent("otm.pill.message_finish").withStyle(ChatFormatting.DARK_RED), false)
(event.entity as? ServerPlayer)?.displayClientMessage(TranslatableComponent("otm.pill.message_finish").withStyle(ChatFormatting.DARK_RED), false)
}
it.deserializeNBT(original.serializeNBT())

View File

@ -15,7 +15,7 @@ import net.minecraftforge.event.TickEvent.ServerTickEvent
import net.minecraftforge.event.TickEvent
import net.minecraftforge.event.server.ServerAboutToStartEvent
import net.minecraftforge.event.server.ServerStoppingEvent
import net.minecraftforge.event.world.WorldEvent
import net.minecraftforge.event.level.LevelEvent
import org.apache.logging.log4j.LogManager
import ru.dbotthepony.mc.otm.SERVER_IS_DYING
import java.io.File
@ -193,7 +193,7 @@ object DrivePool {
}
@SubscribeEvent
fun onWorldSave(event: WorldEvent.Save) {
fun onWorldSave(event: LevelEvent.Save) {
writeBacklog()
}

View File

@ -0,0 +1,186 @@
package ru.dbotthepony.mc.otm.client
import com.mojang.blaze3d.systems.RenderSystem
import net.minecraft.client.gui.components.Button
import net.minecraft.client.gui.screens.DeathScreen
import net.minecraft.client.gui.screens.InBedChatScreen
import net.minecraft.client.player.LocalPlayer
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.effect.MobEffects
import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.entity.player.Player
import net.minecraftforge.client.event.RenderGuiOverlayEvent
import net.minecraftforge.client.event.ScreenEvent
import net.minecraftforge.client.gui.overlay.ForgeGui
import net.minecraftforge.client.gui.overlay.GuiOverlayManager
import net.minecraftforge.eventbus.api.EventPriority
import net.minecraftforge.eventbus.api.SubscribeEvent
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.capability.android
import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer
import ru.dbotthepony.mc.otm.ifPresentK
import java.util.*
object AndroidGui {
val PLAYER_GUI_LOCATION = ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/gui/player_gui.png")
private var knownButtonX = -1
private var knownButtonY = -1
private var knownButton: Button? = null
private var knownButtonScreen: InBedChatScreen? = null
private var lastState: AndroidCapabilityPlayer? = null
private val button_shaker = Random()
@SubscribeEvent
fun onScreenRender(event: ScreenEvent.Render.Pre) {
if (knownButtonScreen != null && knownButton == null) {
for (widget in knownButtonScreen!!.renderables) {
if (widget is Button) {
knownButtonX = widget.x
knownButtonY = widget.y
knownButton = widget
break
}
}
if (knownButton == null) {
knownButtonScreen = null
}
}
if (knownButtonScreen != null && knownButtonScreen !== minecraft.screen) {
knownButtonX = -1
knownButtonY = -1
knownButton = null
knownButtonScreen = null
}
if (knownButtonScreen == null || minecraft.player == null) {
return
}
minecraft.player?.getCapability(MatteryCapability.ANDROID)?.ifPresentK {
if (!(it as AndroidCapabilityPlayer).willBecomeAndroid) {
knownButton!!.x = knownButtonX
knownButton!!.y = knownButtonY
knownButtonX = -1
knownButtonY = -1
knownButton = null
knownButtonScreen = null
return@ifPresentK
}
val dispersion = (10.0 * Math.max(0, it.sleepTicks - 20) / (AndroidCapabilityPlayer.SLEEP_TICKS_LIMIT - 20)).toInt()
knownButton!!.x =
knownButtonX - dispersion / 2 + (button_shaker.nextDouble() * dispersion).toInt()
knownButton!!.y =
knownButtonY - dispersion / 2 + (button_shaker.nextDouble() * dispersion).toInt()
}
}
@SubscribeEvent(priority = EventPriority.LOWEST)
fun onOpenGUIEvent(event: ScreenEvent.Opening) {
knownButtonX = -1
knownButtonY = -1
knownButton = null
knownButtonScreen = null
if (minecraft.player == null) return
val screen = event.screen
if (screen is DeathScreen) {
minecraft.player?.getCapability(MatteryCapability.ANDROID)?.ifPresentK {
if (it.isAndroid) screen.title = TranslatableComponent("otm.death_reason")
}
}
if (screen is InBedChatScreen) {
knownButtonScreen = screen
minecraft.player?.getCapability(MatteryCapability.ANDROID)?.ifPresentK {
if ((it as AndroidCapabilityPlayer).willBecomeAndroid) {
knownButtonScreen = screen
}
}
}
}
private val FOOD_LEVEL_ELEMENT by lazy {
GuiOverlayManager.findOverlay(ResourceLocation("minecraft", "food_level"))
}
private val AIR_LEVEL_ELEMENT by lazy {
GuiOverlayManager.findOverlay(ResourceLocation("minecraft", "air_level"))
}
@SubscribeEvent(priority = EventPriority.HIGH)
fun onLayerRenderEvent(event: RenderGuiOverlayEvent.Pre) {
if (event.overlay != FOOD_LEVEL_ELEMENT && event.overlay != AIR_LEVEL_ELEMENT) {
return
}
val ply: LocalPlayer = minecraft.player ?: return
if (ply.vehicle is LivingEntity ||
minecraft.options.hideGui ||
minecraft.gameMode?.canHurtPlayer() == false ||
minecraft.getCameraEntity() !is Player
) {
return
}
val lazy = ply.android
var android: AndroidCapabilityPlayer? = null
if (lazy != null) {
android = lazy as AndroidCapabilityPlayer
} else if (!ply.isAlive) {
android = lastState
}
val gui = minecraft.gui as? ForgeGui ?: return
if (android != null && android.isAndroid) {
event.isCanceled = true
lastState = android
if (event.overlay === AIR_LEVEL_ELEMENT) {
return
}
val yOffset = if (ply.hasEffect(MobEffects.HUNGER)) 18 else 0
var level: Float
if (android.maxBatteryLevel.isZero) {
level = 0f
} else {
level = android.batteryLevel.div(android.maxBatteryLevel).toFloat()
if (level >= 0.98f)
level = 1f
}
gui.setupOverlayRenderState(true, false)
RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f)
RenderSystem.setShaderTexture(0, PLAYER_GUI_LOCATION)
val width = event.window.guiScaledWidth
val height = event.window.guiScaledHeight
val left = width / 2 + 10
val top: Int = height - gui.rightHeight
gui.rightHeight += 10
// Stack, x, y, blitOffset?, (float) image_x, (float) image_y, rect_x, rect_y, total_image_width, total_image_height
// Stack, x, y, image_x, image_y, rect_x, rect_y
gui.blit(event.poseStack, left, top, 0, yOffset, 80, 9)
val leftPadding = Math.ceil((level * 79f - 0.5f).toDouble()).toInt()
gui.blit(event.poseStack, left + 79 - leftPadding, top, 79 - leftPadding, yOffset + 9, leftPadding, 9)
}
}
}

View File

@ -9,7 +9,7 @@ import ru.dbotthepony.mc.otm.registry.AndroidFeatures
@SubscribeEvent
@Suppress("unused")
fun inputEvent(event: MovementInputUpdateEvent) {
val ply = event.player
val ply = event.entity
val input = event.input
val cap = ply.android as? AndroidCapabilityPlayer ?: return

View File

@ -9,9 +9,9 @@ import net.minecraft.client.renderer.MultiBufferSource
import net.minecraft.client.renderer.blockentity.BeaconRenderer
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.phys.Vec3
import org.lwjgl.opengl.GL30
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.GravitationStabilizerBlockEntity
import ru.dbotthepony.mc.otm.block.entity.blackhole.BlackHoleBlockEntity
import ru.dbotthepony.mc.otm.capability.MatteryCapability
@ -137,8 +137,9 @@ class BlackHoleRenderer(private val context: BlockEntityRendererProvider.Context
poseStack.popPose()
builder.end()
BufferUploader.end(builder)
// builder.end()
// BufferUploader.end(builder)
BufferUploader.draw(builder.end())
RenderSystem.enableCull()
}

View File

@ -6,7 +6,7 @@ import net.minecraft.client.renderer.MultiBufferSource
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider
import net.minecraft.core.Direction
import net.minecraft.network.chat.TranslatableComponent
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.EnergyCounterBlock
import ru.dbotthepony.mc.otm.block.entity.EnergyCounterBlockEntity
import ru.dbotthepony.mc.otm.core.RGBAColor

View File

@ -10,7 +10,7 @@ import net.minecraft.client.renderer.blockentity.BlockEntityRenderer
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider
import net.minecraft.client.renderer.texture.OverlayTexture
import net.minecraft.core.Direction
import net.minecraft.network.chat.TranslatableComponent
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.BlackHoleBlock
import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock
import ru.dbotthepony.mc.otm.block.entity.GravitationStabilizerBlockEntity

View File

@ -6,9 +6,9 @@ import net.minecraft.ChatFormatting
import net.minecraft.client.Minecraft
import net.minecraft.client.resources.sounds.SimpleSoundInstance
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.sounds.SoundEvents
import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.android.AndroidResearch
import ru.dbotthepony.mc.otm.android.AndroidResearchType
import ru.dbotthepony.mc.otm.capability.MatteryCapability

View File

@ -1,8 +1,8 @@
package ru.dbotthepony.mc.otm.client.screen
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.screen.panels.*
import ru.dbotthepony.mc.otm.client.screen.widget.PowerGaugePanel
import ru.dbotthepony.mc.otm.client.screen.widget.ProgressGaugePanel

View File

@ -2,9 +2,9 @@ package ru.dbotthepony.mc.otm.client.screen
import com.mojang.blaze3d.vertex.PoseStack
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.item.ItemStack
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.screen.panels.*
import ru.dbotthepony.mc.otm.client.screen.widget.PowerGaugePanel
import ru.dbotthepony.mc.otm.item.PortableCondensationDriveItem

View File

@ -1,8 +1,8 @@
package ru.dbotthepony.mc.otm.client.screen
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.screen.panels.*
import ru.dbotthepony.mc.otm.core.formatPower
import ru.dbotthepony.mc.otm.menu.EnergyCounterMenu

View File

@ -4,11 +4,11 @@ import com.mojang.blaze3d.systems.RenderSystem
import com.mojang.blaze3d.vertex.PoseStack
import net.minecraft.ChatFormatting
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Items
import org.lwjgl.opengl.GL11
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.block.entity.storage.ItemMonitorPlayerSettings
import ru.dbotthepony.mc.otm.client.render.SkinGrid
import ru.dbotthepony.mc.otm.client.render.UVWindingOrder
@ -16,11 +16,9 @@ import ru.dbotthepony.mc.otm.client.screen.panels.*
import ru.dbotthepony.mc.otm.client.screen.widget.ProgressGaugePanel
import ru.dbotthepony.mc.otm.core.equalDownDivision
import ru.dbotthepony.mc.otm.core.formatReadableNumber
import ru.dbotthepony.mc.otm.core.formatSi
import ru.dbotthepony.mc.otm.core.formatSiComponent
import ru.dbotthepony.mc.otm.menu.ItemMonitorMenu
import ru.dbotthepony.mc.otm.storage.ITEM_STORAGE
import java.text.NumberFormat
class ItemMonitorScreen(menu: ItemMonitorMenu, inventory: Inventory, title: Component) :
MatteryScreen<ItemMonitorMenu>(menu, inventory, title) {

View File

@ -1,8 +1,8 @@
package ru.dbotthepony.mc.otm.client.screen
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.screen.panels.ButtonPanel
import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel
import ru.dbotthepony.mc.otm.client.screen.panels.SlotPanel

View File

@ -1,8 +1,8 @@
package ru.dbotthepony.mc.otm.client.screen
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.screen.panels.CheckBoxLabelInputPanel
import ru.dbotthepony.mc.otm.client.screen.panels.FilterSlotPanel
import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel

View File

@ -1,8 +1,8 @@
package ru.dbotthepony.mc.otm.client.screen
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.screen.panels.CheckBoxLabelInputPanel
import ru.dbotthepony.mc.otm.client.screen.panels.FilterSlotPanel
import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel

View File

@ -1,8 +1,8 @@
package ru.dbotthepony.mc.otm.client.screen
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.screen.panels.CheckBoxLabelInputPanel
import ru.dbotthepony.mc.otm.client.screen.panels.FilterSlotPanel
import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel

View File

@ -1,13 +1,12 @@
package ru.dbotthepony.mc.otm.client.screen
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.screen.panels.*
import ru.dbotthepony.mc.otm.client.screen.widget.PowerGaugePanel
import ru.dbotthepony.mc.otm.core.formatPower
import ru.dbotthepony.mc.otm.menu.StorageImporterMenu
import ru.dbotthepony.mc.otm.menu.StoragePowerSupplierMenu
class StoragePowerSupplierScreen(menu: StoragePowerSupplierMenu, inventory: Inventory, title: Component) :

View File

@ -2,11 +2,10 @@ package ru.dbotthepony.mc.otm.client.screen.panels
import com.mojang.blaze3d.systems.RenderSystem
import com.mojang.blaze3d.vertex.PoseStack
import net.minecraft.client.Minecraft
import net.minecraft.client.renderer.GameRenderer
import net.minecraft.network.chat.Component
import net.minecraft.world.item.ItemStack
import net.minecraftforge.client.RenderProperties
import net.minecraftforge.client.extensions.common.IClientItemExtensions
import org.lwjgl.opengl.GL11
import ru.dbotthepony.mc.otm.client.minecraft
import ru.dbotthepony.mc.otm.core.RGBAColor
@ -91,7 +90,8 @@ abstract class AbstractSlotPanel @JvmOverloads constructor(
val itemstack = getItemStack()
if (!itemstack.isEmpty) {
val font = RenderProperties.get(itemstack).getFont(itemstack)
// val font = RenderProperties.get(itemstack).getFont(itemstack)
val font = (itemstack.item.renderPropertiesInternal as? IClientItemExtensions)?.getFont(itemstack, IClientItemExtensions.FontContext.TOOLTIP)
// TODO: WHERE????????????
// GuiUtils.preItemToolTip(itemstack);
@ -100,7 +100,8 @@ abstract class AbstractSlotPanel @JvmOverloads constructor(
getItemStackTooltip(itemstack),
mouse_x.toInt(),
mouse_y.toInt(),
font ?: screen.font
font ?: screen.font,
itemstack
)
// GuiUtils.postItemToolTip();

View File

@ -7,8 +7,8 @@ import net.minecraft.client.gui.components.Button
import net.minecraft.client.gui.components.Button.OnPress
import net.minecraft.client.resources.sounds.SimpleSoundInstance
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TextComponent
import net.minecraft.sounds.SoundEvents
import ru.dbotthepony.mc.otm.TextComponent
import ru.dbotthepony.mc.otm.client.minecraft
import ru.dbotthepony.mc.otm.client.render.SkinElement
import ru.dbotthepony.mc.otm.client.render.SkinGrid

View File

@ -2,7 +2,7 @@ package ru.dbotthepony.mc.otm.client.screen.panels
import net.minecraft.client.gui.components.EditBox
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TextComponent
import ru.dbotthepony.mc.otm.TextComponent
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
open class EditBoxPanel(

View File

@ -2,7 +2,7 @@ package ru.dbotthepony.mc.otm.client.screen.panels
import com.mojang.blaze3d.vertex.PoseStack
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TextComponent
import ru.dbotthepony.mc.otm.TextComponent
import ru.dbotthepony.mc.otm.core.RGBAColor
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen

View File

@ -1,7 +1,7 @@
package ru.dbotthepony.mc.otm.client.screen.panels
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TextComponent
import ru.dbotthepony.mc.otm.TextComponent
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
import ru.dbotthepony.mc.otm.menu.widget.NumberPlayerInputWidget
import java.math.BigDecimal

View File

@ -4,7 +4,7 @@ import com.mojang.blaze3d.systems.RenderSystem
import com.mojang.blaze3d.vertex.PoseStack
import net.minecraft.ChatFormatting
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.render.RenderHelper
import ru.dbotthepony.mc.otm.client.render.SkinElement
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen

View File

@ -2,7 +2,7 @@ package ru.dbotthepony.mc.otm.compat.jei
import mezz.jei.api.IModPlugin
import mezz.jei.api.JeiPlugin
import mezz.jei.api.constants.VanillaRecipeCategoryUid
import mezz.jei.api.constants.RecipeTypes
import mezz.jei.api.registration.IRecipeCatalystRegistration
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.item.ItemStack
@ -20,6 +20,6 @@ class JEIPlugin : IModPlugin {
}
override fun registerRecipeCatalysts(registration: IRecipeCatalystRegistration) {
registration.addRecipeCatalyst(ItemStack(MBlocks.CHEMICAL_GENERATOR), VanillaRecipeCategoryUid.FUEL)
registration.addRecipeCatalyst(ItemStack(MBlocks.CHEMICAL_GENERATOR), RecipeTypes.FUELING)
}
}

View File

@ -2,9 +2,9 @@ package ru.dbotthepony.mc.otm.compat.mekanism
import mekanism.common.registries.MekanismItems
import net.minecraft.ChatFormatting
import net.minecraft.network.chat.TranslatableComponent
import net.minecraftforge.event.entity.player.ItemTooltipEvent
import net.minecraftforge.eventbus.api.SubscribeEvent
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.isMekanismLoaded
private val BLACKHOLE_IMMUNITY = TranslatableComponent("otm.item.blackhole_immunity").withStyle(ChatFormatting.DARK_GRAY)

View File

@ -2,8 +2,8 @@ package ru.dbotthepony.mc.otm.core
import com.google.common.collect.ImmutableList
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TextComponent
import net.minecraft.network.chat.TranslatableComponent
import ru.dbotthepony.mc.otm.TextComponent
import ru.dbotthepony.mc.otm.TranslatableComponent
import java.math.BigDecimal
import java.math.BigInteger

View File

@ -4,27 +4,47 @@ import com.google.common.collect.ImmutableList
import com.google.gson.JsonArray
import com.google.gson.JsonObject
import com.google.gson.JsonParseException
import com.mojang.serialization.Codec
import com.mojang.serialization.DataResult
import com.mojang.serialization.DynamicOps
import it.unimi.dsi.fastutil.objects.ObjectArrayList
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.item.ItemStack
import net.minecraft.world.level.storage.loot.Deserializers
import net.minecraft.world.level.storage.loot.LootContext
import net.minecraft.world.level.storage.loot.LootPool
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition
import net.minecraftforge.common.loot.GlobalLootModifierSerializer
import net.minecraftforge.common.loot.IGlobalLootModifier
import net.minecraftforge.common.loot.LootModifier
import net.minecraftforge.registries.ForgeRegistries
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.registryName
class LootTableAppender(conditions: Array<out LootItemCondition>, private vararg val pools: LootPool) : LootModifier(conditions) {
override fun doApply(generatedLoot: MutableList<ItemStack>, context: LootContext): MutableList<ItemStack> {
override fun doApply(generatedLoot: ObjectArrayList<ItemStack>, context: LootContext): ObjectArrayList<ItemStack> {
pools.forEach { it.addRandomItems(generatedLoot::add, context) }
return generatedLoot
}
companion object : GlobalLootModifierSerializer<LootTableAppender>() {
override fun codec(): Codec<out IGlobalLootModifier> {
return Companion
}
companion object : Codec<LootTableAppender> {
override fun <T : Any?> encode(input: LootTableAppender?, ops: DynamicOps<T>?, prefix: T): DataResult<T> {
return DataResult.error("NYI")
}
override fun <T : Any?> decode(
ops: DynamicOps<T>?,
input: T
): DataResult<com.mojang.datafixers.util.Pair<LootTableAppender, T>> {
return DataResult.error("NYI")
}
private val lootPoolGson = Deserializers.createLootTableSerializer().create()
override fun read(
/*override fun read(
location: ResourceLocation,
`object`: JsonObject,
ailootcondition: Array<out LootItemCondition>
@ -41,11 +61,7 @@ class LootTableAppender(conditions: Array<out LootItemCondition>, private vararg
val build = makeConditions(instance.conditions)
build.add("pools", lootPoolGson.toJsonTree(instance.pools))
return build
}
init {
registryName = ResourceLocation(OverdriveThatMatters.MOD_ID, "loot_appender")
}
}*/
}
}
@ -54,7 +70,7 @@ class LootTableBasicAppender(conditions: Array<out LootItemCondition>, items: Li
constructor(conditions: Array<out LootItemCondition>, vararg items: Pair<ItemStack, Double>) : this(conditions, items.toList())
override fun doApply(generatedLoot: MutableList<ItemStack>, context: LootContext): MutableList<ItemStack> {
override fun doApply(generatedLoot: ObjectArrayList<ItemStack>, context: LootContext): ObjectArrayList<ItemStack> {
for ((item, chance) in items) {
if (context.random.nextDouble() <= chance) {
generatedLoot.add(item.copy())
@ -64,8 +80,23 @@ class LootTableBasicAppender(conditions: Array<out LootItemCondition>, items: Li
return generatedLoot
}
companion object : GlobalLootModifierSerializer<LootTableBasicAppender>() {
override fun read(
override fun codec(): Codec<out IGlobalLootModifier> {
return Companion
}
companion object : Codec<LootTableBasicAppender> {
override fun <T : Any?> encode(input: LootTableBasicAppender?, ops: DynamicOps<T>?, prefix: T): DataResult<T> {
return DataResult.error("NYI")
}
override fun <T : Any?> decode(
ops: DynamicOps<T>?,
input: T
): DataResult<com.mojang.datafixers.util.Pair<LootTableBasicAppender, T>> {
return DataResult.error("NYI")
}
/*override fun read(
location: ResourceLocation,
obj: JsonObject,
ailootcondition: Array<out LootItemCondition>
@ -108,10 +139,6 @@ class LootTableBasicAppender(conditions: Array<out LootItemCondition>, items: Li
obj.add("entries", listing)
return obj
}
init {
registryName = ResourceLocation(OverdriveThatMatters.MOD_ID, "loot_appender_basic")
}
}*/
}
}

View File

@ -3,7 +3,6 @@ package ru.dbotthepony.mc.otm.item
import net.minecraft.ChatFormatting
import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Rarity
@ -11,6 +10,7 @@ import net.minecraft.world.item.TooltipFlag
import net.minecraft.world.level.Level
import net.minecraftforge.common.capabilities.ICapabilityProvider
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.EnergyCapacitorItem
import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.core.ImpreciseFraction

View File

@ -6,7 +6,6 @@ import net.minecraft.ChatFormatting
import net.minecraft.core.BlockPos
import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.EquipmentSlot
import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.entity.ai.attributes.Attribute

View File

@ -3,12 +3,12 @@ package ru.dbotthepony.mc.otm.item
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.TooltipFlag
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.ChatFormatting
import net.minecraft.network.chat.Component
import net.minecraft.world.item.Item
import net.minecraft.world.item.Rarity
import net.minecraft.world.level.Level
import ru.dbotthepony.mc.otm.TranslatableComponent
class GravitationalDisruptorItem :
Item(Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(1).rarity(Rarity.EPIC)) {

View File

@ -5,7 +5,6 @@ import net.minecraft.MethodsReturnNonnullByDefault
import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Rarity
@ -15,6 +14,7 @@ import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.capabilities.ICapabilityProvider
import net.minecraftforge.common.util.LazyOptional
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.capability.matter.IMatterHandler
import ru.dbotthepony.mc.otm.capability.matter.MatterDirection

View File

@ -2,12 +2,12 @@ package ru.dbotthepony.mc.otm.item
import net.minecraft.ChatFormatting
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.TooltipFlag
import net.minecraft.world.level.Level
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.core.ImpreciseFraction
import ru.dbotthepony.mc.otm.matter.IMatterItem
import ru.dbotthepony.mc.otm.matter.MatterTuple

View File

@ -6,7 +6,6 @@ import net.minecraft.nbt.CompoundTag
import net.minecraftforge.common.capabilities.ICapabilityProvider
import net.minecraft.world.item.TooltipFlag
import ru.dbotthepony.mc.otm.capability.MatteryCapability
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.ChatFormatting
import net.minecraftforge.common.util.LazyOptional
import net.minecraft.nbt.ListTag
@ -15,6 +14,7 @@ import net.minecraft.network.chat.Component
import net.minecraft.world.item.Item
import net.minecraft.world.level.Level
import net.minecraftforge.common.capabilities.Capability
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.matter.*
import ru.dbotthepony.mc.otm.ifHas
import java.util.*

View File

@ -2,7 +2,6 @@ package ru.dbotthepony.mc.otm.item
import net.minecraft.ChatFormatting
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerPlayer
import net.minecraft.world.InteractionHand
import net.minecraft.world.InteractionResultHolder
@ -14,6 +13,7 @@ import net.minecraft.world.item.*
import net.minecraft.world.level.Level
import net.minecraftforge.common.util.FakePlayer
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer

View File

@ -12,10 +12,7 @@ import ru.dbotthepony.mc.otm.capability.MatteryCapability
import net.minecraft.world.item.TooltipFlag
import net.minecraft.ChatFormatting
import net.minecraft.core.Direction
import net.minecraft.nbt.ListTag
import net.minecraft.nbt.Tag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TextComponent
import net.minecraft.stats.Stats
import net.minecraft.world.item.Item
import net.minecraft.world.level.Level
@ -23,6 +20,7 @@ import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.event.ForgeEventFactory
import net.minecraftforge.eventbus.api.SubscribeEvent
import net.minecraftforge.event.entity.player.EntityItemPickupEvent
import ru.dbotthepony.mc.otm.TextComponent
import ru.dbotthepony.mc.otm.capability.drive.DrivePool
import ru.dbotthepony.mc.otm.container.ItemFilter
import ru.dbotthepony.mc.otm.core.ImpreciseFraction
@ -105,14 +103,14 @@ class PortableCondensationDriveItem(capacity: Int) :
@SubscribeEvent
fun onPickupEvent(event: EntityItemPickupEvent) {
if (event.item.owner != null && event.item.owner != event.player.uuid && event.item.age < 200) {
if (event.item.owner != null && event.item.owner != event.entity.uuid && event.item.age < 200) {
return
}
var amount = event.item.item.count
val item = event.item.item.item
for (stack in event.player.inventory.items) {
for (stack in event.entity.inventory.items) {
val drive = stack.item
if (drive is PortableCondensationDriveItem) {
@ -131,21 +129,21 @@ class PortableCondensationDriveItem(capacity: Int) :
copy.count -= remaining.count
event.isCanceled = true
ForgeEventFactory.firePlayerItemPickupEvent(event.player, event.item, copy)
ForgeEventFactory.firePlayerItemPickupEvent(event.entity, event.item, copy)
if (remaining.count > 0) {
event.item.item.count = remaining.count
event.player.take(event.item, amount - remaining.count)
event.entity.take(event.item, amount - remaining.count)
event.player.awardStat(Stats.ITEM_PICKED_UP.get(item), amount - remaining.count)
event.player.onItemPickup(event.item)
event.entity.awardStat(Stats.ITEM_PICKED_UP.get(item), amount - remaining.count)
event.entity.onItemPickup(event.item)
amount = remaining.count
} else {
event.player.take(event.item, amount)
event.entity.take(event.item, amount)
event.player.awardStat(Stats.ITEM_PICKED_UP.get(item), amount)
event.player.onItemPickup(event.item)
event.entity.awardStat(Stats.ITEM_PICKED_UP.get(item), amount)
event.entity.onItemPickup(event.item)
event.item.discard()
doBreak = true

View File

@ -3,15 +3,16 @@ package ru.dbotthepony.mc.otm.item
import net.minecraft.ChatFormatting
import net.minecraft.client.model.HumanoidModel
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.sounds.SoundEvent
import net.minecraft.sounds.SoundEvents
import net.minecraft.world.entity.EquipmentSlot
import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.item.*
import net.minecraft.world.item.crafting.Ingredient
import net.minecraft.world.level.Level
import net.minecraftforge.client.IItemRenderProperties
import net.minecraftforge.client.extensions.common.IClientItemExtensions
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.client.model.GravitationStabilizerModel
import java.util.function.Consumer
@ -19,7 +20,7 @@ private object GravitationStabilizerArmorMaterial : ArmorMaterial {
override fun getDurabilityForSlot(p_40410_: EquipmentSlot) = 0
override fun getDefenseForSlot(p_40411_: EquipmentSlot) = 3
override fun getEnchantmentValue() = 0
override fun getEquipSound(): SoundEvent? = null
override fun getEquipSound(): SoundEvent = SoundEvents.ARMOR_EQUIP_GENERIC
override fun getRepairIngredient(): Ingredient = Ingredient.EMPTY
const val ID = "${OverdriveThatMatters.MOD_ID}:gravitation_stabilizer"
@ -29,8 +30,8 @@ private object GravitationStabilizerArmorMaterial : ArmorMaterial {
override fun getKnockbackResistance() = 0f
}
private object GravitationStabilizerArmorRenderProperties : IItemRenderProperties {
override fun getArmorModel(
private object GravitationStabilizerArmorRenderProperties : IClientItemExtensions {
override fun getHumanoidArmorModel(
entityLiving: LivingEntity,
itemStack: ItemStack,
armorSlot: EquipmentSlot,
@ -41,7 +42,7 @@ private object GravitationStabilizerArmorRenderProperties : IItemRenderPropertie
}
class ItemPortableGravitationStabilizer : ArmorItem(GravitationStabilizerArmorMaterial, EquipmentSlot.CHEST, Properties().stacksTo(1).rarity(Rarity.RARE).tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB)) {
override fun initializeClient(consumer: Consumer<IItemRenderProperties>) {
override fun initializeClient(consumer: Consumer<IClientItemExtensions>) {
super.initializeClient(consumer)
consumer.accept(GravitationStabilizerArmorRenderProperties)
}

View File

@ -11,7 +11,7 @@ import net.minecraft.world.item.ArmorMaterial
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Rarity
import net.minecraft.world.item.crafting.Ingredient
import net.minecraftforge.client.IItemRenderProperties
import net.minecraftforge.client.extensions.common.IClientItemExtensions
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.client.model.TritaniumArmorModel
import ru.dbotthepony.mc.otm.registry.MItemTags
@ -41,7 +41,7 @@ private object TritaniumArmorMaterial : ArmorMaterial {
}
override fun getEnchantmentValue() = 9
override fun getEquipSound(): SoundEvent = SoundEvents.ARMOR_EQUIP_GENERIC
override fun getEquipSound(): SoundEvent = SoundEvents.ARMOR_EQUIP_IRON
override fun getRepairIngredient(): Ingredient = Ingredient.of(MItemTags.INGOT_TRITANIUM)
const val ID = "${OverdriveThatMatters.MOD_ID}:tritanium_armor"
@ -51,8 +51,8 @@ private object TritaniumArmorMaterial : ArmorMaterial {
override fun getKnockbackResistance() = 0.2f
}
private object TritaniumArmorRenderProperties : IItemRenderProperties {
override fun getArmorModel(
private object TritaniumArmorRenderProperties : IClientItemExtensions {
override fun getHumanoidArmorModel(
entityLiving: LivingEntity,
itemStack: ItemStack,
armorSlot: EquipmentSlot,
@ -67,7 +67,7 @@ private object TritaniumArmorRenderProperties : IItemRenderProperties {
}
class ItemTritaniumArmor(slot: EquipmentSlot) : ArmorItem(TritaniumArmorMaterial, slot, Properties().stacksTo(1).rarity(Rarity.RARE).tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB)) {
override fun initializeClient(consumer: Consumer<IItemRenderProperties>) {
override fun initializeClient(consumer: Consumer<IClientItemExtensions>) {
super.initializeClient(consumer)
consumer.accept(TritaniumArmorRenderProperties)
}

View File

@ -16,15 +16,14 @@ import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Rarity
import net.minecraft.world.level.block.state.BlockState
import net.minecraftforge.client.event.EntityViewRenderEvent
import net.minecraftforge.client.event.InputEvent
import net.minecraftforge.client.event.RenderHandEvent
import net.minecraftforge.client.event.RenderPlayerEvent
import net.minecraftforge.client.event.ViewportEvent
import net.minecraftforge.event.TickEvent
import net.minecraftforge.eventbus.api.SubscribeEvent
import net.minecraftforge.fml.LogicalSide
import net.minecraftforge.network.NetworkEvent
import org.lwjgl.opengl.GL30
import ru.dbotthepony.mc.otm.*
import ru.dbotthepony.mc.otm.capability.matteryEnergy
import ru.dbotthepony.mc.otm.client.font
@ -280,7 +279,7 @@ abstract class AbstractWeaponItem<D : WeaponDataTable>(val tables: KClass<D>, ra
@SubscribeEvent
@Suppress("unused")
fun fovHook(event: EntityViewRenderEvent.FieldOfView) {
fun fovHook(event: ViewportEvent.ComputeFov) {
val player = event.camera.entity as? Player ?: return
val it = (player.mainHandItem.item as? AbstractWeaponItem<*>)
@ -293,7 +292,7 @@ abstract class AbstractWeaponItem<D : WeaponDataTable>(val tables: KClass<D>, ra
val interp = linearInterpolation(
it.ironSightsProgress(
player.mainHandItem,
event.partialTicks
event.partialTick
) * 1.7 - 0.6, 1.0, it.ironSightsFOV
)
@ -314,7 +313,7 @@ abstract class AbstractWeaponItem<D : WeaponDataTable>(val tables: KClass<D>, ra
@SubscribeEvent
@Suppress("unused")
fun playerRenderHook(event: RenderPlayerEvent.Pre) {
if (event.player.mainHandItem.item is AbstractWeaponItem<*> && event.player.offhandItem.isEmpty) {
if (event.entity.mainHandItem.item is AbstractWeaponItem<*> && event.entity.offhandItem.isEmpty) {
event.renderer.model.rightArmPose = HumanoidModel.ArmPose.BOW_AND_ARROW
event.renderer.model.leftArmPose = HumanoidModel.ArmPose.EMPTY
}
@ -322,7 +321,7 @@ abstract class AbstractWeaponItem<D : WeaponDataTable>(val tables: KClass<D>, ra
@SubscribeEvent
@Suppress("unused")
fun clickHook(event: InputEvent.ClickInputEvent) {
fun clickHook(event: InputEvent.InteractionKeyMappingTriggered) {
val player = Minecraft.getInstance().player!!
if (player.mainHandItem.item is AbstractWeaponItem<*> && player.offhandItem.isEmpty && event.isAttack) {
@ -378,11 +377,11 @@ abstract class AbstractWeaponItem<D : WeaponDataTable>(val tables: KClass<D>, ra
val player = Minecraft.getInstance().player!!
val pose = event.poseStack
val itemInHandRenderer = Minecraft.getInstance().itemInHandRenderer
val itemInHandRenderer = Minecraft.getInstance().itemRenderer
pose.pushPose()
val progress = item.ironSightsProgress(stack, event.partialTicks.toDouble())
val progress = item.ironSightsProgress(stack, event.partialTick.toDouble())
val (x, y, z) = linearInterpolation(
// 1.0 - event.equipProgress.toDouble(),
@ -429,15 +428,15 @@ abstract class AbstractWeaponItem<D : WeaponDataTable>(val tables: KClass<D>, ra
pose.mulPose(Vector3f.YP.rotation(yaw.toFloat()))
pose.mulPose(Vector3f.XP.rotation(pitch.toFloat()))
itemInHandRenderer.renderItem(
player,
/*itemInHandRenderer.render(
// player,
stack,
ItemTransforms.TransformType.FIRST_PERSON_RIGHT_HAND,
false,
pose,
event.multiBufferSource,
event.packedLight
)
)*/
if (item is PlasmaWeaponItem<*>) {
// RenderSystem.setShader(GameRenderer::getPositionColorShader)
@ -468,7 +467,7 @@ abstract class AbstractWeaponItem<D : WeaponDataTable>(val tables: KClass<D>, ra
RenderHelper.setDrawColor(heatBackground)
RenderHelper.drawRect(pose, -1f, -1f, 9f, 32f)
val heat = item.heatProgress(stack, event.partialTicks.toDouble()).toFloat()
val heat = item.heatProgress(stack, event.partialTick.toDouble()).toFloat()
RenderHelper.setDrawColor(linearInterpolation(heat, initialHeatColor, finalHeatColor))
RenderHelper.drawRect(pose, 0f, 30f * (1f - heat), 7f, 30f * heat)
}

View File

@ -4,7 +4,6 @@ import net.minecraft.ChatFormatting
import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.level.ServerPlayer
import net.minecraft.sounds.SoundSource
import net.minecraft.world.entity.player.Player
@ -16,15 +15,12 @@ import net.minecraftforge.common.capabilities.ICapabilityProvider
import net.minecraftforge.common.util.INBTSerializable
import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.energy.CapabilityEnergy
import ru.dbotthepony.mc.otm.*
import ru.dbotthepony.mc.otm.capability.*
import ru.dbotthepony.mc.otm.core.ImpreciseFraction
import ru.dbotthepony.mc.otm.core.bezierCurve
import ru.dbotthepony.mc.otm.core.formatPower
import ru.dbotthepony.mc.otm.doubles
import ru.dbotthepony.mc.otm.ifPresentK
import ru.dbotthepony.mc.otm.ints
import ru.dbotthepony.mc.otm.registry.MSoundEvents
import ru.dbotthepony.mc.otm.set
import kotlin.reflect.KClass
class PlasmaWeaponEnergy(val itemStack: ItemStack, private val innerCapacity: ImpreciseFraction) :

View File

@ -1,7 +1,6 @@
package ru.dbotthepony.mc.otm.matter
import net.minecraft.tags.ItemTags
import net.minecraft.tags.Tag
import net.minecraft.tags.TagKey
import net.minecraft.world.item.Item
import net.minecraft.world.item.Items
@ -122,12 +121,6 @@ private fun make(tag: ITag<Item>, value: ImpreciseFraction, complexity: Double =
}
}
private fun make(tag: Tag<Item>, value: ImpreciseFraction, complexity: Double = defaultComplexity(value)) {
for (item in tag.values) {
make(item, value, complexity)
}
}
private fun make(tag: TagKey<Item>, value: ImpreciseFraction, complexity: Double = defaultComplexity(value)) {
val resolved = ForgeRegistries.ITEMS.tags()?.getTag(tag)

View File

@ -4,7 +4,6 @@ import com.mojang.blaze3d.platform.InputConstants
import net.minecraft.ChatFormatting
import net.minecraft.client.Minecraft
import net.minecraft.network.FriendlyByteBuf
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.server.dedicated.DedicatedServer
import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
@ -17,12 +16,14 @@ import net.minecraftforge.network.NetworkEvent
import net.minecraftforge.network.PacketDistributor
import org.lwjgl.glfw.GLFW
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.capability.drive.IMatteryDrive
import ru.dbotthepony.mc.otm.core.*
import ru.dbotthepony.mc.otm.network.MatteryNetworking
import ru.dbotthepony.mc.otm.orNull
import ru.dbotthepony.mc.otm.storage.ItemStackWrapper
import ru.dbotthepony.mc.otm.writeRegistryId
import java.math.BigInteger
import java.util.function.Supplier

View File

@ -17,6 +17,7 @@ import ru.dbotthepony.mc.otm.core.writeBigInteger
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.network.MatteryNetworking
import ru.dbotthepony.mc.otm.network.SetCarriedPacket
import ru.dbotthepony.mc.otm.registryName
import ru.dbotthepony.mc.otm.storage.*
import java.math.BigInteger
import java.util.*

View File

@ -7,6 +7,7 @@ import net.minecraft.resources.ResourceLocation
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Items
import net.minecraftforge.registries.ForgeRegistries
import ru.dbotthepony.mc.otm.registryName
import ru.dbotthepony.mc.otm.set
fun stackFromJson(obj: JsonElement, field: String = "<unknown>"): ItemStack {

View File

@ -12,13 +12,13 @@ import net.minecraft.world.item.crafting.Recipe
import net.minecraft.world.item.crafting.RecipeSerializer
import net.minecraft.world.item.crafting.RecipeType
import net.minecraft.world.level.Level
import net.minecraftforge.registries.ForgeRegistryEntry
import org.apache.logging.log4j.LogManager
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.block.entity.PlatePressBlockEntity
import ru.dbotthepony.mc.otm.get
import ru.dbotthepony.mc.otm.registry.MNames
import ru.dbotthepony.mc.otm.registry.MRecipes
import ru.dbotthepony.mc.otm.registryName
class PlatePressRecipe(
private val id: ResourceLocation,
@ -82,14 +82,10 @@ class PlatePressRecipe(
override fun getType(): RecipeType<PlatePressRecipe> = MRecipes.PLATE_PRESS
}
object PlatePressRecipeFactory : ForgeRegistryEntry<RecipeSerializer<*>>(), RecipeSerializer<PlatePressRecipe> {
object PlatePressRecipeFactory : RecipeSerializer<PlatePressRecipe> {
private val EMPTY = PlatePressRecipe(ResourceLocation(OverdriveThatMatters.MOD_ID, "empty"), Ingredient.EMPTY, Ingredient.EMPTY, 1)
private val LOGGER = LogManager.getLogger()
init {
registryName = OverdriveThatMatters.loc(MNames.PLATE_PRESS)
}
override fun fromJson(loc: ResourceLocation, obj: JsonObject): PlatePressRecipe {
val input = try {
Ingredient.fromJson(obj["input"] ?: throw IllegalStateException("Recipe $loc has no input field defined"))

View File

@ -8,7 +8,7 @@ import ru.dbotthepony.mc.otm.android.DummyAndroidFeature
import ru.dbotthepony.mc.otm.android.feature.*
object AndroidFeatures {
private val registry = DeferredRegister.create(AndroidFeatureType::class.java, OverdriveThatMatters.MOD_ID)
private val registry = DeferredRegister.create(MRegistry.ANDROID_FEATURES, OverdriveThatMatters.MOD_ID)
val AIR_BAGS: AndroidFeatureType<*> by registry.register(MNames.AIR_BAGS) { AndroidFeatureType(::DummyAndroidFeature) }
val STEP_ASSIST: AndroidFeatureType<*> by registry.register(MNames.STEP_ASSIST) { AndroidFeatureType(::StepAssistFeature) }

View File

@ -3,13 +3,13 @@
package ru.dbotthepony.mc.otm.registry
import net.minecraft.network.chat.TextComponent
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.resources.ResourceLocation
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext
import net.minecraftforge.registries.DeferredRegister
import net.minecraftforge.registries.RegistryObject
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TextComponent
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.android.AndroidResearchBuilder
import ru.dbotthepony.mc.otm.android.AndroidResearchType
import ru.dbotthepony.mc.otm.android.feature.NanobotsArmor
@ -74,7 +74,7 @@ object AndroidResearch {
ICON_EXTENDED_REACH = grid.next()
}
private val registry = DeferredRegister.create(AndroidResearchType::class.java, OverdriveThatMatters.MOD_ID)
private val registry = DeferredRegister.create(MRegistry.ANDROID_RESEARCH, OverdriveThatMatters.MOD_ID)
internal fun register() {
registry.register(FMLJavaModLoadingContext.get().modEventBus)

View File

@ -1,12 +1,12 @@
package ru.dbotthepony.mc.otm.registry
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.damagesource.DamageSource
import net.minecraft.world.entity.Entity
import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.item.ItemStack
import net.minecraft.world.phys.Vec3
import ru.dbotthepony.mc.otm.TranslatableComponent
class ImmutableDamageSource(private val parent: DamageSource) : DamageSource(parent.msgId) {
override fun equals(other: Any?): Boolean {

View File

@ -2,7 +2,6 @@ package ru.dbotthepony.mc.otm.registry
import com.google.common.collect.ImmutableSet
import net.minecraft.world.item.DyeColor
import net.minecraftforge.registries.IForgeRegistryEntry
import net.minecraftforge.registries.RegistryObject
class LazyList<T>(private vararg val getters: () -> T) : AbstractList<T>() {
@ -26,7 +25,7 @@ class LazyMap<K, T>(vararg mValues: Pair<K, () -> T>) : AbstractMap<K, T>() {
override val entries: Set<Map.Entry<K, T>> = ImmutableSet.copyOf(mValues.map { Entry(it.first, it.second) })
}
class RegistryObjectList<T : IForgeRegistryEntry<T>>(private vararg val getters: RegistryObject<T>) : AbstractList<T>() {
class RegistryObjectList<T>(private vararg val getters: RegistryObject<T>) : AbstractList<T>() {
constructor(getters: List<RegistryObject<T>>) : this(*getters.toTypedArray())
override val size: Int

View File

@ -1,15 +1,20 @@
package ru.dbotthepony.mc.otm.registry
import net.minecraftforge.common.loot.GlobalLootModifierSerializer
import net.minecraftforge.event.RegistryEvent
import net.minecraftforge.eventbus.api.SubscribeEvent
import com.mojang.serialization.Codec
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext
import net.minecraftforge.registries.DeferredRegister
import net.minecraftforge.registries.ForgeRegistries
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.data.LootTableAppender
import ru.dbotthepony.mc.otm.data.LootTableBasicAppender
object LootModifiers {
@SubscribeEvent
fun register(event: RegistryEvent.Register<GlobalLootModifierSerializer<*>>) {
event.registry.register(LootTableAppender.Companion)
event.registry.register(LootTableBasicAppender.Companion)
private val registry = DeferredRegister.create(ForgeRegistries.Keys.GLOBAL_LOOT_MODIFIER_SERIALIZERS, OverdriveThatMatters.MOD_ID)
val LOOT_TABLE_APPENDER: Codec<LootTableAppender> by registry.register("loot_table_appender") { LootTableAppender.Companion }
val LOOT_TABLE_BASIC_APPENDER: Codec<LootTableBasicAppender> by registry.register("loot_table_appender") { LootTableBasicAppender.Companion }
internal fun register() {
registry.register(FMLJavaModLoadingContext.get().modEventBus)
}
}

View File

@ -18,7 +18,7 @@ import ru.dbotthepony.mc.otm.client.render.EnergyCounterRenderer
import ru.dbotthepony.mc.otm.client.render.GravitationStabilizerRenderer
object MBlockEntities {
private val registry = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITIES, OverdriveThatMatters.MOD_ID)
private val registry = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, OverdriveThatMatters.MOD_ID)
val ANDROID_STATION: BlockEntityType<*> by registry.register(MNames.ANDROID_STATION) { BlockEntityType.Builder.of(::AndroidStationBlockEntity, MBlocks.ANDROID_STATION).build(null) }
val BATTERY_BANK: BlockEntityType<*> by registry.register(MNames.BATTERY_BANK) { BlockEntityType.Builder.of(::BatteryBankBlockEntity, MBlocks.BATTERY_BANK).build(null) }

View File

@ -6,7 +6,7 @@ import net.minecraft.client.renderer.RenderType
import net.minecraft.util.valueproviders.UniformInt
import net.minecraft.world.item.DyeColor
import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.OreBlock
import net.minecraft.world.level.block.DropExperienceBlock
import net.minecraft.world.level.block.SoundType
import net.minecraft.world.level.block.state.BlockBehaviour
import net.minecraft.world.level.material.Material
@ -73,14 +73,14 @@ object MBlocks {
val GRAVITATION_STABILIZER: Block by registry.register(MNames.GRAVITATION_STABILIZER) { BlockGravitationStabilizer() }
val GRAVITATION_STABILIZER_LENS: Block by registry.register(MNames.GRAVITATION_STABILIZER_LENS) { BlockGravitationStabilizerLens() }
val TRITANIUM_ORE: Block by registry.register(MNames.TRITANIUM_ORE) { OreBlock(
val TRITANIUM_ORE: Block by registry.register(MNames.TRITANIUM_ORE) { DropExperienceBlock(
BlockBehaviour.Properties.of(Material.STONE)
.strength(3.25f, 6.0f)
.requiresCorrectToolForDrops(),
UniformInt.of(0, 3)
) }
val DEEPSLATE_TRITANIUM_ORE: Block by registry.register(MNames.DEEPSLATE_TRITANIUM_ORE) { OreBlock(
val DEEPSLATE_TRITANIUM_ORE: Block by registry.register(MNames.DEEPSLATE_TRITANIUM_ORE) { DropExperienceBlock(
BlockBehaviour.Properties.of(Material.STONE)
.strength(4.75f, 6.5f)
.requiresCorrectToolForDrops(),

View File

@ -14,7 +14,7 @@ import ru.dbotthepony.mc.otm.client.render.entity.PlasmaProjectileRenderer
import ru.dbotthepony.mc.otm.entity.PlasmaProjectile
object MEntityTypes {
private val registry: DeferredRegister<EntityType<*>> = DeferredRegister.create(ForgeRegistries.ENTITIES, OverdriveThatMatters.MOD_ID)
private val registry: DeferredRegister<EntityType<*>> = DeferredRegister.create(ForgeRegistries.ENTITY_TYPES, OverdriveThatMatters.MOD_ID)
val PLASMA: EntityType<*> by registry.register(MNames.PLASMA) {
EntityType.Builder.of<PlasmaProjectile>({ _, level -> PlasmaProjectile(level) }, MobCategory.MISC).sized(0.4f, 0.4f).build(MNames.PLASMA)

View File

@ -3,22 +3,18 @@ package ru.dbotthepony.mc.otm.registry
import net.minecraft.ChatFormatting
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.tags.BlockTags
import net.minecraft.world.entity.EquipmentSlot
import net.minecraft.world.food.FoodProperties
import net.minecraft.world.item.*
import net.minecraft.world.item.crafting.Ingredient
import net.minecraft.world.level.Level
import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.SoundType
import net.minecraft.world.level.block.state.BlockBehaviour
import net.minecraft.world.level.material.Material
import net.minecraftforge.common.ForgeTier
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext
import net.minecraftforge.registries.DeferredRegister
import net.minecraftforge.registries.ForgeRegistries
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.TranslatableComponent
import ru.dbotthepony.mc.otm.core.ImpreciseFraction
import ru.dbotthepony.mc.otm.item.*
import ru.dbotthepony.mc.otm.item.weapon.PlasmaRifleItem

View File

@ -11,7 +11,7 @@ import ru.dbotthepony.mc.otm.client.screen.*
import ru.dbotthepony.mc.otm.menu.*
object MMenus {
private val registry = DeferredRegister.create(ForgeRegistries.CONTAINERS, OverdriveThatMatters.MOD_ID)
private val registry = DeferredRegister.create(ForgeRegistries.MENU_TYPES, OverdriveThatMatters.MOD_ID)
val ANDROID_STATION: MenuType<*> by registry.register(MNames.ANDROID_STATION) { MenuType(::AndroidStationMenu) }
val BATTERY_BANK: MenuType<*> by registry.register(MNames.BATTERY_BANK) { MenuType(::BatteryBankMenu) }

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