From 3abcdf2063c979dad68e2591095dbcc487f436a2 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 30 Nov 2019 17:45:02 -0500 Subject: [PATCH] Better access --- core/assets/scripts/base.js | 1 + core/assets/scripts/global.js | 3 +++ core/src/io/anuke/mindustry/mod/ClassAccess.java | 1 - core/src/io/anuke/mindustry/mod/Scripts.java | 11 ++++++----- .../io/anuke/mindustry/tools/ScriptStubGenerator.java | 4 +++- 5 files changed, 13 insertions(+), 7 deletions(-) create mode 100755 core/assets/scripts/base.js diff --git a/core/assets/scripts/base.js b/core/assets/scripts/base.js new file mode 100755 index 0000000000..1213c82bf4 --- /dev/null +++ b/core/assets/scripts/base.js @@ -0,0 +1 @@ +const extend = Java.extend diff --git a/core/assets/scripts/global.js b/core/assets/scripts/global.js index ccca49d2c0..77c453a135 100755 --- a/core/assets/scripts/global.js +++ b/core/assets/scripts/global.js @@ -358,3 +358,6 @@ const LiquidModule = Java.type('io.anuke.mindustry.world.modules.LiquidModule') const PowerModule = Java.type('io.anuke.mindustry.world.modules.PowerModule') const Produce = Java.type('io.anuke.mindustry.world.producers.Produce') const ProduceItem = Java.type('io.anuke.mindustry.world.producers.ProduceItem') + +const extend = Java.extend + diff --git a/core/src/io/anuke/mindustry/mod/ClassAccess.java b/core/src/io/anuke/mindustry/mod/ClassAccess.java index 29c895c646..0735c24f40 100644 --- a/core/src/io/anuke/mindustry/mod/ClassAccess.java +++ b/core/src/io/anuke/mindustry/mod/ClassAccess.java @@ -3,6 +3,5 @@ package io.anuke.mindustry.mod; import io.anuke.arc.collection.*; //obviously autogenerated, do not touch class ClassAccess{ - static final Array> allowedClasses = Array.with(io.anuke.arc.Core.class, io.anuke.arc.graphics.g2d.Draw.class, io.anuke.arc.graphics.g2d.TextureAtlas.class, io.anuke.arc.graphics.g2d.TextureRegion.class, io.anuke.mindustry.Vars.class, io.anuke.mindustry.ai.BlockIndexer.class, io.anuke.mindustry.ai.Pathfinder.class, io.anuke.mindustry.ai.WaveSpawner.class, io.anuke.mindustry.content.Blocks.class, io.anuke.mindustry.content.Bullets.class, io.anuke.mindustry.content.Fx.class, io.anuke.mindustry.content.Items.class, io.anuke.mindustry.content.Liquids.class, io.anuke.mindustry.content.Loadouts.class, io.anuke.mindustry.content.Mechs.class, io.anuke.mindustry.content.StatusEffects.class, io.anuke.mindustry.content.TechTree.class, io.anuke.mindustry.content.TypeIDs.class, io.anuke.mindustry.content.UnitTypes.class, io.anuke.mindustry.content.Zones.class, io.anuke.mindustry.core.ContentLoader.class, io.anuke.mindustry.core.Control.class, io.anuke.mindustry.core.FileTree.class, io.anuke.mindustry.core.GameState.class, io.anuke.mindustry.core.Logic.class, io.anuke.mindustry.core.Platform.class, io.anuke.mindustry.core.Renderer.class, io.anuke.mindustry.core.UI.class, io.anuke.mindustry.core.Version.class, io.anuke.mindustry.core.World.class, io.anuke.mindustry.ctype.Content.class, io.anuke.mindustry.ctype.ContentList.class, io.anuke.mindustry.ctype.MappableContent.class, io.anuke.mindustry.ctype.UnlockableContent.class, io.anuke.mindustry.editor.DrawOperation.class, io.anuke.mindustry.editor.EditorTile.class, io.anuke.mindustry.editor.EditorTool.class, io.anuke.mindustry.editor.MapEditor.class, io.anuke.mindustry.editor.MapRenderer.class, io.anuke.mindustry.editor.OperationStack.class, io.anuke.mindustry.entities.Damage.class, io.anuke.mindustry.entities.Effects.class, io.anuke.mindustry.entities.Entities.class, io.anuke.mindustry.entities.EntityCollisions.class, io.anuke.mindustry.entities.EntityGroup.class, io.anuke.mindustry.entities.Predict.class, io.anuke.mindustry.entities.TargetPriority.class, io.anuke.mindustry.entities.Units.class, io.anuke.mindustry.entities.bullet.ArtilleryBulletType.class, io.anuke.mindustry.entities.bullet.BasicBulletType.class, io.anuke.mindustry.entities.bullet.BombBulletType.class, io.anuke.mindustry.entities.bullet.BulletType.class, io.anuke.mindustry.entities.bullet.FlakBulletType.class, io.anuke.mindustry.entities.bullet.HealBulletType.class, io.anuke.mindustry.entities.bullet.LiquidBulletType.class, io.anuke.mindustry.entities.bullet.MassDriverBolt.class, io.anuke.mindustry.entities.bullet.MissileBulletType.class, io.anuke.mindustry.entities.effect.Decal.class, io.anuke.mindustry.entities.effect.Fire.class, io.anuke.mindustry.entities.effect.GroundEffectEntity.class, io.anuke.mindustry.entities.effect.ItemTransfer.class, io.anuke.mindustry.entities.effect.Lightning.class, io.anuke.mindustry.entities.effect.Puddle.class, io.anuke.mindustry.entities.effect.RubbleDecal.class, io.anuke.mindustry.entities.effect.ScorchDecal.class, io.anuke.mindustry.entities.traits.AbsorbTrait.class, io.anuke.mindustry.entities.traits.BelowLiquidTrait.class, io.anuke.mindustry.entities.traits.BuilderMinerTrait.class, io.anuke.mindustry.entities.traits.BuilderTrait.class, io.anuke.mindustry.entities.traits.DamageTrait.class, io.anuke.mindustry.entities.traits.DrawTrait.class, io.anuke.mindustry.entities.traits.Entity.class, io.anuke.mindustry.entities.traits.HealthTrait.class, io.anuke.mindustry.entities.traits.KillerTrait.class, io.anuke.mindustry.entities.traits.MinerTrait.class, io.anuke.mindustry.entities.traits.MoveTrait.class, io.anuke.mindustry.entities.traits.SaveTrait.class, io.anuke.mindustry.entities.traits.Saveable.class, io.anuke.mindustry.entities.traits.ScaleTrait.class, io.anuke.mindustry.entities.traits.ShooterTrait.class, io.anuke.mindustry.entities.traits.SolidTrait.class, io.anuke.mindustry.entities.traits.SpawnerTrait.class, io.anuke.mindustry.entities.traits.SyncTrait.class, io.anuke.mindustry.entities.traits.TargetTrait.class, io.anuke.mindustry.entities.traits.TeamTrait.class, io.anuke.mindustry.entities.traits.TimeTrait.class, io.anuke.mindustry.entities.traits.TypeTrait.class, io.anuke.mindustry.entities.traits.VelocityTrait.class, io.anuke.mindustry.entities.type.BaseEntity.class, io.anuke.mindustry.entities.type.BaseUnit.class, io.anuke.mindustry.entities.type.Bullet.class, io.anuke.mindustry.entities.type.DestructibleEntity.class, io.anuke.mindustry.entities.type.EffectEntity.class, io.anuke.mindustry.entities.type.Player.class, io.anuke.mindustry.entities.type.SolidEntity.class, io.anuke.mindustry.entities.type.TileEntity.class, io.anuke.mindustry.entities.type.TimedEntity.class, io.anuke.mindustry.entities.type.Unit.class, io.anuke.mindustry.entities.type.base.BaseDrone.class, io.anuke.mindustry.entities.type.base.BuilderDrone.class, io.anuke.mindustry.entities.type.base.Crawler.class, io.anuke.mindustry.entities.type.base.Dagger.class, io.anuke.mindustry.entities.type.base.Draug.class, io.anuke.mindustry.entities.type.base.Eruptor.class, io.anuke.mindustry.entities.type.base.FlyingUnit.class, io.anuke.mindustry.entities.type.base.Fortress.class, io.anuke.mindustry.entities.type.base.Ghoul.class, io.anuke.mindustry.entities.type.base.GroundUnit.class, io.anuke.mindustry.entities.type.base.MinerDrone.class, io.anuke.mindustry.entities.type.base.Phantom.class, io.anuke.mindustry.entities.type.base.RepairDrone.class, io.anuke.mindustry.entities.type.base.Revenant.class, io.anuke.mindustry.entities.type.base.Spirit.class, io.anuke.mindustry.entities.type.base.Titan.class, io.anuke.mindustry.entities.type.base.Wraith.class, io.anuke.mindustry.entities.units.StateMachine.class, io.anuke.mindustry.entities.units.Statuses.class, io.anuke.mindustry.entities.units.UnitCommand.class, io.anuke.mindustry.entities.units.UnitDrops.class, io.anuke.mindustry.entities.units.UnitState.class, io.anuke.mindustry.game.DefaultWaves.class, io.anuke.mindustry.game.Difficulty.class, io.anuke.mindustry.game.EventType.class, io.anuke.mindustry.game.Gamemode.class, io.anuke.mindustry.game.GlobalData.class, io.anuke.mindustry.game.LoopControl.class, io.anuke.mindustry.game.MusicControl.class, io.anuke.mindustry.game.Objective.class, io.anuke.mindustry.game.Objectives.class, io.anuke.mindustry.game.Rules.class, io.anuke.mindustry.game.Saves.class, io.anuke.mindustry.game.Schematic.class, io.anuke.mindustry.game.Schematics.class, io.anuke.mindustry.game.SoundLoop.class, io.anuke.mindustry.game.SpawnGroup.class, io.anuke.mindustry.game.Stats.class, io.anuke.mindustry.game.Team.class, io.anuke.mindustry.game.Teams.class, io.anuke.mindustry.game.Tutorial.class, io.anuke.mindustry.graphics.BlockRenderer.class, io.anuke.mindustry.graphics.Bloom.class, io.anuke.mindustry.graphics.CacheLayer.class, io.anuke.mindustry.graphics.Drawf.class, io.anuke.mindustry.graphics.FloorRenderer.class, io.anuke.mindustry.graphics.IndexedRenderer.class, io.anuke.mindustry.graphics.Layer.class, io.anuke.mindustry.graphics.LightRenderer.class, io.anuke.mindustry.graphics.MenuRenderer.class, io.anuke.mindustry.graphics.MinimapRenderer.class, io.anuke.mindustry.graphics.MultiPacker.class, io.anuke.mindustry.graphics.OverlayRenderer.class, io.anuke.mindustry.graphics.Pal.class, io.anuke.mindustry.graphics.Pixelator.class, io.anuke.mindustry.graphics.Shaders.class, io.anuke.mindustry.input.Binding.class, io.anuke.mindustry.input.DesktopInput.class, io.anuke.mindustry.input.InputHandler.class, io.anuke.mindustry.input.MobileInput.class, io.anuke.mindustry.input.PlaceMode.class, io.anuke.mindustry.input.Placement.class, io.anuke.mindustry.maps.Map.class, io.anuke.mindustry.maps.Maps.class, io.anuke.mindustry.maps.filters.BlendFilter.class, io.anuke.mindustry.maps.filters.ClearFilter.class, io.anuke.mindustry.maps.filters.DistortFilter.class, io.anuke.mindustry.maps.filters.FilterOption.class, io.anuke.mindustry.maps.filters.GenerateFilter.class, io.anuke.mindustry.maps.filters.MedianFilter.class, io.anuke.mindustry.maps.filters.MirrorFilter.class, io.anuke.mindustry.maps.filters.NoiseFilter.class, io.anuke.mindustry.maps.filters.OreFilter.class, io.anuke.mindustry.maps.filters.OreMedianFilter.class, io.anuke.mindustry.maps.filters.RiverNoiseFilter.class, io.anuke.mindustry.maps.filters.ScatterFilter.class, io.anuke.mindustry.maps.filters.TerrainFilter.class, io.anuke.mindustry.maps.generators.BasicGenerator.class, io.anuke.mindustry.maps.generators.Generator.class, io.anuke.mindustry.maps.generators.MapGenerator.class, io.anuke.mindustry.maps.generators.RandomGenerator.class, io.anuke.mindustry.maps.zonegen.DesertWastesGenerator.class, io.anuke.mindustry.maps.zonegen.OvergrowthGenerator.class, io.anuke.mindustry.type.Category.class, io.anuke.mindustry.type.ContentType.class, io.anuke.mindustry.type.Item.class, io.anuke.mindustry.type.ItemStack.class, io.anuke.mindustry.type.ItemType.class, io.anuke.mindustry.type.Liquid.class, io.anuke.mindustry.type.LiquidStack.class, io.anuke.mindustry.type.Mech.class, io.anuke.mindustry.type.Publishable.class, io.anuke.mindustry.type.StatusEffect.class, io.anuke.mindustry.type.TypeID.class, io.anuke.mindustry.type.UnitType.class, io.anuke.mindustry.type.Weapon.class, io.anuke.mindustry.type.WeatherEvent.class, io.anuke.mindustry.type.Zone.class, io.anuke.mindustry.ui.Cicon.class, io.anuke.mindustry.ui.ContentDisplay.class, io.anuke.mindustry.ui.Fonts.class, io.anuke.mindustry.ui.IconSize.class, io.anuke.mindustry.ui.IntFormat.class, io.anuke.mindustry.ui.Links.class, io.anuke.mindustry.ui.Styles.class, io.anuke.mindustry.ui.fragments.BlockConfigFragment.class, io.anuke.mindustry.ui.fragments.BlockInventoryFragment.class, io.anuke.mindustry.ui.fragments.FadeInFragment.class, io.anuke.mindustry.ui.fragments.Fragment.class, io.anuke.mindustry.ui.fragments.HudFragment.class, io.anuke.mindustry.ui.fragments.LoadingFragment.class, io.anuke.mindustry.ui.fragments.MenuFragment.class, io.anuke.mindustry.ui.fragments.OverlayFragment.class, io.anuke.mindustry.ui.fragments.PlacementFragment.class, io.anuke.mindustry.ui.fragments.PlayerListFragment.class, io.anuke.mindustry.ui.layout.BranchTreeLayout.class, io.anuke.mindustry.ui.layout.RadialTreeLayout.class, io.anuke.mindustry.ui.layout.TreeLayout.class, io.anuke.mindustry.world.Block.class, io.anuke.mindustry.world.BlockStorage.class, io.anuke.mindustry.world.Build.class, io.anuke.mindustry.world.CachedTile.class, io.anuke.mindustry.world.DirectionalItemBuffer.class, io.anuke.mindustry.world.Edges.class, io.anuke.mindustry.world.ItemBuffer.class, io.anuke.mindustry.world.LegacyColorMapper.class, io.anuke.mindustry.world.Pos.class, io.anuke.mindustry.world.StaticTree.class, io.anuke.mindustry.world.Tile.class, io.anuke.mindustry.world.WorldContext.class, io.anuke.mindustry.world.blocks.Attributes.class, io.anuke.mindustry.world.blocks.Autotiler.class, io.anuke.mindustry.world.blocks.BlockPart.class, io.anuke.mindustry.world.blocks.BuildBlock.class, io.anuke.mindustry.world.blocks.DoubleOverlayFloor.class, io.anuke.mindustry.world.blocks.Floor.class, io.anuke.mindustry.world.blocks.ItemSelection.class, io.anuke.mindustry.world.blocks.LiquidBlock.class, io.anuke.mindustry.world.blocks.OreBlock.class, io.anuke.mindustry.world.blocks.OverlayFloor.class, io.anuke.mindustry.world.blocks.PowerBlock.class, io.anuke.mindustry.world.blocks.RespawnBlock.class, io.anuke.mindustry.world.blocks.Rock.class, io.anuke.mindustry.world.blocks.StaticWall.class, io.anuke.mindustry.world.blocks.TreeBlock.class, io.anuke.mindustry.world.blocks.defense.DeflectorWall.class, io.anuke.mindustry.world.blocks.defense.Door.class, io.anuke.mindustry.world.blocks.defense.ForceProjector.class, io.anuke.mindustry.world.blocks.defense.MendProjector.class, io.anuke.mindustry.world.blocks.defense.OverdriveProjector.class, io.anuke.mindustry.world.blocks.defense.ShockMine.class, io.anuke.mindustry.world.blocks.defense.SurgeWall.class, io.anuke.mindustry.world.blocks.defense.Wall.class, io.anuke.mindustry.world.blocks.defense.turrets.ArtilleryTurret.class, io.anuke.mindustry.world.blocks.defense.turrets.BurstTurret.class, io.anuke.mindustry.world.blocks.defense.turrets.ChargeTurret.class, io.anuke.mindustry.world.blocks.defense.turrets.CooledTurret.class, io.anuke.mindustry.world.blocks.defense.turrets.DoubleTurret.class, io.anuke.mindustry.world.blocks.defense.turrets.ItemTurret.class, io.anuke.mindustry.world.blocks.defense.turrets.LaserTurret.class, io.anuke.mindustry.world.blocks.defense.turrets.LiquidTurret.class, io.anuke.mindustry.world.blocks.defense.turrets.PowerTurret.class, io.anuke.mindustry.world.blocks.defense.turrets.Turret.class, io.anuke.mindustry.world.blocks.distribution.ArmoredConveyor.class, io.anuke.mindustry.world.blocks.distribution.BufferedItemBridge.class, io.anuke.mindustry.world.blocks.distribution.Conveyor.class, io.anuke.mindustry.world.blocks.distribution.ExtendingItemBridge.class, io.anuke.mindustry.world.blocks.distribution.ItemBridge.class, io.anuke.mindustry.world.blocks.distribution.Junction.class, io.anuke.mindustry.world.blocks.distribution.MassDriver.class, io.anuke.mindustry.world.blocks.distribution.OverflowGate.class, io.anuke.mindustry.world.blocks.distribution.Router.class, io.anuke.mindustry.world.blocks.distribution.Sorter.class, io.anuke.mindustry.world.blocks.liquid.ArmoredConduit.class, io.anuke.mindustry.world.blocks.liquid.Conduit.class, io.anuke.mindustry.world.blocks.liquid.LiquidBridge.class, io.anuke.mindustry.world.blocks.liquid.LiquidExtendingBridge.class, io.anuke.mindustry.world.blocks.liquid.LiquidJunction.class, io.anuke.mindustry.world.blocks.liquid.LiquidOverflowGate.class, io.anuke.mindustry.world.blocks.liquid.LiquidRouter.class, io.anuke.mindustry.world.blocks.liquid.LiquidTank.class, io.anuke.mindustry.world.blocks.logic.LogicBlock.class, io.anuke.mindustry.world.blocks.logic.MessageBlock.class, io.anuke.mindustry.world.blocks.power.Battery.class, io.anuke.mindustry.world.blocks.power.BurnerGenerator.class, io.anuke.mindustry.world.blocks.power.ConditionalConsumePower.class, io.anuke.mindustry.world.blocks.power.DecayGenerator.class, io.anuke.mindustry.world.blocks.power.ImpactReactor.class, io.anuke.mindustry.world.blocks.power.ItemLiquidGenerator.class, io.anuke.mindustry.world.blocks.power.LightBlock.class, io.anuke.mindustry.world.blocks.power.NuclearReactor.class, io.anuke.mindustry.world.blocks.power.PowerDiode.class, io.anuke.mindustry.world.blocks.power.PowerDistributor.class, io.anuke.mindustry.world.blocks.power.PowerGenerator.class, io.anuke.mindustry.world.blocks.power.PowerGraph.class, io.anuke.mindustry.world.blocks.power.PowerNode.class, io.anuke.mindustry.world.blocks.power.SingleTypeGenerator.class, io.anuke.mindustry.world.blocks.power.SolarGenerator.class, io.anuke.mindustry.world.blocks.power.ThermalGenerator.class, io.anuke.mindustry.world.blocks.production.Cultivator.class, io.anuke.mindustry.world.blocks.production.Drill.class, io.anuke.mindustry.world.blocks.production.Fracker.class, io.anuke.mindustry.world.blocks.production.GenericCrafter.class, io.anuke.mindustry.world.blocks.production.GenericSmelter.class, io.anuke.mindustry.world.blocks.production.Incinerator.class, io.anuke.mindustry.world.blocks.production.LiquidConverter.class, io.anuke.mindustry.world.blocks.production.Pump.class, io.anuke.mindustry.world.blocks.production.Separator.class, io.anuke.mindustry.world.blocks.production.SolidPump.class, io.anuke.mindustry.world.blocks.sandbox.ItemSource.class, io.anuke.mindustry.world.blocks.sandbox.ItemVoid.class, io.anuke.mindustry.world.blocks.sandbox.LiquidSource.class, io.anuke.mindustry.world.blocks.sandbox.PowerSource.class, io.anuke.mindustry.world.blocks.sandbox.PowerVoid.class, io.anuke.mindustry.world.blocks.storage.CoreBlock.class, io.anuke.mindustry.world.blocks.storage.LaunchPad.class, io.anuke.mindustry.world.blocks.storage.StorageBlock.class, io.anuke.mindustry.world.blocks.storage.Unloader.class, io.anuke.mindustry.world.blocks.storage.Vault.class, io.anuke.mindustry.world.blocks.units.CommandCenter.class, io.anuke.mindustry.world.blocks.units.MechPad.class, io.anuke.mindustry.world.blocks.units.RallyPoint.class, io.anuke.mindustry.world.blocks.units.RepairPoint.class, io.anuke.mindustry.world.blocks.units.UnitFactory.class, io.anuke.mindustry.world.consumers.Consume.class, io.anuke.mindustry.world.consumers.ConsumeItemFilter.class, io.anuke.mindustry.world.consumers.ConsumeItems.class, io.anuke.mindustry.world.consumers.ConsumeLiquid.class, io.anuke.mindustry.world.consumers.ConsumeLiquidBase.class, io.anuke.mindustry.world.consumers.ConsumeLiquidFilter.class, io.anuke.mindustry.world.consumers.ConsumePower.class, io.anuke.mindustry.world.consumers.ConsumeType.class, io.anuke.mindustry.world.consumers.Consumers.class, io.anuke.mindustry.world.meta.Attribute.class, io.anuke.mindustry.world.meta.BlockBars.class, io.anuke.mindustry.world.meta.BlockFlag.class, io.anuke.mindustry.world.meta.BlockGroup.class, io.anuke.mindustry.world.meta.BlockStat.class, io.anuke.mindustry.world.meta.BlockStats.class, io.anuke.mindustry.world.meta.BuildVisibility.class, io.anuke.mindustry.world.meta.PowerType.class, io.anuke.mindustry.world.meta.Producers.class, io.anuke.mindustry.world.meta.StatCategory.class, io.anuke.mindustry.world.meta.StatUnit.class, io.anuke.mindustry.world.meta.StatValue.class, io.anuke.mindustry.world.meta.values.AmmoListValue.class, io.anuke.mindustry.world.meta.values.BooleanValue.class, io.anuke.mindustry.world.meta.values.BoosterListValue.class, io.anuke.mindustry.world.meta.values.ItemFilterValue.class, io.anuke.mindustry.world.meta.values.ItemListValue.class, io.anuke.mindustry.world.meta.values.LiquidFilterValue.class, io.anuke.mindustry.world.meta.values.LiquidValue.class, io.anuke.mindustry.world.meta.values.NumberValue.class, io.anuke.mindustry.world.meta.values.StringValue.class, io.anuke.mindustry.world.modules.BlockModule.class, io.anuke.mindustry.world.modules.ConsumeModule.class, io.anuke.mindustry.world.modules.ItemModule.class, io.anuke.mindustry.world.modules.LiquidModule.class, io.anuke.mindustry.world.modules.PowerModule.class, io.anuke.mindustry.world.producers.Produce.class, io.anuke.mindustry.world.producers.ProduceItem.class); static final ObjectSet allowedClassNames = ObjectSet.with("io.anuke.arc.Core", "io.anuke.arc.graphics.g2d.Draw", "io.anuke.arc.graphics.g2d.TextureAtlas", "io.anuke.arc.graphics.g2d.TextureRegion", "io.anuke.mindustry.Vars", "io.anuke.mindustry.ai.BlockIndexer", "io.anuke.mindustry.ai.Pathfinder", "io.anuke.mindustry.ai.WaveSpawner", "io.anuke.mindustry.content.Blocks", "io.anuke.mindustry.content.Bullets", "io.anuke.mindustry.content.Fx", "io.anuke.mindustry.content.Items", "io.anuke.mindustry.content.Liquids", "io.anuke.mindustry.content.Loadouts", "io.anuke.mindustry.content.Mechs", "io.anuke.mindustry.content.StatusEffects", "io.anuke.mindustry.content.TechTree", "io.anuke.mindustry.content.TypeIDs", "io.anuke.mindustry.content.UnitTypes", "io.anuke.mindustry.content.Zones", "io.anuke.mindustry.core.ContentLoader", "io.anuke.mindustry.core.Control", "io.anuke.mindustry.core.FileTree", "io.anuke.mindustry.core.GameState", "io.anuke.mindustry.core.Logic", "io.anuke.mindustry.core.Platform", "io.anuke.mindustry.core.Renderer", "io.anuke.mindustry.core.UI", "io.anuke.mindustry.core.Version", "io.anuke.mindustry.core.World", "io.anuke.mindustry.ctype.Content", "io.anuke.mindustry.ctype.ContentList", "io.anuke.mindustry.ctype.MappableContent", "io.anuke.mindustry.ctype.UnlockableContent", "io.anuke.mindustry.editor.DrawOperation", "io.anuke.mindustry.editor.EditorTile", "io.anuke.mindustry.editor.EditorTool", "io.anuke.mindustry.editor.MapEditor", "io.anuke.mindustry.editor.MapRenderer", "io.anuke.mindustry.editor.OperationStack", "io.anuke.mindustry.entities.Damage", "io.anuke.mindustry.entities.Effects", "io.anuke.mindustry.entities.Entities", "io.anuke.mindustry.entities.EntityCollisions", "io.anuke.mindustry.entities.EntityGroup", "io.anuke.mindustry.entities.Predict", "io.anuke.mindustry.entities.TargetPriority", "io.anuke.mindustry.entities.Units", "io.anuke.mindustry.entities.bullet.ArtilleryBulletType", "io.anuke.mindustry.entities.bullet.BasicBulletType", "io.anuke.mindustry.entities.bullet.BombBulletType", "io.anuke.mindustry.entities.bullet.BulletType", "io.anuke.mindustry.entities.bullet.FlakBulletType", "io.anuke.mindustry.entities.bullet.HealBulletType", "io.anuke.mindustry.entities.bullet.LiquidBulletType", "io.anuke.mindustry.entities.bullet.MassDriverBolt", "io.anuke.mindustry.entities.bullet.MissileBulletType", "io.anuke.mindustry.entities.effect.Decal", "io.anuke.mindustry.entities.effect.Fire", "io.anuke.mindustry.entities.effect.GroundEffectEntity", "io.anuke.mindustry.entities.effect.ItemTransfer", "io.anuke.mindustry.entities.effect.Lightning", "io.anuke.mindustry.entities.effect.Puddle", "io.anuke.mindustry.entities.effect.RubbleDecal", "io.anuke.mindustry.entities.effect.ScorchDecal", "io.anuke.mindustry.entities.traits.AbsorbTrait", "io.anuke.mindustry.entities.traits.BelowLiquidTrait", "io.anuke.mindustry.entities.traits.BuilderMinerTrait", "io.anuke.mindustry.entities.traits.BuilderTrait", "io.anuke.mindustry.entities.traits.DamageTrait", "io.anuke.mindustry.entities.traits.DrawTrait", "io.anuke.mindustry.entities.traits.Entity", "io.anuke.mindustry.entities.traits.HealthTrait", "io.anuke.mindustry.entities.traits.KillerTrait", "io.anuke.mindustry.entities.traits.MinerTrait", "io.anuke.mindustry.entities.traits.MoveTrait", "io.anuke.mindustry.entities.traits.SaveTrait", "io.anuke.mindustry.entities.traits.Saveable", "io.anuke.mindustry.entities.traits.ScaleTrait", "io.anuke.mindustry.entities.traits.ShooterTrait", "io.anuke.mindustry.entities.traits.SolidTrait", "io.anuke.mindustry.entities.traits.SpawnerTrait", "io.anuke.mindustry.entities.traits.SyncTrait", "io.anuke.mindustry.entities.traits.TargetTrait", "io.anuke.mindustry.entities.traits.TeamTrait", "io.anuke.mindustry.entities.traits.TimeTrait", "io.anuke.mindustry.entities.traits.TypeTrait", "io.anuke.mindustry.entities.traits.VelocityTrait", "io.anuke.mindustry.entities.type.BaseEntity", "io.anuke.mindustry.entities.type.BaseUnit", "io.anuke.mindustry.entities.type.Bullet", "io.anuke.mindustry.entities.type.DestructibleEntity", "io.anuke.mindustry.entities.type.EffectEntity", "io.anuke.mindustry.entities.type.Player", "io.anuke.mindustry.entities.type.SolidEntity", "io.anuke.mindustry.entities.type.TileEntity", "io.anuke.mindustry.entities.type.TimedEntity", "io.anuke.mindustry.entities.type.Unit", "io.anuke.mindustry.entities.type.base.BaseDrone", "io.anuke.mindustry.entities.type.base.BuilderDrone", "io.anuke.mindustry.entities.type.base.Crawler", "io.anuke.mindustry.entities.type.base.Dagger", "io.anuke.mindustry.entities.type.base.Draug", "io.anuke.mindustry.entities.type.base.Eruptor", "io.anuke.mindustry.entities.type.base.FlyingUnit", "io.anuke.mindustry.entities.type.base.Fortress", "io.anuke.mindustry.entities.type.base.Ghoul", "io.anuke.mindustry.entities.type.base.GroundUnit", "io.anuke.mindustry.entities.type.base.MinerDrone", "io.anuke.mindustry.entities.type.base.Phantom", "io.anuke.mindustry.entities.type.base.RepairDrone", "io.anuke.mindustry.entities.type.base.Revenant", "io.anuke.mindustry.entities.type.base.Spirit", "io.anuke.mindustry.entities.type.base.Titan", "io.anuke.mindustry.entities.type.base.Wraith", "io.anuke.mindustry.entities.units.StateMachine", "io.anuke.mindustry.entities.units.Statuses", "io.anuke.mindustry.entities.units.UnitCommand", "io.anuke.mindustry.entities.units.UnitDrops", "io.anuke.mindustry.entities.units.UnitState", "io.anuke.mindustry.game.DefaultWaves", "io.anuke.mindustry.game.Difficulty", "io.anuke.mindustry.game.EventType", "io.anuke.mindustry.game.Gamemode", "io.anuke.mindustry.game.GlobalData", "io.anuke.mindustry.game.LoopControl", "io.anuke.mindustry.game.MusicControl", "io.anuke.mindustry.game.Objective", "io.anuke.mindustry.game.Objectives", "io.anuke.mindustry.game.Rules", "io.anuke.mindustry.game.Saves", "io.anuke.mindustry.game.Schematic", "io.anuke.mindustry.game.Schematics", "io.anuke.mindustry.game.SoundLoop", "io.anuke.mindustry.game.SpawnGroup", "io.anuke.mindustry.game.Stats", "io.anuke.mindustry.game.Team", "io.anuke.mindustry.game.Teams", "io.anuke.mindustry.game.Tutorial", "io.anuke.mindustry.graphics.BlockRenderer", "io.anuke.mindustry.graphics.Bloom", "io.anuke.mindustry.graphics.CacheLayer", "io.anuke.mindustry.graphics.Drawf", "io.anuke.mindustry.graphics.FloorRenderer", "io.anuke.mindustry.graphics.IndexedRenderer", "io.anuke.mindustry.graphics.Layer", "io.anuke.mindustry.graphics.LightRenderer", "io.anuke.mindustry.graphics.MenuRenderer", "io.anuke.mindustry.graphics.MinimapRenderer", "io.anuke.mindustry.graphics.MultiPacker", "io.anuke.mindustry.graphics.OverlayRenderer", "io.anuke.mindustry.graphics.Pal", "io.anuke.mindustry.graphics.Pixelator", "io.anuke.mindustry.graphics.Shaders", "io.anuke.mindustry.input.Binding", "io.anuke.mindustry.input.DesktopInput", "io.anuke.mindustry.input.InputHandler", "io.anuke.mindustry.input.MobileInput", "io.anuke.mindustry.input.PlaceMode", "io.anuke.mindustry.input.Placement", "io.anuke.mindustry.maps.Map", "io.anuke.mindustry.maps.Maps", "io.anuke.mindustry.maps.filters.BlendFilter", "io.anuke.mindustry.maps.filters.ClearFilter", "io.anuke.mindustry.maps.filters.DistortFilter", "io.anuke.mindustry.maps.filters.FilterOption", "io.anuke.mindustry.maps.filters.GenerateFilter", "io.anuke.mindustry.maps.filters.MedianFilter", "io.anuke.mindustry.maps.filters.MirrorFilter", "io.anuke.mindustry.maps.filters.NoiseFilter", "io.anuke.mindustry.maps.filters.OreFilter", "io.anuke.mindustry.maps.filters.OreMedianFilter", "io.anuke.mindustry.maps.filters.RiverNoiseFilter", "io.anuke.mindustry.maps.filters.ScatterFilter", "io.anuke.mindustry.maps.filters.TerrainFilter", "io.anuke.mindustry.maps.generators.BasicGenerator", "io.anuke.mindustry.maps.generators.Generator", "io.anuke.mindustry.maps.generators.MapGenerator", "io.anuke.mindustry.maps.generators.RandomGenerator", "io.anuke.mindustry.maps.zonegen.DesertWastesGenerator", "io.anuke.mindustry.maps.zonegen.OvergrowthGenerator", "io.anuke.mindustry.type.Category", "io.anuke.mindustry.type.ContentType", "io.anuke.mindustry.type.Item", "io.anuke.mindustry.type.ItemStack", "io.anuke.mindustry.type.ItemType", "io.anuke.mindustry.type.Liquid", "io.anuke.mindustry.type.LiquidStack", "io.anuke.mindustry.type.Mech", "io.anuke.mindustry.type.Publishable", "io.anuke.mindustry.type.StatusEffect", "io.anuke.mindustry.type.TypeID", "io.anuke.mindustry.type.UnitType", "io.anuke.mindustry.type.Weapon", "io.anuke.mindustry.type.WeatherEvent", "io.anuke.mindustry.type.Zone", "io.anuke.mindustry.ui.Cicon", "io.anuke.mindustry.ui.ContentDisplay", "io.anuke.mindustry.ui.Fonts", "io.anuke.mindustry.ui.IconSize", "io.anuke.mindustry.ui.IntFormat", "io.anuke.mindustry.ui.Links", "io.anuke.mindustry.ui.Styles", "io.anuke.mindustry.ui.fragments.BlockConfigFragment", "io.anuke.mindustry.ui.fragments.BlockInventoryFragment", "io.anuke.mindustry.ui.fragments.FadeInFragment", "io.anuke.mindustry.ui.fragments.Fragment", "io.anuke.mindustry.ui.fragments.HudFragment", "io.anuke.mindustry.ui.fragments.LoadingFragment", "io.anuke.mindustry.ui.fragments.MenuFragment", "io.anuke.mindustry.ui.fragments.OverlayFragment", "io.anuke.mindustry.ui.fragments.PlacementFragment", "io.anuke.mindustry.ui.fragments.PlayerListFragment", "io.anuke.mindustry.ui.layout.BranchTreeLayout", "io.anuke.mindustry.ui.layout.RadialTreeLayout", "io.anuke.mindustry.ui.layout.TreeLayout", "io.anuke.mindustry.world.Block", "io.anuke.mindustry.world.BlockStorage", "io.anuke.mindustry.world.Build", "io.anuke.mindustry.world.CachedTile", "io.anuke.mindustry.world.DirectionalItemBuffer", "io.anuke.mindustry.world.Edges", "io.anuke.mindustry.world.ItemBuffer", "io.anuke.mindustry.world.LegacyColorMapper", "io.anuke.mindustry.world.Pos", "io.anuke.mindustry.world.StaticTree", "io.anuke.mindustry.world.Tile", "io.anuke.mindustry.world.WorldContext", "io.anuke.mindustry.world.blocks.Attributes", "io.anuke.mindustry.world.blocks.Autotiler", "io.anuke.mindustry.world.blocks.BlockPart", "io.anuke.mindustry.world.blocks.BuildBlock", "io.anuke.mindustry.world.blocks.DoubleOverlayFloor", "io.anuke.mindustry.world.blocks.Floor", "io.anuke.mindustry.world.blocks.ItemSelection", "io.anuke.mindustry.world.blocks.LiquidBlock", "io.anuke.mindustry.world.blocks.OreBlock", "io.anuke.mindustry.world.blocks.OverlayFloor", "io.anuke.mindustry.world.blocks.PowerBlock", "io.anuke.mindustry.world.blocks.RespawnBlock", "io.anuke.mindustry.world.blocks.Rock", "io.anuke.mindustry.world.blocks.StaticWall", "io.anuke.mindustry.world.blocks.TreeBlock", "io.anuke.mindustry.world.blocks.defense.DeflectorWall", "io.anuke.mindustry.world.blocks.defense.Door", "io.anuke.mindustry.world.blocks.defense.ForceProjector", "io.anuke.mindustry.world.blocks.defense.MendProjector", "io.anuke.mindustry.world.blocks.defense.OverdriveProjector", "io.anuke.mindustry.world.blocks.defense.ShockMine", "io.anuke.mindustry.world.blocks.defense.SurgeWall", "io.anuke.mindustry.world.blocks.defense.Wall", "io.anuke.mindustry.world.blocks.defense.turrets.ArtilleryTurret", "io.anuke.mindustry.world.blocks.defense.turrets.BurstTurret", "io.anuke.mindustry.world.blocks.defense.turrets.ChargeTurret", "io.anuke.mindustry.world.blocks.defense.turrets.CooledTurret", "io.anuke.mindustry.world.blocks.defense.turrets.DoubleTurret", "io.anuke.mindustry.world.blocks.defense.turrets.ItemTurret", "io.anuke.mindustry.world.blocks.defense.turrets.LaserTurret", "io.anuke.mindustry.world.blocks.defense.turrets.LiquidTurret", "io.anuke.mindustry.world.blocks.defense.turrets.PowerTurret", "io.anuke.mindustry.world.blocks.defense.turrets.Turret", "io.anuke.mindustry.world.blocks.distribution.ArmoredConveyor", "io.anuke.mindustry.world.blocks.distribution.BufferedItemBridge", "io.anuke.mindustry.world.blocks.distribution.Conveyor", "io.anuke.mindustry.world.blocks.distribution.ExtendingItemBridge", "io.anuke.mindustry.world.blocks.distribution.ItemBridge", "io.anuke.mindustry.world.blocks.distribution.Junction", "io.anuke.mindustry.world.blocks.distribution.MassDriver", "io.anuke.mindustry.world.blocks.distribution.OverflowGate", "io.anuke.mindustry.world.blocks.distribution.Router", "io.anuke.mindustry.world.blocks.distribution.Sorter", "io.anuke.mindustry.world.blocks.liquid.ArmoredConduit", "io.anuke.mindustry.world.blocks.liquid.Conduit", "io.anuke.mindustry.world.blocks.liquid.LiquidBridge", "io.anuke.mindustry.world.blocks.liquid.LiquidExtendingBridge", "io.anuke.mindustry.world.blocks.liquid.LiquidJunction", "io.anuke.mindustry.world.blocks.liquid.LiquidOverflowGate", "io.anuke.mindustry.world.blocks.liquid.LiquidRouter", "io.anuke.mindustry.world.blocks.liquid.LiquidTank", "io.anuke.mindustry.world.blocks.logic.LogicBlock", "io.anuke.mindustry.world.blocks.logic.MessageBlock", "io.anuke.mindustry.world.blocks.power.Battery", "io.anuke.mindustry.world.blocks.power.BurnerGenerator", "io.anuke.mindustry.world.blocks.power.ConditionalConsumePower", "io.anuke.mindustry.world.blocks.power.DecayGenerator", "io.anuke.mindustry.world.blocks.power.ImpactReactor", "io.anuke.mindustry.world.blocks.power.ItemLiquidGenerator", "io.anuke.mindustry.world.blocks.power.LightBlock", "io.anuke.mindustry.world.blocks.power.NuclearReactor", "io.anuke.mindustry.world.blocks.power.PowerDiode", "io.anuke.mindustry.world.blocks.power.PowerDistributor", "io.anuke.mindustry.world.blocks.power.PowerGenerator", "io.anuke.mindustry.world.blocks.power.PowerGraph", "io.anuke.mindustry.world.blocks.power.PowerNode", "io.anuke.mindustry.world.blocks.power.SingleTypeGenerator", "io.anuke.mindustry.world.blocks.power.SolarGenerator", "io.anuke.mindustry.world.blocks.power.ThermalGenerator", "io.anuke.mindustry.world.blocks.production.Cultivator", "io.anuke.mindustry.world.blocks.production.Drill", "io.anuke.mindustry.world.blocks.production.Fracker", "io.anuke.mindustry.world.blocks.production.GenericCrafter", "io.anuke.mindustry.world.blocks.production.GenericSmelter", "io.anuke.mindustry.world.blocks.production.Incinerator", "io.anuke.mindustry.world.blocks.production.LiquidConverter", "io.anuke.mindustry.world.blocks.production.Pump", "io.anuke.mindustry.world.blocks.production.Separator", "io.anuke.mindustry.world.blocks.production.SolidPump", "io.anuke.mindustry.world.blocks.sandbox.ItemSource", "io.anuke.mindustry.world.blocks.sandbox.ItemVoid", "io.anuke.mindustry.world.blocks.sandbox.LiquidSource", "io.anuke.mindustry.world.blocks.sandbox.PowerSource", "io.anuke.mindustry.world.blocks.sandbox.PowerVoid", "io.anuke.mindustry.world.blocks.storage.CoreBlock", "io.anuke.mindustry.world.blocks.storage.LaunchPad", "io.anuke.mindustry.world.blocks.storage.StorageBlock", "io.anuke.mindustry.world.blocks.storage.Unloader", "io.anuke.mindustry.world.blocks.storage.Vault", "io.anuke.mindustry.world.blocks.units.CommandCenter", "io.anuke.mindustry.world.blocks.units.MechPad", "io.anuke.mindustry.world.blocks.units.RallyPoint", "io.anuke.mindustry.world.blocks.units.RepairPoint", "io.anuke.mindustry.world.blocks.units.UnitFactory", "io.anuke.mindustry.world.consumers.Consume", "io.anuke.mindustry.world.consumers.ConsumeItemFilter", "io.anuke.mindustry.world.consumers.ConsumeItems", "io.anuke.mindustry.world.consumers.ConsumeLiquid", "io.anuke.mindustry.world.consumers.ConsumeLiquidBase", "io.anuke.mindustry.world.consumers.ConsumeLiquidFilter", "io.anuke.mindustry.world.consumers.ConsumePower", "io.anuke.mindustry.world.consumers.ConsumeType", "io.anuke.mindustry.world.consumers.Consumers", "io.anuke.mindustry.world.meta.Attribute", "io.anuke.mindustry.world.meta.BlockBars", "io.anuke.mindustry.world.meta.BlockFlag", "io.anuke.mindustry.world.meta.BlockGroup", "io.anuke.mindustry.world.meta.BlockStat", "io.anuke.mindustry.world.meta.BlockStats", "io.anuke.mindustry.world.meta.BuildVisibility", "io.anuke.mindustry.world.meta.PowerType", "io.anuke.mindustry.world.meta.Producers", "io.anuke.mindustry.world.meta.StatCategory", "io.anuke.mindustry.world.meta.StatUnit", "io.anuke.mindustry.world.meta.StatValue", "io.anuke.mindustry.world.meta.values.AmmoListValue", "io.anuke.mindustry.world.meta.values.BooleanValue", "io.anuke.mindustry.world.meta.values.BoosterListValue", "io.anuke.mindustry.world.meta.values.ItemFilterValue", "io.anuke.mindustry.world.meta.values.ItemListValue", "io.anuke.mindustry.world.meta.values.LiquidFilterValue", "io.anuke.mindustry.world.meta.values.LiquidValue", "io.anuke.mindustry.world.meta.values.NumberValue", "io.anuke.mindustry.world.meta.values.StringValue", "io.anuke.mindustry.world.modules.BlockModule", "io.anuke.mindustry.world.modules.ConsumeModule", "io.anuke.mindustry.world.modules.ItemModule", "io.anuke.mindustry.world.modules.LiquidModule", "io.anuke.mindustry.world.modules.PowerModule", "io.anuke.mindustry.world.producers.Produce", "io.anuke.mindustry.world.producers.ProduceItem"); } \ No newline at end of file diff --git a/core/src/io/anuke/mindustry/mod/Scripts.java b/core/src/io/anuke/mindustry/mod/Scripts.java index de8b8a9564..cf62098f22 100644 --- a/core/src/io/anuke/mindustry/mod/Scripts.java +++ b/core/src/io/anuke/mindustry/mod/Scripts.java @@ -6,7 +6,10 @@ import io.anuke.arc.util.*; import io.anuke.mindustry.mod.Mods.*; import org.graalvm.polyglot.*; +import java.io.*; + public class Scripts{ + private static final Class[] denied = {FileHandle.class, InputStream.class, File.class, Scripts.class, Files.class}; private final Context context; private final String wrapper; @@ -15,11 +18,9 @@ public class Scripts{ Context.Builder builder = Context.newBuilder("js").allowHostClassLookup(ClassAccess.allowedClassNames::contains); HostAccess.Builder hb = HostAccess.newBuilder(); - for(Class c : ClassAccess.allowedClasses){ - hb.allowImplementations(c); - Structs.each(hb::allowAccess, c.getConstructors()); - Structs.each(hb::allowAccess, c.getFields()); - Structs.each(hb::allowAccess, c.getMethods()); + hb.allowPublicAccess(true); + for(Class c : denied){ + hb.denyAccess(c); } builder.allowHostAccess(hb.build()); diff --git a/tools/src/io/anuke/mindustry/tools/ScriptStubGenerator.java b/tools/src/io/anuke/mindustry/tools/ScriptStubGenerator.java index 0543108297..cbc6a511fd 100644 --- a/tools/src/io/anuke/mindustry/tools/ScriptStubGenerator.java +++ b/tools/src/io/anuke/mindustry/tools/ScriptStubGenerator.java @@ -24,7 +24,7 @@ public class ScriptStubGenerator{ "import io.anuke.arc.collection.*;\n" + "//obviously autogenerated, do not touch\n" + "class ClassAccess{\n" + - "\tstatic final Array> allowedClasses = Array.with($ALLOWED_CLASSES$);\n" + + //"\tstatic final Array> allowedClasses = Array.with($ALLOWED_CLASSES$);\n" + "\tstatic final ObjectSet allowedClassNames = ObjectSet.with($ALLOWED_CLASS_NAMES$);\n" + "}"; @@ -50,6 +50,8 @@ public class ScriptStubGenerator{ result.append("const ").append(type.getSimpleName()).append(" = ").append("Java.type('").append(type.getCanonicalName()).append("')\n"); } + result.append("\n").append(new FileHandle("core/assets/scripts/base.js").readString()).append("\n"); + //Log.info(result); new FileHandle("core/assets/scripts/global.js").writeString(result.toString());